diff options
author | Pedro Alves <palves@redhat.com> | 2012-11-02 18:13:37 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2012-11-02 18:13:37 +0000 |
commit | f50f4e56a6799a43b13f2a260aaee831bf31c9dc (patch) | |
tree | 80f89c919484501caf727dc085e16098bde9e6d9 /gdb/infrun.c | |
parent | 71ce889da907b11ec88efa3ddc93ee1f0371f8e9 (diff) | |
download | gdb-f50f4e56a6799a43b13f2a260aaee831bf31c9dc.zip gdb-f50f4e56a6799a43b13f2a260aaee831bf31c9dc.tar.gz gdb-f50f4e56a6799a43b13f2a260aaee831bf31c9dc.tar.bz2 |
gdb/
2012-11-02 Pedro Alves <palves@redhat.com>
PR gdb/14766
* infrun.c (handle_inferior_event)
<TARGET_WAITKIND_EXITED/TARGET_WAITKIND_SIGNALLED>: Switch to
null_ptid before handling a vfork child exec or exit. Switch to
the event ptid afterwards.
gdb/testsuite/
2012-11-02 Pedro Alves <palves@redhat.com>
PR gdb/14766
* gdb.base/foll-vfork.exp (vfork_child_follow_to_exit): Remove
setup_kfail.
(tcatch_vfork_then_child_follow_exit): No longer expect "Couldn't
get registers".
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r-- | gdb/infrun.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c index d79c6bd..ab5aacf 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -663,7 +663,16 @@ handle_vfork_child_exec_or_exit (int exec) /* follow-fork child, detach-on-fork on. */ - old_chain = make_cleanup_restore_current_thread (); + if (!exec) + { + /* If we're handling a child exit, then inferior_ptid + points at the inferior's pid, not to a thread. */ + old_chain = save_inferior_ptid (); + save_current_program_space (); + save_current_inferior (); + } + else + old_chain = save_current_space_and_thread (); /* We're letting loose of the parent. */ tp = any_live_thread_of_process (inf->vfork_parent->pid); |