* remote.c (remote_start_remote): In non-stop mode, call
authorPedro Alves <palves@redhat.com>
Wed, 25 Mar 2009 22:27:49 +0000 (22:27 +0000)
committerPedro Alves <palves@redhat.com>
Wed, 25 Mar 2009 22:27:49 +0000 (22:27 +0000)
init_wait_for_inferior before adding threads and inferiors.

gdb/ChangeLog
gdb/remote.c

index 938ced7..83685a7 100644 (file)
@@ -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
index e1e0db6..d4cf72c 100644 (file)
@@ -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.  */