From: Pedro Alves Date: Tue, 25 Mar 2008 12:26:21 +0000 (+0000) Subject: * linux-nat.c (linux_nat_attach): Add the pid we attached to, to X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=403fe1979f7a9e128d3904731e709fadbf60ea81;p=binutils-gdb.git * linux-nat.c (linux_nat_attach): Add the pid we attached to, to gdb's thread list. (linux_nat_wait): Add main lwp to gdb's thread list. * linux-thread-db.c (find_new_threads_callback): Also attach to already listed threads which thread_db didn't know about yet. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 04792dfdd93..fc80108c1a0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2008-03-25 Pedro Alves + + * linux-nat.c (linux_nat_attach): Add the pid we attached to, to + gdb's thread list. + (linux_nat_wait): Add main lwp to gdb's thread list. + * linux-thread-db.c (find_new_threads_callback): Also attach to + already listed threads which thread_db didn't know about yet. + 2008-03-25 Pedro Alves * linux-nat.c (drain_queued_events): Fix comment typo. diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index e2ef962e125..9511815ecd6 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -1173,6 +1173,10 @@ linux_nat_attach (char *args, int from_tty) lp = add_lwp (inferior_ptid); lp->cloned = cloned; + /* If this process is not using thread_db, then we still don't + detect any other threads, but add at least this one. */ + add_thread_silent (lp->ptid); + lp->stopped = 1; lp->resumed = 1; @@ -2387,6 +2391,8 @@ linux_nat_wait (ptid_t ptid, struct target_waitstatus *ourstatus) 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); } sigemptyset (&flush_mask); diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c index 534c9b97a3f..8ac98187765 100644 --- a/gdb/linux-thread-db.c +++ b/gdb/linux-thread-db.c @@ -918,6 +918,7 @@ find_new_threads_callback (const td_thrhandle_t *th_p, void *data) td_thrinfo_t ti; td_err_e err; ptid_t ptid; + struct thread_info *tp; err = td_thr_get_info_p (th_p, &ti); if (err != TD_OK) @@ -945,7 +946,8 @@ find_new_threads_callback (const td_thrhandle_t *th_p, void *data) return 0; } - if (!in_thread_list (ptid)) + tp = find_thread_pid (ptid); + if (tp == NULL || tp->private == NULL) attach_thread (ptid, th_p, &ti); return 0;