Native targets: Add inf-child.c:inf_child_mourn_inferior and use it.
Most ports do the same thing in the tail of their mourn routine - call generic_mourn_inferior+inf_child_maybe_unpush_target. This factors that out to a convenience function. More could be done, but this converts only the really obvious ones. Tested by building GDB on x86_64 Fedora 20, mingw32 and djgpp. The rest is untested, but I think a patch can't get more obvious. gdb/ 2014-05-21 Pedro Alves <palves@redhat.com> * inf-child.c (inf_child_mourn_inferior): New function. * inf-child.h (inf_child_mourn_inferior): New declaration. * darwin-nat.c (darwin_mourn_inferior): Use inf_child_mourn_inferior. * gnu-nat.c (gnu_mourn_inferior): Likewise. * inf-ptrace.c (inf_ptrace_mourn_inferior): Likewise. * inf-ttrace.c (inf_ttrace_mourn_inferior): Likewise. * nto-procfs.c (procfs_mourn_inferior): Likewise. * windows-nat.c (windows_mourn_inferior): Likewise.
This commit is contained in:
parent
ff604a6747
commit
c1ee2fb3cb
9 changed files with 29 additions and 13 deletions
|
@ -1,3 +1,15 @@
|
|||
2014-05-21 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* inf-child.c (inf_child_mourn_inferior): New function.
|
||||
* inf-child.h (inf_child_mourn_inferior): New declaration.
|
||||
* darwin-nat.c (darwin_mourn_inferior): Use
|
||||
inf_child_mourn_inferior.
|
||||
* gnu-nat.c (gnu_mourn_inferior): Likewise.
|
||||
* inf-ptrace.c (inf_ptrace_mourn_inferior): Likewise.
|
||||
* inf-ttrace.c (inf_ttrace_mourn_inferior): Likewise.
|
||||
* nto-procfs.c (procfs_mourn_inferior): Likewise.
|
||||
* windows-nat.c (windows_mourn_inferior): Likewise.
|
||||
|
||||
2014-05-21 Doug Evans <xdje42@gmail.com>
|
||||
|
||||
* scm-breakpoint.c (breakpoint_functions): Fix typo.
|
||||
|
|
|
@ -1268,8 +1268,7 @@ darwin_mourn_inferior (struct target_ops *ops)
|
|||
xfree (inf->private);
|
||||
inf->private = NULL;
|
||||
|
||||
generic_mourn_inferior ();
|
||||
inf_child_maybe_unpush_target (ops);
|
||||
inf_child_mourn_inferior (ops);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -2080,8 +2080,7 @@ gnu_mourn_inferior (struct target_ops *ops)
|
|||
{
|
||||
inf_debug (gnu_current_inf, "rip");
|
||||
inf_detach (gnu_current_inf);
|
||||
generic_mourn_inferior ();
|
||||
inf_child_maybe_unpush_target (ops);
|
||||
inf_child_mourn_inferior (ops);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -159,6 +159,13 @@ inf_child_close (struct target_ops *target)
|
|||
inf_child_explicitly_opened = 0;
|
||||
}
|
||||
|
||||
void
|
||||
inf_child_mourn_inferior (struct target_ops *ops)
|
||||
{
|
||||
generic_mourn_inferior ();
|
||||
inf_child_maybe_unpush_target (ops);
|
||||
}
|
||||
|
||||
/* See inf-child.h. */
|
||||
|
||||
void
|
||||
|
|
|
@ -36,6 +36,10 @@ extern void store_waitstatus (struct target_waitstatus *, int);
|
|||
extern void inf_child_open_target (struct target_ops *target,
|
||||
char *arg, int from_tty);
|
||||
|
||||
/* To be called by the native target's to_mourn_inferior routine. */
|
||||
|
||||
extern void inf_child_mourn_inferior (struct target_ops *ops);
|
||||
|
||||
/* Unpush the target if it wasn't explicitly open with "target native"
|
||||
and there are no live inferiors left. Note: if calling this as a
|
||||
result of a mourn or detach, the current inferior shall already
|
||||
|
|
|
@ -174,9 +174,7 @@ inf_ptrace_mourn_inferior (struct target_ops *ops)
|
|||
only report its exit status to its original parent. */
|
||||
waitpid (ptid_get_pid (inferior_ptid), &status, 0);
|
||||
|
||||
generic_mourn_inferior ();
|
||||
|
||||
inf_child_maybe_unpush_target (ops);
|
||||
inf_child_mourn_inferior (ops);
|
||||
}
|
||||
|
||||
/* Attach to the process specified by ARGS. If FROM_TTY is non-zero,
|
||||
|
|
|
@ -696,8 +696,7 @@ inf_ttrace_mourn_inferior (struct target_ops *ops)
|
|||
}
|
||||
inf_ttrace_page_dict.count = 0;
|
||||
|
||||
generic_mourn_inferior ();
|
||||
inf_child_maybe_unpush_target (ops);
|
||||
inf_child_mourn_inferior (ops);
|
||||
}
|
||||
|
||||
/* Assuming we just attached the debugger to a new inferior, create
|
||||
|
|
|
@ -1027,8 +1027,7 @@ procfs_mourn_inferior (struct target_ops *ops)
|
|||
}
|
||||
inferior_ptid = null_ptid;
|
||||
init_thread_list ();
|
||||
generic_mourn_inferior ();
|
||||
inf_child_maybe_unpush_target (ops);
|
||||
inf_child_mourn_inferior (ops);
|
||||
}
|
||||
|
||||
/* This function breaks up an argument string into an argument
|
||||
|
|
|
@ -2368,8 +2368,7 @@ windows_mourn_inferior (struct target_ops *ops)
|
|||
CHECK (CloseHandle (current_process_handle));
|
||||
open_process_used = 0;
|
||||
}
|
||||
generic_mourn_inferior ();
|
||||
inf_child_maybe_unpush_target (ops);
|
||||
inf_child_mourn_inferior (ops);
|
||||
}
|
||||
|
||||
/* Send a SIGINT to the process group. This acts just like the user typed a
|
||||
|
|
Loading…
Reference in a new issue