Remove args from target detach
I was looking into adding a parameter to target_detach, and was
wondering what the args parameter was. It seems like in the distant
past, it was possible to specify a signal number when detaching. That
signal was injected in the process before it was detached. There is an
example of code handling this in linux_nat_detach. With today's GDB, I
can't get this to work. Doing "detach 15" (15 == SIGTERM) doesn't work,
because detach is a prefix command and doesn't recognize the sub-command
15. Doing "detach inferiors 15" doesn't work because it expects a list
of inferior id to detach. Therefore, I don't think there's a way of
invoking detach_command with a non-NULL args. I also didn't find any
documentation related to this feature.
I assume that this feature stopped working when detach was made a prefix
command, which is in f73adfeb8b
(sorry,
there's no commit title) from 2006. Given that this feature was broken
for such a long time and we haven't heard anything (AFAIK, I did not
find any related bug), I think it's safe to remove it, as well as the
args parameter to target_detach. If someone wants to re-introduce it, I
would suggest rethinking the user interface, and in particular would
suggest using signal name instead of numbers.
I tried to fix all the impacted code, but I might have forgotten some
spots. It shouldn't be hard to fix if that's the case. I also couldn't
build-test everything I changed, especially the nto and solaris stuff.
gdb/ChangeLog:
* target.h (struct target_ops) <to_detach>: Remove args
parameter.
(target_detach): Likewise.
* target.c (dispose_inferior): Adjust.
(target_detach): Remove args parameter, adjust.
* aix-thread.c (aix_thread_detach): Adjust.
* corefile.c (core_file_command): Adjust.
* corelow.c (core_detach): Adjust.
* darwin-nat.c (darwin_detach): Adjust.
* gnu-nat.c (gnu_detach): Adjust.
* inf-ptrace.c (inf_ptrace_detach): Adjust.
* infcmd.c (detach_command): Adjust
* infrun.c (follow_fork_inferior): Adjust.
(handle_vfork_child_exec_or_exit): Adjust.
* linux-fork.c (linux_fork_detach): Remove args parameter.
* linux-fork.h (linux_fork_detach): Likewise.
* linux-nat.c (linux_nat_detach): Likewise, and adjust.
* linux-thread-db.c (thread_db_detach): Likewise.
* nto-procfs.c (procfs_detach): Likewise.
* procfs.c (procfs_detach): Likewise.
(do_detach): Remove signo parameter.
* record.c (record_detach): Remove args parameter.
* record.h (record_detach): Likewise.
* remote-sim.c (gdbsim_detach): Likewise.
* remote.c (remote_detach_1): Likewise.
(remote_detach): Likewise.
(extended_remote_detach): Likewise.
* sol-thread.c (sol_thread_detach): Likewise.
* target-delegates.c: Re-generate.
* top.c (struct qt_args) <args>: Remove field.
(kill_or_detach): Don't pass args.
(quit_force): Don't set args.
* windows-nat.c (windows_detach): Remove args parameter.
This commit is contained in:
parent
a3ab6cb019
commit
6bd6f3b656
25 changed files with 97 additions and 95 deletions
|
@ -1,3 +1,39 @@
|
|||
2018-01-19 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* target.h (struct target_ops) <to_detach>: Remove args
|
||||
parameter.
|
||||
(target_detach): Likewise.
|
||||
* target.c (dispose_inferior): Adjust.
|
||||
(target_detach): Remove args parameter, adjust.
|
||||
* aix-thread.c (aix_thread_detach): Adjust.
|
||||
* corefile.c (core_file_command): Adjust.
|
||||
* corelow.c (core_detach): Adjust.
|
||||
* darwin-nat.c (darwin_detach): Adjust.
|
||||
* gnu-nat.c (gnu_detach): Adjust.
|
||||
* inf-ptrace.c (inf_ptrace_detach): Adjust.
|
||||
* infcmd.c (detach_command): Adjust
|
||||
* infrun.c (follow_fork_inferior): Adjust.
|
||||
(handle_vfork_child_exec_or_exit): Adjust.
|
||||
* linux-fork.c (linux_fork_detach): Remove args parameter.
|
||||
* linux-fork.h (linux_fork_detach): Likewise.
|
||||
* linux-nat.c (linux_nat_detach): Likewise, and adjust.
|
||||
* linux-thread-db.c (thread_db_detach): Likewise.
|
||||
* nto-procfs.c (procfs_detach): Likewise.
|
||||
* procfs.c (procfs_detach): Likewise.
|
||||
(do_detach): Remove signo parameter.
|
||||
* record.c (record_detach): Remove args parameter.
|
||||
* record.h (record_detach): Likewise.
|
||||
* remote-sim.c (gdbsim_detach): Likewise.
|
||||
* remote.c (remote_detach_1): Likewise.
|
||||
(remote_detach): Likewise.
|
||||
(extended_remote_detach): Likewise.
|
||||
* sol-thread.c (sol_thread_detach): Likewise.
|
||||
* target-delegates.c: Re-generate.
|
||||
* top.c (struct qt_args) <args>: Remove field.
|
||||
(kill_or_detach): Don't pass args.
|
||||
(quit_force): Don't set args.
|
||||
* windows-nat.c (windows_detach): Remove args parameter.
|
||||
|
||||
2018-01-19 Yao Qi <yao.qi@linaro.org>
|
||||
|
||||
* arm-linux-tdep.c (arm_linux_gcc_target_options): New function.
|
||||
|
|
|
@ -981,12 +981,12 @@ aix_thread_inferior_created (struct target_ops *ops, int from_tty)
|
|||
/* Detach from the process attached to by aix_thread_attach(). */
|
||||
|
||||
static void
|
||||
aix_thread_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
aix_thread_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
struct target_ops *beneath = find_target_beneath (ops);
|
||||
|
||||
pd_disable ();
|
||||
beneath->to_detach (beneath, args, from_tty);
|
||||
beneath->to_detach (beneath, from_tty);
|
||||
}
|
||||
|
||||
/* Tell the inferior process to continue running thread PID if != -1
|
||||
|
|
|
@ -68,7 +68,7 @@ core_file_command (const char *filename, int from_tty)
|
|||
gdb_assert (core_target != NULL);
|
||||
|
||||
if (!filename)
|
||||
(core_target->to_detach) (core_target, filename, from_tty);
|
||||
(core_target->to_detach) (core_target, from_tty);
|
||||
else
|
||||
(core_target->to_open) (filename, from_tty);
|
||||
}
|
||||
|
|
|
@ -464,10 +464,8 @@ core_open (const char *arg, int from_tty)
|
|||
}
|
||||
|
||||
static void
|
||||
core_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
core_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
if (args)
|
||||
error (_("Too many arguments"));
|
||||
unpush_target (ops);
|
||||
reinit_frame_cache ();
|
||||
if (from_tty)
|
||||
|
|
|
@ -1938,7 +1938,7 @@ darwin_attach (struct target_ops *ops, const char *args, int from_tty)
|
|||
previously attached. It *might* work if the program was
|
||||
started via fork. */
|
||||
static void
|
||||
darwin_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
darwin_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
pid_t pid = ptid_get_pid (inferior_ptid);
|
||||
struct inferior *inf = current_inferior ();
|
||||
|
|
|
@ -2255,7 +2255,7 @@ gnu_attach (struct target_ops *ops, const char *args, int from_tty)
|
|||
previously attached. It *might* work if the program was
|
||||
started via fork. */
|
||||
static void
|
||||
gnu_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
gnu_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
int pid;
|
||||
|
||||
|
|
|
@ -241,18 +241,14 @@ inf_ptrace_post_attach (struct target_ops *self, int pid)
|
|||
|
||||
#endif
|
||||
|
||||
/* Detach from the inferior, optionally passing it the signal
|
||||
specified by ARGS. If FROM_TTY is non-zero, be chatty about it. */
|
||||
/* Detach from the inferior. If FROM_TTY is non-zero, be chatty about it. */
|
||||
|
||||
static void
|
||||
inf_ptrace_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
inf_ptrace_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
pid_t pid = ptid_get_pid (inferior_ptid);
|
||||
int sig = 0;
|
||||
|
||||
target_announce_detach (from_tty);
|
||||
if (args)
|
||||
sig = atoi (args);
|
||||
|
||||
#ifdef PT_DETACH
|
||||
/* We'd better not have left any breakpoints in the program or it'll
|
||||
|
@ -260,7 +256,7 @@ inf_ptrace_detach (struct target_ops *ops, const char *args, int from_tty)
|
|||
previously attached to the inferior. It *might* work if we
|
||||
started the process ourselves. */
|
||||
errno = 0;
|
||||
ptrace (PT_DETACH, pid, (PTRACE_TYPE_ARG3)1, sig);
|
||||
ptrace (PT_DETACH, pid, (PTRACE_TYPE_ARG3)1, 0);
|
||||
if (errno != 0)
|
||||
perror_with_name (("ptrace"));
|
||||
#else
|
||||
|
|
|
@ -2976,7 +2976,7 @@ detach_command (const char *args, int from_tty)
|
|||
|
||||
disconnect_tracing ();
|
||||
|
||||
target_detach (args, from_tty);
|
||||
target_detach (from_tty);
|
||||
|
||||
/* The current inferior process was just detached successfully. Get
|
||||
rid of breakpoints that no longer make sense. Note we don't do
|
||||
|
|
|
@ -606,7 +606,7 @@ holding the child stopped. Try \"set detach-on-fork\" or \
|
|||
target_pid_to_str (process_ptid));
|
||||
}
|
||||
|
||||
target_detach (NULL, 0);
|
||||
target_detach (0);
|
||||
}
|
||||
|
||||
/* Note that the detach above makes PARENT_INF dangling. */
|
||||
|
@ -976,7 +976,7 @@ handle_vfork_child_exec_or_exit (int exec)
|
|||
}
|
||||
}
|
||||
|
||||
target_detach (NULL, 0);
|
||||
target_detach (0);
|
||||
|
||||
/* Put it back. */
|
||||
inf->pspace = pspace;
|
||||
|
|
|
@ -407,7 +407,7 @@ linux_fork_mourn_inferior (void)
|
|||
the first available. */
|
||||
|
||||
void
|
||||
linux_fork_detach (const char *args, int from_tty)
|
||||
linux_fork_detach (int from_tty)
|
||||
{
|
||||
/* OK, inferior_ptid is the one we are detaching from. We need to
|
||||
delete it from the fork_list, and switch to the next available
|
||||
|
|
|
@ -22,6 +22,6 @@ extern struct fork_info *add_fork (pid_t);
|
|||
extern struct fork_info *find_fork_pid (pid_t);
|
||||
extern void linux_fork_killall (void);
|
||||
extern void linux_fork_mourn_inferior (void);
|
||||
extern void linux_fork_detach (const char *, int);
|
||||
extern void linux_fork_detach (int);
|
||||
extern int forks_exist_p (void);
|
||||
extern int linux_fork_checkpointing_p (int);
|
||||
|
|
|
@ -1497,7 +1497,7 @@ detach_callback (struct lwp_info *lp, void *data)
|
|||
}
|
||||
|
||||
static void
|
||||
linux_nat_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
linux_nat_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
int pid;
|
||||
struct lwp_info *main_lwp;
|
||||
|
@ -1527,21 +1527,14 @@ linux_nat_detach (struct target_ops *ops, const char *args, int from_tty)
|
|||
from, but there are other viable forks to debug. Detach from
|
||||
the current fork, and context-switch to the first
|
||||
available. */
|
||||
linux_fork_detach (args, from_tty);
|
||||
linux_fork_detach (from_tty);
|
||||
}
|
||||
else
|
||||
{
|
||||
int signo;
|
||||
|
||||
target_announce_detach (from_tty);
|
||||
|
||||
/* Pass on any pending signal for the last LWP, unless the user
|
||||
requested detaching with a different signal (most likely 0,
|
||||
meaning, discard the signal). */
|
||||
if (args != NULL)
|
||||
signo = atoi (args);
|
||||
else
|
||||
signo = get_detach_signal (main_lwp);
|
||||
/* Pass on any pending signal for the last LWP. */
|
||||
int signo = get_detach_signal (main_lwp);
|
||||
|
||||
detach_one_lwp (main_lwp, &signo);
|
||||
|
||||
|
|
|
@ -1090,13 +1090,13 @@ record_thread (struct thread_db_info *info,
|
|||
}
|
||||
|
||||
static void
|
||||
thread_db_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
thread_db_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
struct target_ops *target_beneath = find_target_beneath (ops);
|
||||
|
||||
delete_thread_db_info (ptid_get_pid (inferior_ptid));
|
||||
|
||||
target_beneath->to_detach (target_beneath, args, from_tty);
|
||||
target_beneath->to_detach (target_beneath, from_tty);
|
||||
|
||||
/* NOTE: From this point on, inferior_ptid is null_ptid. */
|
||||
|
||||
|
|
|
@ -943,18 +943,14 @@ procfs_xfer_partial (struct target_ops *ops, enum target_object object,
|
|||
on signals, etc. We'd better not have left any breakpoints
|
||||
in the program or it'll die when it hits one. */
|
||||
static void
|
||||
procfs_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
procfs_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
int siggnal = 0;
|
||||
int pid;
|
||||
|
||||
target_announce_detach ();
|
||||
|
||||
if (args)
|
||||
siggnal = atoi (args);
|
||||
|
||||
if (siggnal)
|
||||
SignalKill (nto_node (), ptid_get_pid (inferior_ptid), 0, siggnal, 0, 0);
|
||||
SignalKill (nto_node (), ptid_get_pid (inferior_ptid), 0, 0, 0, 0);
|
||||
|
||||
close (ctl_fd);
|
||||
ctl_fd = -1;
|
||||
|
|
23
gdb/procfs.c
23
gdb/procfs.c
|
@ -1829,7 +1829,7 @@ proc_iterate_over_threads (procinfo *pi,
|
|||
friends. */
|
||||
|
||||
static ptid_t do_attach (ptid_t ptid);
|
||||
static void do_detach (int signo);
|
||||
static void do_detach ();
|
||||
static void proc_trace_syscalls_1 (procinfo *pi, int syscallnum,
|
||||
int entry_or_exit, int mode, int from_tty);
|
||||
|
||||
|
@ -1924,14 +1924,10 @@ procfs_attach (struct target_ops *ops, const char *args, int from_tty)
|
|||
}
|
||||
|
||||
static void
|
||||
procfs_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
procfs_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
int sig = 0;
|
||||
int pid = ptid_get_pid (inferior_ptid);
|
||||
|
||||
if (args)
|
||||
sig = atoi (args);
|
||||
|
||||
if (from_tty)
|
||||
{
|
||||
const char *exec_file;
|
||||
|
@ -1945,7 +1941,7 @@ procfs_detach (struct target_ops *ops, const char *args, int from_tty)
|
|||
gdb_flush (gdb_stdout);
|
||||
}
|
||||
|
||||
do_detach (sig);
|
||||
do_detach ();
|
||||
|
||||
inferior_ptid = null_ptid;
|
||||
detach_inferior (pid);
|
||||
|
@ -2023,16 +2019,13 @@ do_attach (ptid_t ptid)
|
|||
}
|
||||
|
||||
static void
|
||||
do_detach (int signo)
|
||||
do_detach ()
|
||||
{
|
||||
procinfo *pi;
|
||||
|
||||
/* Find procinfo for the main process. */
|
||||
pi = find_procinfo_or_die (ptid_get_pid (inferior_ptid),
|
||||
0); /* FIXME: threads */
|
||||
if (signo)
|
||||
if (!proc_set_current_signal (pi, signo))
|
||||
proc_warn (pi, "do_detach, set_current_signal", __LINE__);
|
||||
|
||||
if (!proc_set_traced_signals (pi, &pi->saved_sigset))
|
||||
proc_warn (pi, "do_detach, set_traced_signal", __LINE__);
|
||||
|
@ -2049,15 +2042,15 @@ do_detach (int signo)
|
|||
if (!proc_set_held_signals (pi, &pi->saved_sighold))
|
||||
proc_warn (pi, "do_detach, set_held_signals", __LINE__);
|
||||
|
||||
if (signo || (proc_flags (pi) & (PR_STOPPED | PR_ISTOP)))
|
||||
if (signo || !(pi->was_stopped) ||
|
||||
query (_("Was stopped when attached, make it runnable again? ")))
|
||||
if (proc_flags (pi) & (PR_STOPPED | PR_ISTOP))
|
||||
if (!(pi->was_stopped)
|
||||
|| query (_("Was stopped when attached, make it runnable again? ")))
|
||||
{
|
||||
/* Clear any pending signal. */
|
||||
if (!proc_clear_current_fault (pi))
|
||||
proc_warn (pi, "do_detach, clear_current_fault", __LINE__);
|
||||
|
||||
if (signo == 0 && !proc_clear_current_signal (pi))
|
||||
if (!proc_clear_current_signal (pi))
|
||||
proc_warn (pi, "do_detach, clear_current_signal", __LINE__);
|
||||
|
||||
if (!proc_set_run_on_last_close (pi))
|
||||
|
|
|
@ -187,7 +187,7 @@ record_disconnect (struct target_ops *t, const char *args, int from_tty)
|
|||
/* See record.h. */
|
||||
|
||||
void
|
||||
record_detach (struct target_ops *t, const char *args, int from_tty)
|
||||
record_detach (struct target_ops *t, int from_tty)
|
||||
{
|
||||
gdb_assert (t->to_stratum == record_stratum);
|
||||
|
||||
|
@ -196,7 +196,7 @@ record_detach (struct target_ops *t, const char *args, int from_tty)
|
|||
record_stop (t);
|
||||
record_unpush (t);
|
||||
|
||||
target_detach (args, from_tty);
|
||||
target_detach (from_tty);
|
||||
}
|
||||
|
||||
/* See record.h. */
|
||||
|
|
|
@ -88,7 +88,7 @@ extern void record_goto (const char *arg);
|
|||
extern void record_disconnect (struct target_ops *, const char *, int);
|
||||
|
||||
/* The default "to_detach" target method for record targets. */
|
||||
extern void record_detach (struct target_ops *, const char *, int);
|
||||
extern void record_detach (struct target_ops *, int);
|
||||
|
||||
/* The default "to_mourn_inferior" target method for record targets. */
|
||||
extern void record_mourn_inferior (struct target_ops *);
|
||||
|
|
|
@ -77,8 +77,7 @@ static void gdbsim_open (const char *args, int from_tty);
|
|||
|
||||
static void gdbsim_close (struct target_ops *self);
|
||||
|
||||
static void gdbsim_detach (struct target_ops *ops, const char *args,
|
||||
int from_tty);
|
||||
static void gdbsim_detach (struct target_ops *ops, int from_tty);
|
||||
|
||||
static void gdbsim_prepare_to_store (struct target_ops *self,
|
||||
struct regcache *regcache);
|
||||
|
@ -815,17 +814,16 @@ gdbsim_close (struct target_ops *self)
|
|||
/* Takes a program previously attached to and detaches it.
|
||||
The program may resume execution (some targets do, some don't) and will
|
||||
no longer stop on signals, etc. We better not have left any breakpoints
|
||||
in the program or it'll die when it hits one. ARGS is arguments
|
||||
typed by the user (e.g. a signal to send the process). FROM_TTY
|
||||
says whether to be verbose or not. */
|
||||
in the program or it'll die when it hits one. FROM_TTY says whether to be
|
||||
verbose or not. */
|
||||
/* Terminate the open connection to the remote debugger.
|
||||
Use this when you want to detach and do something else with your gdb. */
|
||||
|
||||
static void
|
||||
gdbsim_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
gdbsim_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
if (remote_debug)
|
||||
fprintf_unfiltered (gdb_stdlog, "gdbsim_detach: args \"%s\"\n", args);
|
||||
fprintf_unfiltered (gdb_stdlog, "gdbsim_detach\n");
|
||||
|
||||
unpush_target (ops); /* calls gdbsim_close to do the real work */
|
||||
if (from_tty)
|
||||
|
|
13
gdb/remote.c
13
gdb/remote.c
|
@ -5126,16 +5126,13 @@ remote_detach_pid (int pid)
|
|||
one. */
|
||||
|
||||
static void
|
||||
remote_detach_1 (const char *args, int from_tty)
|
||||
remote_detach_1 (int from_tty)
|
||||
{
|
||||
int pid = ptid_get_pid (inferior_ptid);
|
||||
struct remote_state *rs = get_remote_state ();
|
||||
struct thread_info *tp = find_thread_ptid (inferior_ptid);
|
||||
int is_fork_parent;
|
||||
|
||||
if (args)
|
||||
error (_("Argument given to \"detach\" when remotely debugging."));
|
||||
|
||||
if (!target_has_execution)
|
||||
error (_("No process to detach from."));
|
||||
|
||||
|
@ -5165,15 +5162,15 @@ remote_detach_1 (const char *args, int from_tty)
|
|||
}
|
||||
|
||||
static void
|
||||
remote_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
remote_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
remote_detach_1 (args, from_tty);
|
||||
remote_detach_1 (from_tty);
|
||||
}
|
||||
|
||||
static void
|
||||
extended_remote_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
extended_remote_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
remote_detach_1 (args, from_tty);
|
||||
remote_detach_1 (from_tty);
|
||||
}
|
||||
|
||||
/* Target follow-fork function for remote targets. On entry, and
|
||||
|
|
|
@ -348,14 +348,14 @@ lwp_to_thread (ptid_t lwp)
|
|||
program was started via the normal ptrace (PTRACE_TRACEME). */
|
||||
|
||||
static void
|
||||
sol_thread_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
sol_thread_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
struct target_ops *beneath = find_target_beneath (ops);
|
||||
|
||||
sol_thread_active = 0;
|
||||
inferior_ptid = pid_to_ptid (ptid_get_pid (main_ph.ptid));
|
||||
unpush_target (ops);
|
||||
beneath->to_detach (beneath, args, from_tty);
|
||||
beneath->to_detach (beneath, from_tty);
|
||||
}
|
||||
|
||||
/* Resume execution of process PTID. If STEP is nozero, then just
|
||||
|
|
|
@ -28,28 +28,26 @@ debug_post_attach (struct target_ops *self, int arg1)
|
|||
}
|
||||
|
||||
static void
|
||||
delegate_detach (struct target_ops *self, const char *arg1, int arg2)
|
||||
delegate_detach (struct target_ops *self, int arg1)
|
||||
{
|
||||
self = self->beneath;
|
||||
self->to_detach (self, arg1, arg2);
|
||||
self->to_detach (self, arg1);
|
||||
}
|
||||
|
||||
static void
|
||||
tdefault_detach (struct target_ops *self, const char *arg1, int arg2)
|
||||
tdefault_detach (struct target_ops *self, int arg1)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
debug_detach (struct target_ops *self, const char *arg1, int arg2)
|
||||
debug_detach (struct target_ops *self, int arg1)
|
||||
{
|
||||
fprintf_unfiltered (gdb_stdlog, "-> %s->to_detach (...)\n", debug_target.to_shortname);
|
||||
debug_target.to_detach (&debug_target, arg1, arg2);
|
||||
debug_target.to_detach (&debug_target, arg1);
|
||||
fprintf_unfiltered (gdb_stdlog, "<- %s->to_detach (", debug_target.to_shortname);
|
||||
target_debug_print_struct_target_ops_p (&debug_target);
|
||||
fputs_unfiltered (", ", gdb_stdlog);
|
||||
target_debug_print_const_char_p (arg1);
|
||||
fputs_unfiltered (", ", gdb_stdlog);
|
||||
target_debug_print_int (arg2);
|
||||
target_debug_print_int (arg1);
|
||||
fputs_unfiltered (")\n", gdb_stdlog);
|
||||
}
|
||||
|
||||
|
|
|
@ -2108,7 +2108,7 @@ dispose_inferior (struct inferior *inf, void *args)
|
|||
if (target_has_execution)
|
||||
target_kill ();
|
||||
else
|
||||
target_detach (NULL, 0);
|
||||
target_detach (0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -2141,10 +2141,10 @@ target_preopen (int from_tty)
|
|||
target_pre_inferior (from_tty);
|
||||
}
|
||||
|
||||
/* Detach a target after doing deferred register stores. */
|
||||
/* See target.h. */
|
||||
|
||||
void
|
||||
target_detach (const char *args, int from_tty)
|
||||
target_detach (int from_tty)
|
||||
{
|
||||
if (gdbarch_has_global_breakpoints (target_gdbarch ()))
|
||||
/* Don't remove global breakpoints here. They're removed on
|
||||
|
@ -2157,7 +2157,7 @@ target_detach (const char *args, int from_tty)
|
|||
|
||||
prepare_for_detach ();
|
||||
|
||||
current_target.to_detach (¤t_target, args, from_tty);
|
||||
current_target.to_detach (¤t_target, from_tty);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -440,7 +440,7 @@ struct target_ops
|
|||
void (*to_attach) (struct target_ops *ops, const char *, int);
|
||||
void (*to_post_attach) (struct target_ops *, int)
|
||||
TARGET_DEFAULT_IGNORE ();
|
||||
void (*to_detach) (struct target_ops *ops, const char *, int)
|
||||
void (*to_detach) (struct target_ops *ops, int)
|
||||
TARGET_DEFAULT_IGNORE ();
|
||||
void (*to_disconnect) (struct target_ops *, const char *, int)
|
||||
TARGET_DEFAULT_NORETURN (tcomplain ());
|
||||
|
@ -1323,11 +1323,10 @@ extern void target_announce_detach (int from_tty);
|
|||
/* Takes a program previously attached to and detaches it.
|
||||
The program may resume execution (some targets do, some don't) and will
|
||||
no longer stop on signals, etc. We better not have left any breakpoints
|
||||
in the program or it'll die when it hits one. ARGS is arguments
|
||||
typed by the user (e.g. a signal to send the process). FROM_TTY
|
||||
says whether to be verbose or not. */
|
||||
in the program or it'll die when it hits one. FROM_TTY says whether to be
|
||||
verbose or not. */
|
||||
|
||||
extern void target_detach (const char *, int);
|
||||
extern void target_detach (int from_tty);
|
||||
|
||||
/* Disconnect from the current target without resuming it (leaving it
|
||||
waiting for a debugger). */
|
||||
|
|
|
@ -1461,7 +1461,6 @@ set_prompt (const char *s)
|
|||
|
||||
struct qt_args
|
||||
{
|
||||
char *args;
|
||||
int from_tty;
|
||||
};
|
||||
|
||||
|
@ -1486,7 +1485,7 @@ kill_or_detach (struct inferior *inf, void *args)
|
|||
if (target_has_execution)
|
||||
{
|
||||
if (inf->attach_flag)
|
||||
target_detach (qt->args, qt->from_tty);
|
||||
target_detach (qt->from_tty);
|
||||
else
|
||||
target_kill ();
|
||||
}
|
||||
|
@ -1577,7 +1576,6 @@ quit_force (int *exit_arg, int from_tty)
|
|||
else if (return_child_result)
|
||||
exit_code = return_child_result_value;
|
||||
|
||||
qt.args = NULL;
|
||||
qt.from_tty = from_tty;
|
||||
|
||||
/* We want to handle any quit errors and exit regardless. */
|
||||
|
|
|
@ -1931,7 +1931,7 @@ windows_attach (struct target_ops *ops, const char *args, int from_tty)
|
|||
}
|
||||
|
||||
static void
|
||||
windows_detach (struct target_ops *ops, const char *args, int from_tty)
|
||||
windows_detach (struct target_ops *ops, int from_tty)
|
||||
{
|
||||
int detached = 1;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue