From c1ee2fb3cb80ce3a7082002797712d5ffce33e21 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 21 May 2014 22:28:23 +0100 Subject: [PATCH] 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 * 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. --- gdb/ChangeLog | 12 ++++++++++++ gdb/darwin-nat.c | 3 +-- gdb/gnu-nat.c | 3 +-- gdb/inf-child.c | 7 +++++++ gdb/inf-child.h | 4 ++++ gdb/inf-ptrace.c | 4 +--- gdb/inf-ttrace.c | 3 +-- gdb/nto-procfs.c | 3 +-- gdb/windows-nat.c | 3 +-- 9 files changed, 29 insertions(+), 13 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 24de5fadbd7..d9c9c132df6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,15 @@ +2014-05-21 Pedro Alves + + * 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 * scm-breakpoint.c (breakpoint_functions): Fix typo. diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c index f3d510dec09..160329b89ea 100644 --- a/gdb/darwin-nat.c +++ b/gdb/darwin-nat.c @@ -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 diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c index 3317215b17e..516e83d96a7 100644 --- a/gdb/gnu-nat.c +++ b/gdb/gnu-nat.c @@ -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); } diff --git a/gdb/inf-child.c b/gdb/inf-child.c index a3c4fe4c445..dbadde845d8 100644 --- a/gdb/inf-child.c +++ b/gdb/inf-child.c @@ -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 diff --git a/gdb/inf-child.h b/gdb/inf-child.h index 3f00ab63891..b2692cabe52 100644 --- a/gdb/inf-child.h +++ b/gdb/inf-child.h @@ -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 diff --git a/gdb/inf-ptrace.c b/gdb/inf-ptrace.c index cc4921bda4e..4736fbd8169 100644 --- a/gdb/inf-ptrace.c +++ b/gdb/inf-ptrace.c @@ -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, diff --git a/gdb/inf-ttrace.c b/gdb/inf-ttrace.c index 96105dcbd0a..ee555159bf3 100644 --- a/gdb/inf-ttrace.c +++ b/gdb/inf-ttrace.c @@ -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 diff --git a/gdb/nto-procfs.c b/gdb/nto-procfs.c index 8a241a8a5d2..2ce956385dc 100644 --- a/gdb/nto-procfs.c +++ b/gdb/nto-procfs.c @@ -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 diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index fe43c2469c7..88844fe11cd 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -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 -- 2.39.5