[4/8] gdb/dwarf: add dwo_file::find_tus
Checks
Commit Message
From: Simon Marchi <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
---
gdb/dwarf2/read.c | 18 ++++++++++++++----
gdb/dwarf2/read.h | 5 +++++
2 files changed, 19 insertions(+), 4 deletions(-)
@@ -266,6 +266,18 @@ struct loclists_rnglists_header
unsigned int offset_entry_count;
};
+/* See read.h. */
+
+dwo_unit *
+dwo_file::find_tu (ULONGEST signature) const
+{
+ auto it = this->tus.find (signature);
+ if (it == this->tus.end ())
+ return nullptr;
+
+ return it->get ();
+}
+
/* include/dwarf2.h defines the DWP section codes.
It defines a max value but it doesn't define a min value, which we
use for error checking, so provide one. */
@@ -2342,12 +2354,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 ())
{
@@ -585,6 +585,11 @@ 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;
+
/* 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