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.

Change-Id: I1ee7f8dfc07b39763985e6764e8ce04dcc943ec5
This commit is contained in:
Simon Marchi 2020-05-27 11:13:58 -04:00
parent 7aa104c423
commit 43182c09c6
2 changed files with 18 additions and 7 deletions

View File

@ -1,3 +1,10 @@
2020-05-27 Simon Marchi <simon.marchi@efficios.com>
* dwarf2/read.c (recursively_compute_inclusions): Add
dwarf2_per_objfile parameter.
(compute_compunit_symtab_includes): Likewise.
(process_cu_includes): Update.
2020-05-27 Simon Marchi <simon.marchi@efficios.com>
* dwarf2/read.c (create_partial_symtab): Add dwarf2_per_objfile

View File

@ -9629,7 +9629,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);
@ -9642,7 +9643,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
@ -9670,7 +9671,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);
}
}
@ -9678,7 +9680,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);
@ -9687,7 +9690,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)
@ -9701,7 +9704,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. */
@ -9727,7 +9731,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 ();