Change dwarf2_per_objfile::die_type_hash to htab_up
This changes dwarf2_per_objfile::die_type_hash to be an htab_up, moving its contents off the objfile obstack. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (set_die_type, get_die_type_at_offset): Update. * dwarf2/read.h (struct dwarf2_per_objfile) <die_type_hash>: Now htab_up. Change-Id: Ic651f99ebf71bf7ad2dc2880192adacf7b60964a
This commit is contained in:
parent
48b490f28a
commit
0335378b4c
|
@ -1,3 +1,9 @@
|
|||
2020-02-08 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* dwarf2/read.c (set_die_type, get_die_type_at_offset): Update.
|
||||
* dwarf2/read.h (struct dwarf2_per_objfile) <die_type_hash>: Now
|
||||
htab_up.
|
||||
|
||||
2020-02-08 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* dwarf2/read.c (struct dwp_file) <loaded_cus, loaded_tus>: Now
|
||||
|
|
|
@ -25184,22 +25184,17 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
|||
add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
|
||||
|
||||
if (dwarf2_per_objfile->die_type_hash == NULL)
|
||||
{
|
||||
dwarf2_per_objfile->die_type_hash =
|
||||
htab_create_alloc_ex (127,
|
||||
per_cu_offset_and_type_hash,
|
||||
per_cu_offset_and_type_eq,
|
||||
NULL,
|
||||
&objfile->objfile_obstack,
|
||||
hashtab_obstack_allocate,
|
||||
dummy_obstack_deallocate);
|
||||
}
|
||||
dwarf2_per_objfile->die_type_hash
|
||||
= htab_up (htab_create_alloc (127,
|
||||
per_cu_offset_and_type_hash,
|
||||
per_cu_offset_and_type_eq,
|
||||
NULL, xcalloc, xfree));
|
||||
|
||||
ofs.per_cu = cu->per_cu;
|
||||
ofs.sect_off = die->sect_off;
|
||||
ofs.type = type;
|
||||
slot = (struct dwarf2_per_cu_offset_and_type **)
|
||||
htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
|
||||
htab_find_slot (dwarf2_per_objfile->die_type_hash.get (), &ofs, INSERT);
|
||||
if (*slot)
|
||||
complaint (_("A problem internal to GDB: DIE %s has type already set"),
|
||||
sect_offset_str (die->sect_off));
|
||||
|
@ -25225,7 +25220,7 @@ get_die_type_at_offset (sect_offset sect_off,
|
|||
ofs.per_cu = per_cu;
|
||||
ofs.sect_off = sect_off;
|
||||
slot = ((struct dwarf2_per_cu_offset_and_type *)
|
||||
htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
|
||||
htab_find (dwarf2_per_objfile->die_type_hash.get (), &ofs));
|
||||
if (slot)
|
||||
return slot->type;
|
||||
else
|
||||
|
|
|
@ -214,7 +214,7 @@ public:
|
|||
/* Table mapping type DIEs to their struct type *.
|
||||
This is NULL if not allocated yet.
|
||||
The mapping is done via (CU/TU + DIE offset) -> type. */
|
||||
htab_t die_type_hash {};
|
||||
htab_up die_type_hash;
|
||||
|
||||
/* The CUs we recently read. */
|
||||
std::vector<dwarf2_per_cu_data *> just_read_cus;
|
||||
|
|
Loading…
Reference in New Issue