OSDN Git Service

* spu-low.c (spu_kill): Wait for inferior to terminate.
authorUlrich Weigand <uweigand@de.ibm.com>
Tue, 29 Sep 2009 00:39:01 +0000 (00:39 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Tue, 29 Sep 2009 00:39:01 +0000 (00:39 +0000)
Call clear_inferiors.
(spu_detach): Call clear_inferiors.

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

index 19162a7..6adede6 100644 (file)
@@ -1,3 +1,9 @@
+2009-09-28  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 89d80c2..ed3bdca 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;
 }