[binutils-gdb] Add backpointer from windows_thread_info to windows_process_info

Pedro Alves via Gdb-cvs <[email protected]>
Newsgroups gmane.comp.gdb.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=fcff9da0d5c4c03960bf9f4be9e3ccf387c8e5f4

commit fcff9da0d5c4c03960bf9f4be9e3ccf387c8e5f4
Author: Pedro Alves <[email protected]>
Date:   Fri Aug 30 16:02:21 2024 +0100

    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.
    
    Approved-By: Tom Tromey <[email protected]>
    Change-Id: I47fc0d3323be5b6f6fcfe912b768051a41910666

Diff:
---
 gdb/nat/windows-nat.h  | 10 ++++++++--
 gdb/windows-nat.c      |  2 +-
 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 152410580f0..59662c3570c 100644
--- a/gdb/nat/windows-nat.h
+++ b/gdb/nat/windows-nat.h
@@ -48,13 +48,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)
   {
@@ -73,6 +76,9 @@ struct windows_thread_info
      the next call.  */
   const char *thread_name ();
 
+  /* The process this thread belongs to.  */
+  windows_process_info *const proc;
+
   /* The Win32 thread identifier.  */
   DWORD tid;
 
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index 1593524f900..143a5e487fd 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -322,7 +322,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 cc4a63319ef..bf3490542e2 100644
--- a/gdbserver/win32-low.cc
+++ b/gdbserver/win32-low.cc
@@ -144,7 +144,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);
 
   find_process_pid (pid)->add_thread (ptid, th);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.