From 0335378b4cd2fc8246b2eb7cfe2b7e4cf757a377 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sat, 8 Feb 2020 13:40:54 -0700 Subject: [PATCH] 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 * dwarf2/read.c (set_die_type, get_die_type_at_offset): Update. * dwarf2/read.h (struct dwarf2_per_objfile) : Now htab_up. Change-Id: Ic651f99ebf71bf7ad2dc2880192adacf7b60964a --- gdb/ChangeLog | 6 ++++++ gdb/dwarf2/read.c | 19 +++++++------------ gdb/dwarf2/read.h | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 82e99312b88..014c85831da 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2020-02-08 Tom Tromey + + * dwarf2/read.c (set_die_type, get_die_type_at_offset): Update. + * dwarf2/read.h (struct dwarf2_per_objfile) : Now + htab_up. + 2020-02-08 Tom Tromey * dwarf2/read.c (struct dwp_file) : Now diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 4c445eae90b..e42f4f25795 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -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 diff --git a/gdb/dwarf2/read.h b/gdb/dwarf2/read.h index 0f30837d3e2..c177747e32e 100644 --- a/gdb/dwarf2/read.h +++ b/gdb/dwarf2/read.h @@ -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 just_read_cus; -- 2.30.2