This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[review] Use lwp, not tid, for Windows thread id
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/411
......................................................................
Use lwp, not tid, for Windows thread id
This changes windows-nat.c to put the Windows thread id into the "lwp"
field of ptid_t, not the "tid" field. This is done for two reasons.
First, ptid.h has this to say:
process_stratum targets that handle threading themselves should
prefer using the ptid.lwp field, leaving the ptid.tid field for any
thread_stratum target that might want to sit on top.
Second, this change brings gdb and gdbserver into sync here, which
makes sharing code simpler.
Change-Id: I57e8c08d07847327c5f7e86dbf13db03d94c0555
gdb/ChangeLog
2019-10-29 Tom Tromey <tromey@adacore.com>
* windows-nat.c (windows_add_thread, windows_delete_thread)
(windows_nat_target::fetch_registers)
(windows_nat_target::store_registers, fake_create_process)
(windows_nat_target::resume, windows_nat_target::resume)
(get_windows_debug_event, windows_nat_target::wait)
(windows_nat_target::pid_to_str)
(windows_nat_target::get_tib_address)
(windows_nat_target::get_ada_task_ptid)
(windows_nat_target::thread_name)
(windows_nat_target::thread_alive): Use lwp, not tid.
Change-Id: Ie0a0ffcc4b2e380ac13776af41fe7f03bb900940
---
M gdb/ChangeLog
M gdb/windows-nat.c
2 files changed, 40 insertions(+), 27 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 92f77fc..dd9983b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,18 @@
2019-10-29 Tom Tromey <tromey@adacore.com>
+ * windows-nat.c (windows_add_thread, windows_delete_thread)
+ (windows_nat_target::fetch_registers)
+ (windows_nat_target::store_registers, fake_create_process)
+ (windows_nat_target::resume, windows_nat_target::resume)
+ (get_windows_debug_event, windows_nat_target::wait)
+ (windows_nat_target::pid_to_str)
+ (windows_nat_target::get_tib_address)
+ (windows_nat_target::get_ada_task_ptid)
+ (windows_nat_target::thread_name)
+ (windows_nat_target::thread_alive): Use lwp, not tid.
+
+2019-10-29 Tom Tromey <tromey@adacore.com>
+
* windows-nat.c (handle_exception)
(windows_nat_target::thread_name): Update.
* nat/windows-nat.h (windows_thread_info): Remove destructor.
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index 12a69bb..b7c8ae5 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -422,9 +422,9 @@
windows_thread_info *th;
DWORD id;
- gdb_assert (ptid.tid () != 0);
+ gdb_assert (ptid.lwp () != 0);
- id = ptid.tid ();
+ id = ptid.lwp ();
if ((th = thread_rec (id, FALSE)))
return th;
@@ -486,9 +486,9 @@
{
DWORD id;
- gdb_assert (ptid.tid () != 0);
+ gdb_assert (ptid.lwp () != 0);
- id = ptid.tid ();
+ id = ptid.lwp ();
/* Emit a notification about the thread being deleted.
@@ -565,7 +565,7 @@
void
windows_nat_target::fetch_registers (struct regcache *regcache, int r)
{
- DWORD tid = regcache->ptid ().tid ();
+ DWORD tid = regcache->ptid ().lwp ();
windows_thread_info *th = thread_rec (tid, TRUE);
/* Check if TH exists. Windows sometimes uses a non-existent
@@ -635,7 +635,7 @@
void
windows_nat_target::store_registers (struct regcache *regcache, int r)
{
- DWORD tid = regcache->ptid ().tid ();
+ DWORD tid = regcache->ptid ().lwp ();
windows_thread_info *th = thread_rec (tid, TRUE);
/* Check if TH exists. Windows sometimes uses a non-existent
@@ -1363,8 +1363,8 @@
/* We can not debug anything in that case. */
}
current_thread
- = windows_add_thread (ptid_t (current_event.dwProcessId, 0,
- current_event.dwThreadId),
+ = windows_add_thread (ptid_t (current_event.dwProcessId,
+ current_event.dwThreadId, 0),
current_event.u.CreateThread.hThread,
current_event.u.CreateThread.lpThreadLocalBase,
true /* main_thread_p */);
@@ -1421,10 +1421,10 @@
last_sig = GDB_SIGNAL_0;
DEBUG_EXEC (("gdb: windows_resume (pid=%d, tid=0x%x, step=%d, sig=%d);\n",
- ptid.pid (), (unsigned) ptid.tid (), step, sig));
+ ptid.pid (), (unsigned) ptid.lwp (), step, sig));
/* Get context for currently selected thread. */
- th = thread_rec (inferior_ptid.tid (), FALSE);
+ th = thread_rec (inferior_ptid.lwp (), FALSE);
if (th)
{
if (step)
@@ -1458,7 +1458,7 @@
if (resume_all)
windows_continue (continue_status, -1, 0);
else
- windows_continue (continue_status, ptid.tid (), 0);
+ windows_continue (continue_status, ptid.lwp (), 0);
}
/* Ctrl-C handler used when the inferior is not run in the same console. The
@@ -1537,7 +1537,7 @@
/* Record the existence of this thread. */
thread_id = current_event.dwThreadId;
th = windows_add_thread
- (ptid_t (current_event.dwProcessId, 0, current_event.dwThreadId),
+ (ptid_t (current_event.dwProcessId, current_event.dwThreadId, 0),
current_event.u.CreateThread.hThread,
current_event.u.CreateThread.lpThreadLocalBase,
false /* main_thread_p */);
@@ -1549,8 +1549,8 @@
(unsigned) current_event.dwProcessId,
(unsigned) current_event.dwThreadId,
"EXIT_THREAD_DEBUG_EVENT"));
- windows_delete_thread (ptid_t (current_event.dwProcessId, 0,
- current_event.dwThreadId),
+ windows_delete_thread (ptid_t (current_event.dwProcessId,
+ current_event.dwThreadId, 0),
current_event.u.ExitThread.dwExitCode,
false /* main_thread_p */);
th = &dummy_thread_info;
@@ -1568,8 +1568,8 @@
current_process_handle = current_event.u.CreateProcessInfo.hProcess;
/* Add the main thread. */
th = windows_add_thread
- (ptid_t (current_event.dwProcessId, 0,
- current_event.dwThreadId),
+ (ptid_t (current_event.dwProcessId,
+ current_event.dwThreadId, 0),
current_event.u.CreateProcessInfo.hThread,
current_event.u.CreateProcessInfo.lpThreadLocalBase,
true /* main_thread_p */);
@@ -1590,8 +1590,8 @@
}
else if (saw_create == 1)
{
- windows_delete_thread (ptid_t (current_event.dwProcessId, 0,
- current_event.dwThreadId),
+ windows_delete_thread (ptid_t (current_event.dwProcessId,
+ current_event.dwThreadId, 0),
0, true /* main_thread_p */);
ourstatus->kind = TARGET_WAITKIND_EXITED;
ourstatus->value.integer = current_event.u.ExitProcess.dwExitCode;
@@ -1675,7 +1675,7 @@
}
else
{
- inferior_ptid = ptid_t (current_event.dwProcessId, 0, thread_id);
+ inferior_ptid = ptid_t (current_event.dwProcessId, thread_id, 0);
current_thread = th;
if (!current_thread)
current_thread = thread_rec (thread_id, TRUE);
@@ -1733,7 +1733,7 @@
SetConsoleCtrlHandler (&ctrl_c_handler, FALSE);
if (retval)
- return ptid_t (current_event.dwProcessId, 0, retval);
+ return ptid_t (current_event.dwProcessId, retval, 0);
else
{
int detach = 0;
@@ -2892,8 +2892,8 @@
std::string
windows_nat_target::pid_to_str (ptid_t ptid)
{
- if (ptid.tid () != 0)
- return string_printf ("Thread %d.0x%lx", ptid.pid (), ptid.tid ());
+ if (ptid.lwp () != 0)
+ return string_printf ("Thread %d.0x%lx", ptid.pid (), ptid.lwp ());
return normal_pid_to_str (ptid);
}
@@ -2978,7 +2978,7 @@
{
windows_thread_info *th;
- th = thread_rec (ptid.tid (), 0);
+ th = thread_rec (ptid.lwp (), 0);
if (th == NULL)
return false;
@@ -2991,7 +2991,7 @@
ptid_t
windows_nat_target::get_ada_task_ptid (long lwp, long thread)
{
- return ptid_t (inferior_ptid.pid (), 0, lwp);
+ return ptid_t (inferior_ptid.pid (), lwp, 0);
}
/* Implementation of the to_thread_name method. */
@@ -2999,7 +2999,7 @@
const char *
windows_nat_target::thread_name (struct thread_info *thr)
{
- return thread_rec (thr->ptid.tid (), 0)->name.get ();
+ return thread_rec (thr->ptid.lwp (), 0)->name.get ();
}
@@ -3159,8 +3159,8 @@
{
int tid;
- gdb_assert (ptid.tid () != 0);
- tid = ptid.tid ();
+ gdb_assert (ptid.lwp () != 0);
+ tid = ptid.lwp ();
return WaitForSingleObject (thread_rec (tid, FALSE)->h, 0) != WAIT_OBJECT_0;
}
--
Gerrit-Project: binutils-gdb
Gerrit-Branch: master
Gerrit-Change-Id: Ie0a0ffcc4b2e380ac13776af41fe7f03bb900940
Gerrit-Change-Number: 411
Gerrit-PatchSet: 1
Gerrit-Owner: Tom Tromey <tromey@sourceware.org>
Gerrit-MessageType: newchange