[binutils-gdb] gdb, multi-target: pass a target argument to delete_exited_threads

Tankut Baris Aktemur 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=9de228e0cb43af76a646ba13ea00de731de852fd

commit 9de228e0cb43af76a646ba13ea00de731de852fd
Author: Tankut Baris Aktemur <[email protected]>
Date:   Tue Apr 21 09:11:02 2026 +0200

    gdb, multi-target: pass a target argument to delete_exited_threads
    
    Similar to the parent commit, delete_exited_threads is also mostly
    used in the context of a particular target.  Pass that target as a
    parameter and skip other targets.
    
    There seems to be two cases where we actually would want to iterate
    all targets.  One use is in inferior_appeared (inferior.c) and the
    other is in thread_select (thread.c).  To handle these cases, allow
    the argument to be nullptr.
    
    Approved-By: Simon Marchi <[email protected]>

Diff:
---
 gdb/fbsd-nat.c   | 2 +-
 gdb/gdbthread.h  | 6 +++---
 gdb/inferior.c   | 2 +-
 gdb/linux-nat.c  | 2 +-
 gdb/netbsd-nat.c | 2 +-
 gdb/thread.c     | 6 +++---
 6 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c
index a1c7801ec1e..706d6efd342 100644
--- a/gdb/fbsd-nat.c
+++ b/gdb/fbsd-nat.c
@@ -1004,7 +1004,7 @@ fbsd_nat_target::update_thread_list ()
 #ifdef PT_LWP_EVENTS
   /* With support for thread events, threads are added/deleted from the
      list as events are reported, so just try deleting exited threads.  */
-  delete_exited_threads ();
+  delete_exited_threads (this);
 #else
   prune_threads (this);
 
diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h
index 1e3b42265aa..b3052b28d1a 100644
--- a/gdb/gdbthread.h
+++ b/gdb/gdbthread.h
@@ -983,9 +983,9 @@ extern void update_thread_list (void);
 extern void prune_threads (process_stratum_target *target);
 
 /* Delete threads marked THREAD_EXITED.  Unlike prune_threads, this
-   does not consult the target about whether the thread is alive right
-   now.  */
-extern void delete_exited_threads (void);
+   does not consult TARGET about whether the thread is alive right
+   now.  If TARGET is nullptr, operate on all targets.  */
+extern void delete_exited_threads (process_stratum_target *target);
 
 /* Return true if PC is in the stepping range of THREAD.  */
 
diff --git a/gdb/inferior.c b/gdb/inferior.c
index e050dec402e..1481f46cdd1 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -368,7 +368,7 @@ inferior_appeared (struct inferior *inf, int pid)
 {
   /* If this is the first inferior with threads, reset the global
      thread id.  */
-  delete_exited_threads ();
+  delete_exited_threads (nullptr);
   if (!any_thread_p ())
     init_thread_list ();
 
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index 6018d6c9914..d7d5e010748 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -3967,7 +3967,7 @@ linux_nat_target::update_thread_list ()
   /* We add/delete threads from the list as clone/exit events are
      processed, so just try deleting exited threads still in the
      thread list.  */
-  delete_exited_threads ();
+  delete_exited_threads (this);
 
   /* Update the processor core that each lwp/thread was last seen
      running on.  */
diff --git a/gdb/netbsd-nat.c b/gdb/netbsd-nat.c
index 6b9029bf0ef..36bd91f968c 100644
--- a/gdb/netbsd-nat.c
+++ b/gdb/netbsd-nat.c
@@ -155,7 +155,7 @@ nbsd_nat_target::post_attach (int pid)
 void
 nbsd_nat_target::update_thread_list ()
 {
-  delete_exited_threads ();
+  delete_exited_threads (this);
 }
 
 /* Convert PTID to a string.  */
diff --git a/gdb/thread.c b/gdb/thread.c
index 64c06dc87f6..74124596b28 100644
--- a/gdb/thread.c
+++ b/gdb/thread.c
@@ -779,9 +779,9 @@ prune_threads (process_stratum_target *target)
 /* See gdbthreads.h.  */
 
 void
-delete_exited_threads (void)
+delete_exited_threads (process_stratum_target *target)
 {
-  for (thread_info &tp : all_threads_safe ())
+  for (thread_info &tp : all_threads_safe (target))
     if (tp.state () == THREAD_EXITED)
       delete_thread (&tp);
 }
@@ -2112,7 +2112,7 @@ thread_select (const char *tidstr, thread_info *tp)
 
   /* Since the current thread may have changed, see if there is any
      exited thread we can now delete.  */
-  delete_exited_threads ();
+  delete_exited_threads (nullptr);
 }
 
 /* Print thread and frame switch command response.  */
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.