2007-07-27 Michael Snyder <michael.snyder@access-company.com>
authorMichael Snyder <msnyder@vmware.com>
Fri, 27 Jul 2007 18:44:40 +0000 (18:44 +0000)
committerMichael Snyder <msnyder@vmware.com>
Fri, 27 Jul 2007 18:44:40 +0000 (18:44 +0000)
* server.c (main): Check for inferior exit before main loop.

gdb/gdbserver/ChangeLog
gdb/gdbserver/server.c

index 6b169cc5483f46058c0a9528b886c6443353c60b..9e04c040227503605f0008450828a6195e1b2777 100644 (file)
@@ -1,3 +1,7 @@
+2007-07-27  Michael Snyder  <michael.snyder@access-company.com>
+
+       * server.c (main): Check for inferior exit before main loop.
+
 2007-07-18  Pedro Alves  <pedro_alves@portugalmail.pt>
 
        * remote-utils.c (remote_open): Set SO_KEEPALIVE on remote_desc
index 9225f663e2a8c8ee29061f0baeea628fd0765d1c..2b9866f95099a7bef393cf06aace5a332883e4ef 100644 (file)
@@ -80,6 +80,8 @@ start_inferior (char *argv[], char *statusptr)
 
   signal_pid = create_inferior (argv[0], argv);
 
+  /* FIXME: we don't actually know at this point that the create
+     actually succeeded.  We won't know that until we wait.  */
   fprintf (stderr, "Process %s created; pid = %ld\n", argv[0],
           signal_pid);
   fflush (stderr);
@@ -93,7 +95,8 @@ start_inferior (char *argv[], char *statusptr)
   atexit (restore_old_foreground_pgrp);
 #endif
 
-  /* Wait till we are at 1st instruction in program, return signal number.  */
+  /* Wait till we are at 1st instruction in program, return signal
+     number (assuming success).  */
   return mywait (statusptr, 0);
 }
 
@@ -899,7 +902,9 @@ main (int argc, char *argv[])
       /* Wait till we are at first instruction in program.  */
       signal = start_inferior (&argv[2], &status);
 
-      /* We are now stopped at the first instruction of the target process */
+      /* We are now (hopefully) stopped at the first instruction of
+        the target process.  This assumes that the target process was
+        successfully created.  */
 
       /* Don't report shared library events on the initial connection,
         even if some libraries are preloaded.  */
@@ -925,6 +930,12 @@ main (int argc, char *argv[])
       exit (1);
     }
 
+  if (status == 'W' || status == 'X')
+    {
+      fprintf (stderr, "No inferior, GDBserver exiting.\n");
+      exit (1);
+    }
+
   while (1)
     {
       remote_open (argv[1]);