diff options
author | Pedro Alves <pedro@palves.net> | 2023-05-22 18:17:54 +0100 |
---|---|---|
committer | Pedro Alves <pedro@palves.net> | 2024-05-10 11:26:00 +0100 |
commit | 41f9f2d609d128d6fc1414ad5c0dbcb74b019183 (patch) | |
tree | 503c924cb43f15ea3d21c21bb776fab516dc45dd | |
parent | 0c6b04823623a6bd121f8c4b80087fe204742b0b (diff) | |
download | gdb-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.h | 10 | ||||
-rw-r--r-- | gdb/windows-nat.c | 2 | ||||
-rw-r--r-- | gdbserver/win32-low.cc | 2 |
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); |