From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 4Z0lFpgu5mkOniwAWB0awg (envelope-from ) for ; Mon, 20 Apr 2026 09:48:08 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=jCHFFcQu; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 56DEB1E0BA; Mon, 20 Apr 2026 09:48:08 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 810481E067 for ; Mon, 20 Apr 2026 09:48:07 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 194094D108E9 for ; Mon, 20 Apr 2026 13:48:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 194094D108E9 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=jCHFFcQu Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by sourceware.org (Postfix) with ESMTPS id CB4624D108DE for ; Mon, 20 Apr 2026 13:46:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CB4624D108DE Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CB4624D108DE Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=192.198.163.10 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776692794; cv=none; b=Rdhfv/UFXPDGynWYy7aIMjm9IjxZ0tshMo9lm41l0BGmaOUMg9B35TAzmi8E2lMcBbbt1IfMCDcoqGJX4hx8OSuuJQ6Dg4jfrym/cK43rc7O0e+2zwY2Fh8kTYLTNGiMKwrc4AX+QQASDVNXelTVU9jI7GU8bMFAj6pGX3OkxQw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776692794; c=relaxed/simple; bh=F2Nt8h1IEV5YCvR2YyL1wlDF99ytHwdj9Z12TMTWbkk=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=bHczO+7kqo4+sgUpXW3LZFRq+tuMJ5/otapFSks61Kln7IUkm73WfQZpTWz5sZnqPL/BNTRs4Pck4cdN6ZUafzMekTm0stqW8kdIRxiC9xIEZ0DrI53/e8PlU+k76YZ/ndNn+5OkMIcznnAs8R0Kg6zoxRA3CCix26hcDEE+Jp8= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CB4624D108DE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1776692794; x=1808228794; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=F2Nt8h1IEV5YCvR2YyL1wlDF99ytHwdj9Z12TMTWbkk=; b=jCHFFcQu30sXKRFji29FbggaNm54l8mJ47VC+bCXHjigMIC5JuJtaeED xdKDBn2IIAq2r0XEUtLxieiNltig0jDWp5542ILWizvx8dh6YnPpcsUrd F1+d+7/raVNmCzBr+OElM8YmT9FF33OdV8h0OCTK12EzyJK/E3d0EAUkZ vvzEkjor/B0zTbWgujSoqgM8fWnakcOV+uU9Yp4DRx3Qx1XPoygFP9/QM MTIDTYRtz2OSkzVPSFQC8f2y4gkHEZyWAUjSJht/SxRMjUAVP19lpFl5T YwTIySOuSWw8ccLBWokXmayshS64mi9Q5sj0NE7NqjnZxQwWnv7H3V7qO Q==; X-CSE-ConnectionGUID: 4ngn9QnESDqQ89hmpGu8NA== X-CSE-MsgGUID: Yg6ReIo+QDmAy8/GpMlUXQ== X-IronPort-AV: E=McAfee;i="6800,10657,11762"; a="88984726" X-IronPort-AV: E=Sophos;i="6.23,189,1770624000"; d="scan'208";a="88984726" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Apr 2026 06:46:34 -0700 X-CSE-ConnectionGUID: pioP1ro4R6edr6cgUUzkVw== X-CSE-MsgGUID: 2F0M5d52RDWrVDVD3Z3CQw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,189,1770624000"; d="scan'208";a="236100118" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Apr 2026 06:46:33 -0700 From: Tankut Baris Aktemur To: gdb-patches@sourceware.org Subject: [PATCH v2 2/3] gdb, multi-target: pass a target argument to prune_threads Date: Mon, 20 Apr 2026 15:46:10 +0200 Message-Id: <20260420134611.4009838-2-tankut.baris.aktemur@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260420134611.4009838-1-tankut.baris.aktemur@intel.com> References: <20260420134611.4009838-1-tankut.baris.aktemur@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org The 'prune_threads' function is used by various targets; in one case in the 'create_inferior' method, in all other cases in 'update_thread_list'. This is an indication that the function should handle the threads that belong to the calling target and not mess with the threads of other targets. So, while iterating the threads, ignore those that do not belong to the current target. To do this, prune_threads is modified to take a process_stratum_target as a parameter. --- gdb/bsd-uthread.c | 2 +- gdb/fbsd-nat.c | 2 +- gdb/gdbthread.h | 5 +++-- gdb/gnu-nat.c | 2 +- gdb/obsd-nat.c | 2 +- gdb/procfs.c | 2 +- gdb/remote.c | 2 +- gdb/sol-thread.c | 2 +- gdb/thread.c | 6 ++++-- 9 files changed, 14 insertions(+), 11 deletions(-) diff --git a/gdb/bsd-uthread.c b/gdb/bsd-uthread.c index 0aa8ebda558..64a67cdfb8b 100644 --- a/gdb/bsd-uthread.c +++ b/gdb/bsd-uthread.c @@ -454,7 +454,7 @@ bsd_uthread_target::update_thread_list () int offset = bsd_uthread_thread_next_offset; CORE_ADDR addr; - prune_threads (); + prune_threads (current_inferior ()->process_target ()); addr = bsd_uthread_read_memory_address (bsd_uthread_thread_list_addr); while (addr != 0) diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c index 9e7965b900a..a1c7801ec1e 100644 --- a/gdb/fbsd-nat.c +++ b/gdb/fbsd-nat.c @@ -1006,7 +1006,7 @@ fbsd_nat_target::update_thread_list () list as events are reported, so just try deleting exited threads. */ delete_exited_threads (); #else - prune_threads (); + prune_threads (this); fbsd_add_threads (this, inferior_ptid.pid ()); #endif diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h index 3c568e29a04..fb1969e2f94 100644 --- a/gdb/gdbthread.h +++ b/gdb/gdbthread.h @@ -977,9 +977,10 @@ extern struct thread_info* inferior_thread (void); extern void update_thread_list (void); -/* Delete any thread the target says is no longer alive. */ +/* Delete any thread of TARGET that the target says is no longer + alive. */ -extern void prune_threads (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 diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c index 70685cee526..9f481ba7e8b 100644 --- a/gdb/gnu-nat.c +++ b/gdb/gnu-nat.c @@ -2146,7 +2146,7 @@ gnu_nat_target::create_inferior (const char *exec_file, inf->pending_execs = 0; /* Get rid of the old shell threads. */ - prune_threads (); + prune_threads (this); inf_validate_procinfo (inf); inf_update_signal_thread (inf); diff --git a/gdb/obsd-nat.c b/gdb/obsd-nat.c index e659434a1aa..a32a03bb042 100644 --- a/gdb/obsd-nat.c +++ b/gdb/obsd-nat.c @@ -48,7 +48,7 @@ obsd_nat_target::update_thread_list () pid_t pid = inferior_ptid.pid (); struct ptrace_thread_state pts; - prune_threads (); + prune_threads (this); if (ptrace (PT_GET_THREAD_FIRST, pid, (caddr_t)&pts, sizeof pts) == -1) perror_with_name (("ptrace")); diff --git a/gdb/procfs.c b/gdb/procfs.c index a208393da07..7472c10616e 100644 --- a/gdb/procfs.c +++ b/gdb/procfs.c @@ -2868,7 +2868,7 @@ procfs_target::update_thread_list () { procinfo *pi; - prune_threads (); + prune_threads (this); /* Find procinfo for main process. */ pi = find_procinfo_or_die (inferior_ptid.pid (), 0); diff --git a/gdb/remote.c b/gdb/remote.c index 7c8aed481f2..82a775a4fbb 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -4648,7 +4648,7 @@ remote_target::update_thread_list () each known thread is alive, one by one, with the T packet. If the target doesn't support threads at all, then this is a no-op. See remote_thread_alive. */ - prune_threads (); + prune_threads (this); } } diff --git a/gdb/sol-thread.c b/gdb/sol-thread.c index b5a68b9e46c..dc693c1854d 100644 --- a/gdb/sol-thread.c +++ b/gdb/sol-thread.c @@ -1012,7 +1012,7 @@ void sol_thread_target::update_thread_list () { /* Delete dead threads. */ - prune_threads (); + prune_threads (current_inferior ()->process_target ()); /* Find any new LWP's. */ beneath ()->update_thread_list (); diff --git a/gdb/thread.c b/gdb/thread.c index b47479b12e8..64c06dc87f6 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -761,11 +761,13 @@ switch_to_thread_if_alive (thread_info *thr) /* See gdbthreads.h. */ void -prune_threads (void) +prune_threads (process_stratum_target *target) { + gdb_assert (target != nullptr); + scoped_restore_current_thread restore_thread; - for (thread_info &tp : all_threads_safe ()) + for (thread_info &tp : all_threads_safe (target)) { switch_to_inferior_no_thread (tp.inf); -- 2.34.1 Intel Deutschland GmbH Registered Address: Dornacher Strasse 1, 85622 Feldkirchen, Germany Tel: +49 89 991 430, www.intel.de Managing Directors: Harry Demas, Jeffrey Schneiderman, Yin Chong Sorrell Chairperson of the Supervisory Board: Nicole Lau Registered Seat: Munich Commercial Register: Amtsgericht Muenchen HRB 186928