2008-08-18 Pedro Alves * linux-nat.c (linux_nat_wait): Update inferior_ptid's ptid with thread_change_ptid. Don't add or mark the main thread as running and executing here. * fork-child.c (fork_inferior): Add the main thread here, and set it running and executing. --- gdb/fork-child.c | 6 ++++++ gdb/linux-nat.c | 11 +++++------ 2 files changed, 11 insertions(+), 6 deletions(-) Index: src/gdb/linux-nat.c =================================================================== --- src.orig/gdb/linux-nat.c 2008-08-18 23:24:09.000000000 +0100 +++ src/gdb/linux-nat.c 2008-08-18 23:36:32.000000000 +0100 @@ -2722,14 +2722,13 @@ linux_nat_wait (ptid_t ptid, struct targ { gdb_assert (!is_lwp (inferior_ptid)); - inferior_ptid = BUILD_LWP (GET_PID (inferior_ptid), - GET_PID (inferior_ptid)); + /* Upgrade the main thread's ptid. */ + thread_change_ptid (inferior_ptid, + BUILD_LWP (GET_PID (inferior_ptid), + GET_PID (inferior_ptid))); + lp = add_lwp (inferior_ptid); lp->resumed = 1; - /* Add the main thread to GDB's thread list. */ - add_thread_silent (lp->ptid); - set_running (lp->ptid, 1); - set_executing (lp->ptid, 1); } /* Block events while we're here. */ Index: src/gdb/fork-child.c =================================================================== --- src.orig/gdb/fork-child.c 2008-08-18 23:24:09.000000000 +0100 +++ src/gdb/fork-child.c 2008-08-18 23:36:32.000000000 +0100 @@ -397,6 +397,12 @@ fork_inferior (char *exec_file_arg, char /* Needed for wait_for_inferior stuff below. */ inferior_ptid = pid_to_ptid (pid); + /* We have something that executes now. We'll be running through + the shell at this point, but the pid shouldn't change. Targets + supporting MT should fill this task's ptid with more data as soon + as they can. */ + add_thread_silent (inferior_ptid); + /* Now that we have a child process, make it our target, and initialize anything target-vector-specific that needs initializing. */