aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2008-10-17 01:08:08 +0000
committerPedro Alves <palves@redhat.com>2008-10-17 01:08:08 +0000
commit153ccabd86d78a26fb9021051fc39b63b649105b (patch)
tree53f0b06563d9ba0fa56d52ec0b086b6a16f351c2 /gdb
parent8215a0031e0f3ce3900daef42ef9445df76c2551 (diff)
downloadgdb-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')
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/remote.c26
2 files changed, 21 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9daf556..56c6096 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2008-10-17 Pedro Alves <pedro@codesourcery.com>
+
+ * remote.c (record_currthread): Add inferior before child threads.
+ (remote_threads_info): Check for exited threads. Mention
+ notification order.
+
2008-10-16 Joel Brobecker <brobecker@adacore.com>
* breakpoint.h (enum bptype): New enum bp_catchpoint.
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);