From: Ulrich Weigand Date: Sun, 27 Sep 2009 20:45:20 +0000 (+0000) Subject: * spu-low.c (spu_kill): Wait for inferior to terminate. X-Git-Tag: sid-snapshot-20091001~46 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4168d2d6169a4a7160c9abd01253ba2620c717c2;p=external%2Fbinutils.git * spu-low.c (spu_kill): Wait for inferior to terminate. Call clear_inferiors. (spu_detach): Call clear_inferiors. --- diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 19162a7..a85f26b 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,9 @@ +2009-09-27 Ulrich Weigand + + * spu-low.c (spu_kill): Wait for inferior to terminate. + Call clear_inferiors. + (spu_detach): Call clear_inferiors. + 2009-08-22 Ralf Wildenhues * aclocal.m4: Regenerate. diff --git a/gdb/gdbserver/spu-low.c b/gdb/gdbserver/spu-low.c index 89d80c2..ed3bdca 100644 --- a/gdb/gdbserver/spu-low.c +++ b/gdb/gdbserver/spu-low.c @@ -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; }