aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/remote.c9
2 files changed, 12 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 938ced7..83685a7 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2009-03-25 Pedro Alves <pedro@codesourcery.com>
+
+ * remote.c (remote_start_remote): In non-stop mode, call
+ init_wait_for_inferior before adding threads and inferiors.
+
2009-03-25 Joel Brobecker <brobecker@adacore.com>
* breakpoint.c (breakpoint_thread_match): Split a large condition
diff --git a/gdb/remote.c b/gdb/remote.c
index e1e0db6..d4cf72c 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -2740,6 +2740,13 @@ remote_start_remote (struct ui_out *uiout, void *opaque)
}
else
{
+ /* Clear WFI global state. Do this before finding about new
+ threads and inferiors, and setting the current inferior.
+ Otherwise we would clear the proceed status of the current
+ inferior when we want its stop_soon state to be preserved
+ (see notice_new_inferior). */
+ init_wait_for_inferior ();
+
/* In non-stop, we will either get an "OK", meaning that there
are no stopped threads at this time; or, a regular stop
reply. In the latter case, there may be more than one thread
@@ -2800,8 +2807,6 @@ remote_start_remote (struct ui_out *uiout, void *opaque)
/* In non-stop mode, any cached wait status will be stored in
the stop reply queue. */
gdb_assert (wait_status == NULL);
-
- init_wait_for_inferior ();
}
/* If we connected to a live target, do some additional setup. */