From fce6cd341b48a2589cb4520c7718c80cb0b27c80 Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Wed, 24 Nov 2021 11:36:12 +0000 Subject: [PATCH] gdb: hoist target_async_permitted checks into target.c This commit moves the target_async_permitted check out of each targets ::can_async_p method and into the target_can_async_p wrapper function. I've left some asserts in the two ::can_async_p methods that I changed, which will hopefully catch any direct calls to these methods that might be added in the future. There should be no user visible changes after this commit. --- gdb/linux-nat.c | 8 +++++--- gdb/remote.c | 11 ++++------- gdb/target.c | 2 ++ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index f8f728481ea..fbb60a398b0 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -4088,9 +4088,11 @@ linux_nat_target::is_async_p () bool linux_nat_target::can_async_p () { - /* We're always async, unless the user explicitly prevented it with the - "maint set target-async" command. */ - return target_async_permitted; + /* This flag should be checked in the common target.c code. */ + gdb_assert (target_async_permitted); + + /* Otherwise, this targets is always able to support async mode. */ + return true; } bool diff --git a/gdb/remote.c b/gdb/remote.c index 724386e0916..6ecea5b7fd7 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -14379,14 +14379,11 @@ remote_target::thread_info_to_thread_handle (struct thread_info *tp) bool remote_target::can_async_p () { - struct remote_state *rs = get_remote_state (); - - /* We don't go async if the user has explicitly prevented it with the - "maint set target-async" command. */ - if (!target_async_permitted) - return false; + /* This flag should be checked in the common target.c code. */ + gdb_assert (target_async_permitted); - /* We're async whenever the serial device is. */ + /* We're async whenever the serial device can. */ + struct remote_state *rs = get_remote_state (); return serial_can_async_p (rs->remote_desc); } diff --git a/gdb/target.c b/gdb/target.c index 970e2a784b5..db1abcc325e 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -399,6 +399,8 @@ target_can_async_p () bool target_can_async_p (struct target_ops *target) { + if (!target_async_permitted) + return false; return target->can_async_p (); } -- 2.30.2