[binutils-gdb] Enable async mode in the target in attach_cmd.
John Baldwin
jhb@sourceware.org
Tue Feb 22 19:34:20 GMT 2022
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e05523bd2411bac0277da73556f4d01f6c7448aa
commit e05523bd2411bac0277da73556f4d01f6c7448aa
Author: John Baldwin <jhb@FreeBSD.org>
Date: Tue Feb 22 11:22:14 2022 -0800
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:
---
gdb/fbsd-nat.c | 13 -------------
gdb/fbsd-nat.h | 2 --
gdb/infcmd.c | 4 ++++
gdb/linux-nat.c | 3 ---
gdb/remote.c | 4 ----
5 files changed, 4 insertions(+), 22 deletions(-)
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);
}
}
More information about the Gdb-cvs
mailing list