aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2020-02-25 17:39:45 -0500
committerSimon Marchi <simon.marchi@efficios.com>2020-05-12 15:24:50 -0400
commit6174efd6a4daba73b9a548658ffd71574c7079c4 (patch)
treee9c5360d6022bce333ade1137dc993f49c472aa9
parentd4ea1c4e01ffb02c4e748ec44605e99bf90fc464 (diff)
downloadgdb-6174efd6a4daba73b9a548658ffd71574c7079c4.zip
gdb-6174efd6a4daba73b9a548658ffd71574c7079c4.tar.gz
gdb-6174efd6a4daba73b9a548658ffd71574c7079c4.tar.bz2
Add dwarf2_per_objfile parameter to recursively_compute_inclusions
This allows removing dwarf2_per_cu_data::dwarf2_per_objfile references in recursively_compute_inclusions and compute_compunit_symtab_includes. gdb/ChangeLog: * dwarf2/read.c (recursively_compute_inclusions): Add dwarf2_per_objfile parameter. (compute_compunit_symtab_includes): Likewise. (process_cu_includes): Update.
-rw-r--r--gdb/dwarf2/read.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index 68e5d98..bf1bbe1 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -9591,7 +9591,8 @@ rust_union_quirks (struct dwarf2_cu *cu)
static void
recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
htab_t all_children, htab_t all_type_symtabs,
- struct dwarf2_per_cu_data *per_cu,
+ dwarf2_per_cu_data *per_cu,
+ dwarf2_per_objfile *per_objfile,
struct compunit_symtab *immediate_parent)
{
void **slot = htab_find_slot (all_children, per_cu, INSERT);
@@ -9604,7 +9605,7 @@ recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
*slot = per_cu;
/* Only add a CU if it has a symbol table. */
- compunit_symtab *cust = per_cu->dwarf2_per_objfile->get_symtab (per_cu);
+ compunit_symtab *cust = per_objfile->get_symtab (per_cu);
if (cust != NULL)
{
/* If this is a type unit only add its symbol table if we haven't
@@ -9632,7 +9633,8 @@ recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
{
recursively_compute_inclusions (result, all_children,
- all_type_symtabs, ptr, cust);
+ all_type_symtabs, ptr, per_objfile,
+ cust);
}
}
@@ -9640,7 +9642,8 @@ recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
PER_CU. */
static void
-compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
+compute_compunit_symtab_includes (dwarf2_per_cu_data *per_cu,
+ dwarf2_per_objfile *per_objfile)
{
gdb_assert (! per_cu->is_debug_types);
@@ -9649,7 +9652,7 @@ compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
int len;
std::vector<compunit_symtab *> result_symtabs;
htab_t all_children, all_type_symtabs;
- compunit_symtab *cust = per_cu->dwarf2_per_objfile->get_symtab (per_cu);
+ compunit_symtab *cust = per_objfile->get_symtab (per_cu);
/* If we don't have a symtab, we can just skip this case. */
if (cust == NULL)
@@ -9663,7 +9666,8 @@ compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
{
recursively_compute_inclusions (&result_symtabs, all_children,
- all_type_symtabs, ptr, cust);
+ all_type_symtabs, ptr, per_objfile,
+ cust);
}
/* Now we have a transitive closure of all the included symtabs. */
@@ -9689,7 +9693,7 @@ process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->per_bfd->just_read_cus)
{
if (! iter->is_debug_types)
- compute_compunit_symtab_includes (iter);
+ compute_compunit_symtab_includes (iter, dwarf2_per_objfile);
}
dwarf2_per_objfile->per_bfd->just_read_cus.clear ();