aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2013-05-04 13:36:18 +0000
committerEli Zaretskii <eliz@gnu.org>2013-05-04 13:36:18 +0000
commite0ea48a0d7d1f20f2e40252119e0b8536785c28b (patch)
treee5916faaa1fee7a868995105c77e801e4fcc993a
parent2a0388c71ce369025fb0e6b9709539ca737837ee (diff)
downloadgdb-e0ea48a0d7d1f20f2e40252119e0b8536785c28b.zip
gdb-e0ea48a0d7d1f20f2e40252119e0b8536785c28b.tar.gz
gdb-e0ea48a0d7d1f20f2e40252119e0b8536785c28b.tar.bz2
Announce thread death on MS-Windows.
* windows-nat.c (windows_delete_thread): Accept an additional argument, the thread's exit code, and announce thread death when print_thread_events is non-zero and we are deleting a thread that is not the main thread. (get_windows_debug_event): Pass thread exit code to windows_delete_thread.
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/windows-nat.c11
2 files changed, 17 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ceaf838..44d028e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2013-05-04 Eli Zaretskii <eliz@gnu.org>
+
+ * windows-nat.c (windows_delete_thread): Accept an additional
+ argument, the thread's exit code, and announce thread death when
+ print_thread_events is non-zero and we are deleting a thread that
+ is not the main thread.
+ (get_windows_debug_event): Pass thread exit code to
+ windows_delete_thread.
+
2013-05-03 Kevin Buettner <kevinb@redhat.com>
* v850-tdep.c (elf-bfd.h, elf/v850.h): Include.
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index c44314b..7eec2cf 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -386,7 +386,7 @@ windows_init_thread_list (void)
/* Delete a thread from the list of threads. */
static void
-windows_delete_thread (ptid_t ptid)
+windows_delete_thread (ptid_t ptid, DWORD exit_code)
{
thread_info *th;
DWORD id;
@@ -397,6 +397,9 @@ windows_delete_thread (ptid_t ptid)
if (info_verbose)
printf_unfiltered ("[Deleting %s]\n", target_pid_to_str (ptid));
+ else if (print_thread_events && id != main_thread_id)
+ printf_unfiltered (_("[%s exited with code %u]\n"),
+ target_pid_to_str (ptid), (unsigned)exit_code);
delete_thread (ptid);
for (th = &thread_head;
@@ -1498,7 +1501,8 @@ get_windows_debug_event (struct target_ops *ops,
if (current_event.dwThreadId != main_thread_id)
{
windows_delete_thread (ptid_build (current_event.dwProcessId, 0,
- current_event.dwThreadId));
+ current_event.dwThreadId),
+ current_event.u.ExitThread.dwExitCode);
th = &dummy_thread_info;
}
break;
@@ -1515,7 +1519,8 @@ get_windows_debug_event (struct target_ops *ops,
current_process_handle = current_event.u.CreateProcessInfo.hProcess;
if (main_thread_id)
windows_delete_thread (ptid_build (current_event.dwProcessId, 0,
- main_thread_id));
+ main_thread_id),
+ 0);
main_thread_id = current_event.dwThreadId;
/* Add the main thread. */
th = windows_add_thread (ptid_build (current_event.dwProcessId, 0,