diff options
author | Pedro Alves <palves@redhat.com> | 2008-10-17 01:08:08 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2008-10-17 01:08:08 +0000 |
commit | 153ccabd86d78a26fb9021051fc39b63b649105b (patch) | |
tree | 53f0b06563d9ba0fa56d52ec0b086b6a16f351c2 /gdb/remote.c | |
parent | 8215a0031e0f3ce3900daef42ef9445df76c2551 (diff) | |
download | gdb-153ccabd86d78a26fb9021051fc39b63b649105b.zip gdb-153ccabd86d78a26fb9021051fc39b63b649105b.tar.gz gdb-153ccabd86d78a26fb9021051fc39b63b649105b.tar.bz2 |
* remote.c (record_currthread): Add inferior before child threads.
(remote_threads_info): Check for exited threads. Mention
notification order.
Diffstat (limited to 'gdb/remote.c')
-rw-r--r-- | gdb/remote.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/gdb/remote.c b/gdb/remote.c index f9249f6..727d084 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -1096,6 +1096,13 @@ record_currthread (ptid_t currthread) { general_thread = currthread; + /* When connecting to a target remote, or to a target + extended-remote which already was debugging an inferior, we may + not know about it yet. Add it before adding its child thread, so + notifications are emitted in a sensible order. */ + if (!in_inferior_list (ptid_get_pid (currthread))) + add_inferior (ptid_get_pid (currthread)); + /* If this is a new thread, add it to GDB's thread list. If we leave it up to WFI to do this, bad things will happen. */ @@ -1134,12 +1141,6 @@ record_currthread (ptid_t currthread) /* This is really a new thread. Add it. */ add_thread (currthread); } - - if (!in_inferior_list (ptid_get_pid (currthread))) - /* When connecting to a target remote, or to a target - extended-remote which already was debugging an inferior, we may - not know about it yet --- add it. */ - add_inferior (ptid_get_pid (currthread)); } static char *last_pass_packet; @@ -2098,13 +2099,16 @@ remote_threads_info (void) { new_thread = read_ptid (bufp, &bufp); if (!ptid_equal (new_thread, null_ptid) - && !in_thread_list (new_thread)) + && (!in_thread_list (new_thread) + || is_exited (new_thread))) { + /* When connected to a multi-process aware stub, + "info threads" may show up threads of + inferiors we didn't know about yet. Add them + now, and before adding any of its child + threads, so notifications are emitted in a + sensible order. */ if (!in_inferior_list (ptid_get_pid (new_thread))) - /* When connected to a multi-process aware - stub, "info threads" may show up threads of - inferiors we didn't know about yet. Add - them. */ add_inferior (ptid_get_pid (new_thread)); add_thread (new_thread); |