Enable async mode in the target in attach_cmd.
authorJohn Baldwin <jhb@FreeBSD.org>
Tue, 22 Feb 2022 19:22:14 +0000 (11:22 -0800)
committerJohn Baldwin <jhb@FreeBSD.org>
Tue, 22 Feb 2022 19:22:14 +0000 (11:22 -0800)
If the attach target supports async mode, enable it after the
attach target's ::attach method returns.

gdb/fbsd-nat.c
gdb/fbsd-nat.h
gdb/infcmd.c
gdb/linux-nat.c
gdb/remote.c

index cea3ce7d3840ec159e05086a9a7cb3df14d413f2..6f1f208160e07783e320047cd0908e6a1244d3ef 100644 (file)
@@ -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
index 411573b0b64b65f017c735ad9305c596bcc14516..0acfef2f1f12fc936e3e0536b2d3977581d2f36b 100644 (file)
@@ -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;
 
index 465c8f30f12514eee434e51dbd4e7f8241c68c14..682bebe1229f606828b1caa9e0f62d3af209ff64 100644 (file)
@@ -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 ();
index 58660f0f80e457a1ee3fffe3779f1c41e45ce483..055da9a0cf2ffdf26b47460bef0549cd1459441c 100644 (file)
@@ -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.  */
index f285beb9d140b23246e7606db46a8a99d7cd1a3b..aa6a67a96e0a5be78243729611566358a20e96f4 100644 (file)
@@ -6183,16 +6183,12 @@ extended_remote_target::attach (const char *args, int from_tty)
        =  remote_notif_parse (this, &notif_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);
     }
 }