From: Daniel Jacobowitz Date: Wed, 3 Jan 2007 17:57:16 +0000 (+0000) Subject: * linux-low.c (linux_kill): Handle being called with no threads. X-Git-Tag: drow-reverse-20070409-branchpoint~943 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9d6063994fbb0f0ec4fb8005f18bc84768592368;p=external%2Fbinutils.git * linux-low.c (linux_kill): Handle being called with no threads. * win32-i386-low.c (win32_kill): Likewise. (get_child_debug_event): Clear current_process_handle. --- diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index d2b7d3b..2035473 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,4 +1,11 @@ -2006-12-30 Denis PILAT +2007-01-03 Denis Pilat + Daniel Jacobowitz + + * linux-low.c (linux_kill): Handle being called with no threads. + * win32-i386-low.c (win32_kill): Likewise. + (get_child_debug_event): Clear current_process_handle. + +2006-12-30 Denis PILAT Daniel Jacobowitz * remote-utils.c (remote_open): Check the type of specified diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 83a56aa..64273b5 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -255,13 +255,17 @@ static void linux_kill (void) { struct thread_info *thread = (struct thread_info *) all_threads.head; - struct process_info *process = get_thread_process (thread); + struct process_info *process; int wstat; + if (thread == NULL) + return; + for_each_inferior (&all_threads, linux_kill_one_process); /* See the comment in linux_kill_one_process. We did not kill the first thread in the list, so do so now. */ + process = get_thread_process (thread); do { ptrace (PTRACE_KILL, pid_of (process), 0, 0); diff --git a/gdb/gdbserver/win32-i386-low.c b/gdb/gdbserver/win32-i386-low.c index de6ef0b..ee2d2d1 100644 --- a/gdb/gdbserver/win32-i386-low.c +++ b/gdb/gdbserver/win32-i386-low.c @@ -582,6 +582,9 @@ win32_attach (unsigned long pid) static void win32_kill (void) { + if (current_process_handle == NULL) + return; + TerminateProcess (current_process_handle, 0); for (;;) { @@ -901,6 +904,7 @@ in: ourstatus->kind = TARGET_WAITKIND_EXITED; ourstatus->value.integer = current_event.u.ExitProcess.dwExitCode; CloseHandle (current_process_handle); + current_process_handle = NULL; retval = main_thread_id; break;