From: Ulrich Weigand Date: Tue, 29 Sep 2009 00:39:01 +0000 (+0000) Subject: * spu-low.c (spu_kill): Wait for inferior to terminate. X-Git-Tag: gdb_7_0-2009-10-06-release~33 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9b907669f92e216924dd4074f8f352b6f777de6c;p=thirdparty%2Fbinutils-gdb.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 19162a7ac6f..6adede6ec3e 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,9 @@ +2009-09-28 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 89d80c25918..ed3bdca13dd 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; }