aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver/spu-low.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2007-05-10 21:05:15 +0000
committerPedro Alves <palves@redhat.com>2007-05-10 21:05:15 +0000
commit444d61395b63ff0474e8d150497ac709cf6702f6 (patch)
tree5cd2142151c86c22047df4e3095d3ba89bd96503 /gdb/gdbserver/spu-low.c
parent1d5315fee9335ecba7d345e41e451caa1d604114 (diff)
downloadgdb-444d61395b63ff0474e8d150497ac709cf6702f6.zip
gdb-444d61395b63ff0474e8d150497ac709cf6702f6.tar.gz
gdb-444d61395b63ff0474e8d150497ac709cf6702f6.tar.bz2
* target.h (target_ops): Change return type of detach to int.
Add join. (join_inferior): New. * server.c (main): Don't skip detach support on mingw32. If the inferior doesn't support detaching return error. Call join_inferior instead of using waitpid. * linux-low.c (linux_join): New. (linux_target_op): Add linux_join. * spu-low.c (spu_join): New. (spu_target_ops): Add spu_join. * win32-low.c (win32_detach): Adapt to new interface. Reopen current_process_handle before detaching. Issue a child resume before detaching. (win32_join): New. (win32_target_op): Add win32_join.
Diffstat (limited to 'gdb/gdbserver/spu-low.c')
-rw-r--r--gdb/gdbserver/spu-low.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gdb/gdbserver/spu-low.c b/gdb/gdbserver/spu-low.c
index 0d1c81a..5dbc811 100644
--- a/gdb/gdbserver/spu-low.c
+++ b/gdb/gdbserver/spu-low.c
@@ -320,6 +320,18 @@ spu_detach (void)
ptrace (PTRACE_DETACH, current_tid, 0, 0);
}
+static void
+spu_join (void)
+{
+ int status, ret;
+
+ do {
+ ret = waitpid (current_tid, &status, 0);
+ if (WIFEXITED (status) || WIFSIGNALED (status))
+ break;
+ } while (ret != -1 || errno != ECHILD);
+}
+
/* Return nonzero if the given thread is still alive. */
static int
spu_thread_alive (unsigned long tid)
@@ -567,6 +579,7 @@ static struct target_ops spu_target_ops = {
spu_attach,
spu_kill,
spu_detach,
+ spu_join,
spu_thread_alive,
spu_resume,
spu_wait,