aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <pedro@palves.net>2023-05-22 18:17:54 +0100
committerPedro Alves <pedro@palves.net>2024-05-10 11:26:00 +0100
commit41f9f2d609d128d6fc1414ad5c0dbcb74b019183 (patch)
tree503c924cb43f15ea3d21c21bb776fab516dc45dd
parent0c6b04823623a6bd121f8c4b80087fe204742b0b (diff)
downloadgdb-41f9f2d609d128d6fc1414ad5c0dbcb74b019183.zip
gdb-41f9f2d609d128d6fc1414ad5c0dbcb74b019183.tar.gz
gdb-41f9f2d609d128d6fc1414ad5c0dbcb74b019183.tar.bz2
Add backpointer from windows_thread_info to windows_process_info
The next patch will move some duplicated code in gdb and gdbserver to gdb/nat/windows-nat.c, where it would be convenient to get at the Windows process info of a given Windows thread info, from within a windows_thread_info method. I first thought of passing down the windows_process_info pointer as argument to the windows_thread_info method, but that looked a bit odd. I think it looks better to just add a back pointer, so that's what this patch does. The following patch will then add a use of it. I suspect this will help moving more duplicated code to gdb/nat/windows-nat.c in the future, too. Change-Id: I47fc0d3323be5b6f6fcfe912b768051a41910666
-rw-r--r--gdb/nat/windows-nat.h10
-rw-r--r--gdb/windows-nat.c2
-rw-r--r--gdbserver/win32-low.cc2
3 files changed, 10 insertions, 4 deletions
diff --git a/gdb/nat/windows-nat.h b/gdb/nat/windows-nat.h
index 86ad8d0..26b1eae 100644
--- a/gdb/nat/windows-nat.h
+++ b/gdb/nat/windows-nat.h
@@ -42,13 +42,16 @@ struct pending_stop
target_waitstatus status;
};
+struct windows_process_info;
/* Thread information structure used to track extra information about
each thread. */
struct windows_thread_info
{
- windows_thread_info (DWORD tid_, HANDLE h_, CORE_ADDR tlb)
- : tid (tid_),
+ windows_thread_info (windows_process_info *proc_,
+ DWORD tid_, HANDLE h_, CORE_ADDR tlb)
+ : proc (proc_),
+ tid (tid_),
h (h_),
thread_local_base (tlb)
{
@@ -67,6 +70,9 @@ struct windows_thread_info
the next call. */
const char *thread_name ();
+ /* The process this thread belongs to. */
+ windows_process_info *proc;
+
/* The Win32 thread identifier. */
DWORD tid;
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index 0064444..1608c47 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -613,7 +613,7 @@ windows_nat_target::add_thread (ptid_t ptid, HANDLE h, void *tlb,
if (windows_process.wow64_process)
base += 0x2000;
#endif
- th = new windows_thread_info (ptid.lwp (), h, base);
+ th = new windows_thread_info (&windows_process, ptid.lwp (), h, base);
windows_process.thread_list.emplace_back (th);
/* Add this new thread to the list of threads.
diff --git a/gdbserver/win32-low.cc b/gdbserver/win32-low.cc
index 5560091..985c6a0 100644
--- a/gdbserver/win32-low.cc
+++ b/gdbserver/win32-low.cc
@@ -167,7 +167,7 @@ child_add_thread (DWORD pid, DWORD tid, HANDLE h, void *tlb)
if (windows_process.wow64_process)
base += 2 * 4096; /* page size = 4096 */
#endif
- th = new windows_thread_info (tid, h, base);
+ th = new windows_thread_info (&windows_process, tid, h, base);
add_thread (ptid, th);