From: Pedro Alves Date: Thu, 18 Dec 2008 22:16:16 +0000 (+0000) Subject: * linux-nat.c (linux_child_follow_fork): If following the child, X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9c421dc4db41c0d43df4868394aceddb5aa87520;p=thirdparty%2Fbinutils-gdb.git * linux-nat.c (linux_child_follow_fork): If following the child, and not detaching the parent, also add the child fork to the fork list. * linux-fork.c (linux_fork_context): Remove dead error call. Assert that the incoming newfp argument is not null. Do not add a new fork for inferior_ptid. Assert that there is one already. --- diff --git a/gdb/linux-fork.c b/gdb/linux-fork.c index c8aee9119d0..e5891abffd4 100644 --- a/gdb/linux-fork.c +++ b/gdb/linux-fork.c @@ -597,15 +597,14 @@ static void linux_fork_context (struct fork_info *newfp, int from_tty) { /* Now we attempt to switch processes. */ - struct fork_info *oldfp = find_fork_ptid (inferior_ptid); + struct fork_info *oldfp; ptid_t ptid; int id, i; - if (!newfp) - error (_("No such fork/process")); + gdb_assert (newfp != NULL); - if (!oldfp) - oldfp = add_fork (ptid_get_pid (inferior_ptid)); + oldfp = find_fork_ptid (inferior_ptid); + gdb_assert (oldfp != NULL); fork_save_infrun_state (oldfp, 1); remove_breakpoints (); diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 6400dc3b9b6..77c976e937b 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -863,6 +863,12 @@ linux_child_follow_fork (struct target_ops *ops, int follow_child) if (!fp) fp = add_fork (parent_pid); fork_save_infrun_state (fp, 0); + + /* Also add an entry for the child fork. */ + fp = find_fork_pid (child_pid); + if (!fp) + fp = add_fork (child_pid); + fork_save_infrun_state (fp, 0); } else target_detach (NULL, 0);