From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 581wOOCgCmh30wMAWB0awg (envelope-from ) for ; Thu, 24 Apr 2025 16:36:48 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=polymtl.ca header.i=@polymtl.ca header.a=rsa-sha256 header.s=default header.b=t0BrW8DN; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id D4DAD1E0C3; Thu, 24 Apr 2025 16:36:48 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=unavailable autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (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 170F81E089 for ; Thu, 24 Apr 2025 16:36:46 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 89FC23858D37 for ; Thu, 24 Apr 2025 20:36:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 89FC23858D37 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=polymtl.ca header.i=@polymtl.ca header.a=rsa-sha256 header.s=default header.b=t0BrW8DN Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id BFA4D3858D26 for ; Thu, 24 Apr 2025 20:36:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BFA4D3858D26 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=polymtl.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=polymtl.ca ARC-Filter: OpenARC Filter v1.0.0 sourceware.org BFA4D3858D26 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=132.207.4.11 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1745526974; cv=none; b=UuYsF5j9HK0hUX6cWWCmSw5JwDkkP+R06ooSU/+QtH1X2E45rUuYLQYCipW/Sy+7ij29EhxsVyFkRgr5mUlwogPCrSDxoNai5zjMotiX4bR3eFFcD6taAjp9XBkQR5U8MMpPjTZi/Ytc0r3VWdYOfNj8dc6HxxPLpPYPCJwW+A8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1745526974; c=relaxed/simple; bh=i98K2aUHmWPt4KrzjpDmTVGfDTX81WXEhD1q29fyKHg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=UYdZE5RfIO18zhv2+LSQVzVEFzH6KEGadmDz2j4YgzfAmOHNKP87Pc6TFTwl4/UVl1mMfrA0xP8HNIofm766Omjct1PVpyXGpexhQo4ooQRkleyBB2gqDw4mI/2z2kPZ/lGRUupqUwjvyzaIbuBZQSyvsig4jVtQHeWWdCyqUsQ= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BFA4D3858D26 Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 53OKa9fB168216 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 24 Apr 2025 16:36:14 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 53OKa9fB168216 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=polymtl.ca; s=default; t=1745526974; bh=Kl5WKwn41Kr90BvBgqjW98KYA+sydm4L8qVSRrdENew=; h=From:To:Cc:Subject:Date:From; b=t0BrW8DNvXu/MaXdlj0VgDdttZLLLmw86ttg+a/K9nfGUsMYTQpnWR3KvvkWO/dBm 9k5cyK1QklESx1BgUAsrv8AVNMDMZw66Fn23M9Jb0bTS+MNrrBmLNvlotc0A4VD41f zPmU68/mggAb0gXmUBWENfi8fk1WBT8ovTJtMoiI= Received: by simark.ca (Postfix, from userid 112) id 6C8941E0C3; Thu, 24 Apr 2025 16:36:09 -0400 (EDT) Received: from simark.localdomain (modemcable238.237-201-24.mc.videotron.ca [24.201.237.238]) (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 ESMTPSA id 19AA31E089; Thu, 24 Apr 2025 16:36:04 -0400 (EDT) From: simon.marchi@polymtl.ca To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH] gdb/dwarf: add dwarf2_cu::find_die method Date: Thu, 24 Apr 2025 16:36:02 -0400 Message-ID: <20250424203604.2351201-1-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Thu, 24 Apr 2025 20:36:09 +0000 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 From: Simon Marchi I added this small helper method in the series I'm writing, to make finding a DIE by section offset a bit nicer than using the unordered_set methods. It doesn't have any dependencies, so I thought I would submit it on its own. Change-Id: If7313194ab09d9bd6d6a52c24eb6fd9a9c1b76e0 --- gdb/dwarf2/cu.h | 9 +++++++++ gdb/dwarf2/read.c | 9 ++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/gdb/dwarf2/cu.h b/gdb/dwarf2/cu.h index 5683291fbcfe..6eda19b80a61 100644 --- a/gdb/dwarf2/cu.h +++ b/gdb/dwarf2/cu.h @@ -99,6 +99,15 @@ struct dwarf2_cu void add_dependence (dwarf2_per_cu *ref_per_cu) { m_dependencies.emplace (ref_per_cu); } + /* Find the DIE at section offset SECT_OFF. + + Return nullptr if not found. */ + die_info *find_die (sect_offset sect_off) const + { + auto it = die_hash.find (sect_off); + return it != die_hash.end () ? *it : nullptr; + } + /* The header of the compilation unit. */ struct comp_unit_head header; diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 2523ca869598..6b7f2c784768 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -18260,8 +18260,7 @@ follow_die_offset (sect_offset sect_off, int offset_in_dwz, *ref_cu = target_cu; - auto it = target_cu->die_hash.find (sect_off); - return it != target_cu->die_hash.end () ? *it : nullptr; + return target_cu->find_die (sect_off); } /* Follow reference attribute ATTR of SRC_DIE. @@ -18629,8 +18628,8 @@ follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type, gdb_assert (sig_cu != NULL); gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0); - if (auto die_it = sig_cu->die_hash.find (sig_type->type_offset_in_section); - die_it != sig_cu->die_hash.end ()) + if (die_info *die = sig_cu->find_die (sig_type->type_offset_in_section); + die != nullptr) { /* For .gdb_index version 7 keep track of included TUs. http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */ @@ -18639,7 +18638,7 @@ follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type, (*ref_cu)->per_cu->imported_symtabs.push_back (sig_cu->per_cu); *ref_cu = sig_cu; - return *die_it; + return die; } return NULL; base-commit: 876c853cb99cd9c097fa915c8d00bf6b9d7c5904 -- 2.49.0