From: Pedro Alves Date: Fri, 17 Oct 2008 01:08:08 +0000 (+0000) Subject: * remote.c (record_currthread): Add inferior before child threads. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=153ccabd86d78a26fb9021051fc39b63b649105b;p=binutils-gdb.git * remote.c (record_currthread): Add inferior before child threads. (remote_threads_info): Check for exited threads. Mention notification order. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9daf5565cf7..56c609647b3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2008-10-17 Pedro Alves + + * remote.c (record_currthread): Add inferior before child threads. + (remote_threads_info): Check for exited threads. Mention + notification order. + 2008-10-16 Joel Brobecker * breakpoint.h (enum bptype): New enum bp_catchpoint. diff --git a/gdb/remote.c b/gdb/remote.c index f9249f66cc8..727d0842eac 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);