aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2021-06-18 15:36:40 -0600
committerTom Tromey <tom@tromey.com>2022-04-12 09:31:16 -0600
commitc0892a1d5dc29eb849e9aed0fb7c7dade6dffb23 (patch)
treea736bcd9482fedcc5ee53b52dafd62d04fb24267
parent4e9e4fcda5e820d770369824669d86d3fadcad04 (diff)
downloadgdb-c0892a1d5dc29eb849e9aed0fb7c7dade6dffb23.zip
gdb-c0892a1d5dc29eb849e9aed0fb7c7dade6dffb23.tar.gz
gdb-c0892a1d5dc29eb849e9aed0fb7c7dade6dffb23.tar.bz2
Refactor build_type_psymtabs_reader
The new DWARF scanner needs to save the entire cutu_reader object, not just parts of it. In order to make this possible, this patch refactors build_type_psymtabs_reader. This change is done separately because it is easy to review in isolation and it helps make the later patches smaller.
-rw-r--r--gdb/dwarf2/read.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index af9602d..a986d9a 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -1104,9 +1104,7 @@ static dwarf2_psymtab *create_partial_symtab
(dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile,
const char *name);
-static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
- const gdb_byte *info_ptr,
- struct die_info *type_unit_die);
+static void build_type_psymtabs_reader (cutu_reader *reader);
static void dwarf2_build_psymtabs_hard (dwarf2_per_objfile *per_objfile);
@@ -7162,8 +7160,7 @@ process_psymtab_comp_unit (dwarf2_per_cu_data *this_cu,
/* Nothing. */
}
else if (this_cu->is_debug_types)
- build_type_psymtabs_reader (&reader, reader.info_ptr,
- reader.comp_unit_die);
+ build_type_psymtabs_reader (&reader);
else if (want_partial_unit
|| reader.comp_unit_die->tag != DW_TAG_partial_unit)
process_psymtab_comp_unit_reader (&reader, reader.info_ptr,
@@ -7177,9 +7174,7 @@ process_psymtab_comp_unit (dwarf2_per_cu_data *this_cu,
/* Reader function for build_type_psymtabs. */
static void
-build_type_psymtabs_reader (const struct die_reader_specs *reader,
- const gdb_byte *info_ptr,
- struct die_info *type_unit_die)
+build_type_psymtabs_reader (cutu_reader *reader)
{
dwarf2_per_objfile *per_objfile = reader->cu->per_objfile;
struct dwarf2_cu *cu = reader->cu;
@@ -7190,6 +7185,8 @@ build_type_psymtabs_reader (const struct die_reader_specs *reader,
struct partial_die_info *first_die;
CORE_ADDR lowpc, highpc;
dwarf2_psymtab *pst;
+ const gdb_byte *info_ptr = reader->info_ptr;
+ struct die_info *type_unit_die = reader->comp_unit_die;
gdb_assert (per_cu->is_debug_types);
sig_type = (struct signatured_type *) per_cu;
@@ -7322,8 +7319,7 @@ build_type_psymtabs (dwarf2_per_objfile *per_objfile)
cutu_reader reader (tu.sig_type, per_objfile,
abbrev_table.get (), nullptr, false);
if (!reader.dummy_p)
- build_type_psymtabs_reader (&reader, reader.info_ptr,
- reader.comp_unit_die);
+ build_type_psymtabs_reader (&reader);
}
}
@@ -7411,8 +7407,7 @@ process_skeletonless_type_unit (void **slot, void *info)
/* This does the job that build_type_psymtabs would have done. */
cutu_reader reader (entry, per_objfile, nullptr, nullptr, false);
if (!reader.dummy_p)
- build_type_psymtabs_reader (&reader, reader.info_ptr,
- reader.comp_unit_die);
+ build_type_psymtabs_reader (&reader);
return 1;
}