* spu-low.c (spu_kill): Wait for inferior to terminate.
authorUlrich Weigand <uweigand@de.ibm.com>
Sun, 27 Sep 2009 20:45:20 +0000 (20:45 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Sun, 27 Sep 2009 20:45:20 +0000 (20:45 +0000)
Call clear_inferiors.
(spu_detach): Call clear_inferiors.

gdb/gdbserver/ChangeLog
gdb/gdbserver/spu-low.c

index 19162a7ac6f2b59c2dc7655a861b15005754786f..a85f26b659a71d9102303c5af0053901e76b236a 100644 (file)
@@ -1,3 +1,9 @@
+2009-09-27  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * spu-low.c (spu_kill): Wait for inferior to terminate.
+       Call clear_inferiors.
+       (spu_detach): Call clear_inferiors.
+
 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        * aclocal.m4: Regenerate.
index 89d80c259187f2d2e6746b3fb3c9afe9cb53a230..ed3bdca13ddadd3b2579a9abc92ff532858699ea 100644 (file)
@@ -321,11 +321,20 @@ spu_attach (unsigned long  pid)
 static int
 spu_kill (int pid)
 {
+  int status, ret;
   struct process_info *process = find_process_pid (pid);
   if (process == NULL)
     return -1;
 
   ptrace (PTRACE_KILL, pid, 0, 0);
+
+  do {
+    ret = waitpid (pid, &status, 0);
+    if (WIFEXITED (status) || WIFSIGNALED (status))
+      break;
+  } while (ret != -1 || errno != ECHILD);
+
+  clear_inferiors ();
   remove_process (process);
   return 0;
 }
@@ -339,6 +348,8 @@ spu_detach (int pid)
     return -1;
 
   ptrace (PTRACE_DETACH, pid, 0, 0);
+
+  clear_inferiors ();
   remove_process (process);
   return 0;
 }