From: John Baldwin Date: Tue, 22 Feb 2022 19:22:14 +0000 (-0800) Subject: Enable async mode in the target in attach_cmd. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e05523bd2411bac0277da73556f4d01f6c7448aa;p=binutils-gdb.git Enable async mode in the target in attach_cmd. If the attach target supports async mode, enable it after the attach target's ::attach method returns. --- diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c index cea3ce7d384..6f1f208160e 100644 --- a/gdb/fbsd-nat.c +++ b/gdb/fbsd-nat.c @@ -1025,19 +1025,6 @@ fbsd_nat_target::close () inf_ptrace_target::close (); } -/* Implement the "attach" target method. */ - -void -fbsd_nat_target::attach (const char *args, int from_tty) -{ - inf_ptrace_target::attach (args, from_tty); - - /* Curiously, the core does not do this automatically. */ - if (target_can_async_p ()) - target_async (1); -} - - #ifdef TDP_RFPPWAIT /* To catch fork events, PT_FOLLOW_FORK is set on every traced process diff --git a/gdb/fbsd-nat.h b/gdb/fbsd-nat.h index 411573b0b64..0acfef2f1f1 100644 --- a/gdb/fbsd-nat.h +++ b/gdb/fbsd-nat.h @@ -77,8 +77,6 @@ public: thread_control_capabilities get_thread_control_capabilities () override { return tc_schedlock; } - void attach (const char *, int) override; - void create_inferior (const char *, const std::string &, char **, int) override; diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 465c8f30f12..682bebe1229 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -2600,6 +2600,10 @@ attach_command (const char *args, int from_tty) thread_state_string (thread->state)); } + /* Enable async mode if it is supported by the target. */ + if (target_can_async_p ()) + target_async (1); + /* Set up the "saved terminal modes" of the inferior based on what modes we are starting it with. */ target_terminal::init (); diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 58660f0f80e..055da9a0cf2 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -1159,9 +1159,6 @@ linux_nat_target::attach (const char *args, int from_tty) threads and associate pthread info with each LWP. */ linux_proc_attach_tgid_threads (lp->ptid.pid (), attach_proc_task_lwp_callback); - - if (target_can_async_p ()) - target_async (1); } /* Ptrace-detach the thread with pid PID. */ diff --git a/gdb/remote.c b/gdb/remote.c index f285beb9d14..aa6a67a96e0 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -6183,16 +6183,12 @@ extended_remote_target::attach (const char *args, int from_tty) = remote_notif_parse (this, ¬if_client_stop, wait_status); push_stop_reply ((struct stop_reply *) reply); - - if (target_can_async_p ()) - target_async (1); } else { gdb_assert (wait_status == NULL); gdb_assert (target_can_async_p ()); - target_async (1); } }