From: Simon Marchi <simon.marchi@efficios.com>
To: gdb-patches@sourceware.org
Cc: Simon Marchi <simon.marchi@efficios.com>, Tom Tromey <tom@tromey.com>
Subject: [PATCH v3 3/7] gdb/dwarf: add dwo_file::find_tus
Date: Mon, 11 May 2026 11:40:29 -0400 [thread overview]
Message-ID: <20260511154053.142576-4-simon.marchi@efficios.com> (raw)
In-Reply-To: <20260511154053.142576-1-simon.marchi@efficios.com>
Add this little helper to make finding a TU a bit simpler. I always
find the STL way of doing things cryptic, so I think that hiding it in
small helper methods makes the code clearer.
A subsequent patch will add more uses of it
Change-Id: Ibfb20d0e44c65d2ff729f3e0980ec4435f223aef
Approved-By: Tom Tromey <tom@tromey.com>
---
gdb/dwarf2/dwo.h | 11 +++++++++++
gdb/dwarf2/read.c | 6 ++----
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/gdb/dwarf2/dwo.h b/gdb/dwarf2/dwo.h
index 025932b1e969..47d7bdde7925 100644
--- a/gdb/dwarf2/dwo.h
+++ b/gdb/dwarf2/dwo.h
@@ -121,6 +121,17 @@ struct dwo_file
dwo_file () = default;
DISABLE_COPY_AND_ASSIGN (dwo_file);
+ /* Look for a type unit with signature SIGNATURE in this dwo_file.
+
+ Return nullptr if not found. */
+ dwo_unit *find_tu (ULONGEST signature) const
+ {
+ if (auto it = this->tus.find (signature); it != this->tus.end ())
+ return it->get ();
+
+ return nullptr;
+ }
+
/* The DW_AT_GNU_dwo_name or DW_AT_dwo_name attribute.
For virtual DWO files the name is constructed from the section offsets
of abbrev,line,loc,str_offsets so that we combine virtual DWO files
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index 4d797b0e29b9..9cb7b83cc339 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -2311,12 +2311,10 @@ lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
/* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
dwo_unit of the TU itself. */
dwo_file *dwo_file = cu->dwo_unit->dwo_file;
- auto it = dwo_file->tus.find (sig);
- if (it == dwo_file->tus.end ())
+ dwo_unit *dwo_entry = dwo_file->find_tu (sig);
+ if (dwo_entry == nullptr)
return nullptr;
- dwo_unit *dwo_entry = it->get ();
-
/* If the global table doesn't have an entry for this TU, add one. */
if (sig_type_it == per_bfd->signatured_types.end ())
{
--
2.54.0
next prev parent reply other threads:[~2026-05-11 15:41 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-11 15:40 [PATCH v3 0/7] Handle foreign type units in .debug_names Simon Marchi
2026-05-11 15:40 ` [PATCH v3 1/7] gdb/dwarf: move dwo_unit and dwo_file to dwo.h Simon Marchi
2026-05-13 15:18 ` Tom Tromey
2026-05-13 17:30 ` Simon Marchi
2026-05-11 15:40 ` [PATCH v3 2/7] gdb/dwarf: move dwarf2_cu::section to cu.c Simon Marchi
2026-05-11 15:40 ` Simon Marchi [this message]
2026-05-11 15:40 ` [PATCH v3 4/7] gdb/dwarf: generate foreign type units in .debug_names Simon Marchi
2026-05-11 15:40 ` [PATCH v3 5/7] gdb/dwarf: add debug output in read-debug-names.c Simon Marchi
2026-05-11 15:40 ` [PATCH v3 6/7] gdb/dwarf: add more context to complaints in mapped_debug_names_reader::scan_one_entry Simon Marchi
2026-05-11 15:40 ` [PATCH v3 7/7] gdb/dwarf: read foreign type units Simon Marchi
2026-05-19 19:42 ` Guinevere Larsen
2026-05-19 20:10 ` Simon Marchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260511154053.142576-4-simon.marchi@efficios.com \
--to=simon.marchi@efficios.com \
--cc=gdb-patches@sourceware.org \
--cc=tom@tromey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox