forked from Imagelibrary/binutils-gdb
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.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 ();
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user