From: simon.marchi@polymtl.ca
To: gdb-patches@sourceware.org
Cc: Simon Marchi <simon.marchi@polymtl.ca>
Subject: [PATCH] gdb/dwarf: make dwarf2_per_bfd::get_unit return a reference
Date: Wed, 20 May 2026 14:15:39 -0400 [thread overview]
Message-ID: <20260520181610.4066987-1-simon.marchi@polymtl.ca> (raw)
From: Simon Marchi <simon.marchi@polymtl.ca>
This method can't return nullptr, switch it to return a reference.
Change all_units_iterator::operator* too.
Change-Id: I15c945553abfebdcc8834438a3b45d9895d628f0
---
gdb/dwarf2/read.c | 26 +++++++++++++-------------
gdb/dwarf2/read.h | 6 +++---
2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index f8ade564b0ba..911cabc07993 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -1727,9 +1727,9 @@ dwarf2_base_index_functions::print_stats (struct objfile *objfile,
for (int i = 0; i < total; ++i)
{
- dwarf2_per_cu *per_cu = per_objfile->per_bfd->get_unit (i);
+ dwarf2_per_cu &per_cu = per_objfile->per_bfd->get_unit (i);
- if (!per_objfile->compunit_symtab_set_p (per_cu))
+ if (!per_objfile->compunit_symtab_set_p (&per_cu))
++count;
}
gdb_printf (_(" Number of read units: %d\n"), total - count);
@@ -1743,7 +1743,7 @@ dwarf2_base_index_functions::expand_all_symtabs (struct objfile *objfile)
{
dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
- for (dwarf2_per_cu *per_cu : all_units_range (per_objfile->per_bfd))
+ for (dwarf2_per_cu &per_cu : all_units_range (per_objfile->per_bfd))
{
/* If a .debug_names index contains a foreign TU but no index entry
references it, the TU won't have a hint CU. This is a problem, because
@@ -1753,7 +1753,7 @@ dwarf2_base_index_functions::expand_all_symtabs (struct objfile *objfile)
are unlikely to contain anything interesting, symbol-wise.
- They are likely to be referred to by some other unit (otherwise,
why does it exist?), so will get expanded anyway. */
- if (signatured_type *sig_type = per_cu->as_signatured_type ();
+ if (signatured_type *sig_type = per_cu.as_signatured_type ();
(sig_type != nullptr
&& sig_type->section () == nullptr
&& sig_type->hint_per_cu == nullptr))
@@ -1764,7 +1764,7 @@ dwarf2_base_index_functions::expand_all_symtabs (struct objfile *objfile)
be triggered later on. See PR symtab/23010. So, tell
dw2_instantiate_symtab to skip partial CUs -- any important
partial CU will be read via DW_TAG_imported_unit anyway. */
- dw2_instantiate_symtab (per_cu, per_objfile, true);
+ dw2_instantiate_symtab (&per_cu, per_objfile, true);
}
}
@@ -1983,16 +1983,16 @@ dwarf2_base_index_functions::map_symbol_filenames (objfile *objfile,
}
}
- for (dwarf2_per_cu *per_cu : all_units_range (per_objfile->per_bfd))
+ for (dwarf2_per_cu &per_cu : all_units_range (per_objfile->per_bfd))
{
/* We only need to look at symtabs not already expanded. */
- if (per_cu->is_debug_types ()
- || per_objfile->compunit_symtab_set_p (per_cu))
+ if (per_cu.is_debug_types ()
+ || per_objfile->compunit_symtab_set_p (&per_cu))
continue;
- if (per_cu->fnd != nullptr)
+ if (per_cu.fnd != nullptr)
{
- file_and_directory *fnd = per_cu->fnd.get ();
+ file_and_directory *fnd = per_cu.fnd.get ();
const char *filename = fnd->get_name ();
const char *key = filename;
@@ -2008,7 +2008,7 @@ dwarf2_base_index_functions::map_symbol_filenames (objfile *objfile,
fun (filename, fullname);
}
- quick_file_names *file_data = dw2_get_file_names (per_cu, per_objfile);
+ quick_file_names *file_data = dw2_get_file_names (&per_cu, per_objfile);
if (file_data == nullptr
|| qfn_cache.find (file_data) != qfn_cache.end ())
continue;
@@ -13887,11 +13887,11 @@ cooked_index_functions::search
gdb_assert (lookup_name != nullptr || symbol_matcher == nullptr);
if (lookup_name == nullptr)
{
- for (dwarf2_per_cu *per_cu : all_units_range (per_objfile->per_bfd))
+ for (dwarf2_per_cu &per_cu : all_units_range (per_objfile->per_bfd))
{
QUIT;
- if (search_one (per_cu, per_objfile, cus_to_skip, compunit_callback,
+ if (search_one (&per_cu, per_objfile, cus_to_skip, compunit_callback,
lang_matcher)
== iteration_status::stop)
return iteration_status::stop;
diff --git a/gdb/dwarf2/read.h b/gdb/dwarf2/read.h
index 12dc6224d8c0..327b6eb421a1 100644
--- a/gdb/dwarf2/read.h
+++ b/gdb/dwarf2/read.h
@@ -591,9 +591,9 @@ struct dwarf2_per_bfd
{ return bfd_get_filename (this->obfd); }
/* Return the unit given its index. */
- dwarf2_per_cu *get_unit (int index) const
+ dwarf2_per_cu &get_unit (int index) const
{
- return this->all_units[index].get ();
+ return *this->all_units[index];
}
/* Ensure that the all_units vector is in the expected order for
@@ -802,7 +802,7 @@ class all_units_iterator
return *this;
}
- dwarf2_per_cu *operator* () const
+ dwarf2_per_cu &operator* () const
{
return m_per_bfd->get_unit (m_index);
}
base-commit: ba415df8ba3817ab6eb5c9ec441ed2d979abe3b1
--
2.54.0
next reply other threads:[~2026-05-20 18:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-20 18:15 simon.marchi [this message]
2026-05-21 14:14 ` Tom Tromey
2026-05-21 17:48 ` 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=20260520181610.4066987-1-simon.marchi@polymtl.ca \
--to=simon.marchi@polymtl.ca \
--cc=gdb-patches@sourceware.org \
/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