aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2021-11-24 11:36:12 +0000
committerAndrew Burgess <aburgess@redhat.com>2021-11-25 10:00:18 +0000
commitfce6cd341b48a2589cb4520c7718c80cb0b27c80 (patch)
tree236e91b872a6a2a2753503bfd2d002365a8844d0
parent0c1e6e265b276542ccb3f392c3070c3dd9339303 (diff)
downloadgdb-fce6cd341b48a2589cb4520c7718c80cb0b27c80.zip
gdb-fce6cd341b48a2589cb4520c7718c80cb0b27c80.tar.gz
gdb-fce6cd341b48a2589cb4520c7718c80cb0b27c80.tar.bz2
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.
-rw-r--r--gdb/linux-nat.c8
-rw-r--r--gdb/remote.c11
-rw-r--r--gdb/target.c2
3 files changed, 11 insertions, 10 deletions
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index f8f7284..fbb60a3 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 724386e..6ecea5b 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 970e2a7..db1abcc 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 ();
}