diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2024-08-19 15:03:50 +0000 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2024-08-23 14:37:54 -0400 |
commit | c4f180d72d20459c28ed0926db445bc8704527f8 (patch) | |
tree | c3be33c7a5fb188e2111370a6762c3b7f1984648 | |
parent | a0b54aa74dee01092a94f970ee797cadbdf8bc61 (diff) | |
download | gdb-c4f180d72d20459c28ed0926db445bc8704527f8.zip gdb-c4f180d72d20459c28ed0926db445bc8704527f8.tar.gz gdb-c4f180d72d20459c28ed0926db445bc8704527f8.tar.bz2 |
Convert dwarf2/macro.c to new hash table
This converts dwarf2/macro.c to use the new hash table.
Change-Id: I6af0d1178e2db330fe3a89d57763974145ed17c4
Co-Authored-By: Tom Tromey <tom@tromey.com>
-rw-r--r-- | gdb/dwarf2/macro.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/gdb/dwarf2/macro.c b/gdb/dwarf2/macro.c index 5371acf..34aac0b 100644 --- a/gdb/dwarf2/macro.c +++ b/gdb/dwarf2/macro.c @@ -422,7 +422,8 @@ dwarf_decode_macro_bytes (dwarf2_per_objfile *per_objfile, struct dwarf2_section_info *str_section, struct dwarf2_section_info *str_offsets_section, std::optional<ULONGEST> str_offsets_base, - htab_t include_hash, struct dwarf2_cu *cu) + gdb::unordered_set<const gdb_byte *> &include_hash, + struct dwarf2_cu *cu) { struct objfile *objfile = per_objfile->objfile; enum dwarf_macro_record_type macinfo_type; @@ -697,7 +698,6 @@ dwarf_decode_macro_bytes (dwarf2_per_objfile *per_objfile, case DW_MACRO_import_sup: { LONGEST offset; - void **slot; bfd *include_bfd = abfd; const struct dwarf2_section_info *include_section = section; const gdb_byte *include_mac_end = mac_end; @@ -719,9 +719,10 @@ dwarf_decode_macro_bytes (dwarf2_per_objfile *per_objfile, } new_mac_ptr = include_section->buffer + offset; - slot = htab_find_slot (include_hash, new_mac_ptr, INSERT); - if (*slot != NULL) + bool inserted = include_hash.insert (new_mac_ptr).second; + + if (!inserted) { /* This has actually happened; see http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */ @@ -730,8 +731,6 @@ dwarf_decode_macro_bytes (dwarf2_per_objfile *per_objfile, } else { - *slot = (void *) new_mac_ptr; - dwarf_decode_macro_bytes (per_objfile, builder, include_bfd, new_mac_ptr, include_mac_end, current_file, lh, section, @@ -739,7 +738,7 @@ dwarf_decode_macro_bytes (dwarf2_per_objfile *per_objfile, str_section, str_offsets_section, str_offsets_base, include_hash, cu); - htab_remove_elt (include_hash, (void *) new_mac_ptr); + include_hash.erase (new_mac_ptr); } } break; @@ -788,7 +787,6 @@ dwarf_decode_macros (dwarf2_per_objfile *per_objfile, struct macro_source_file *current_file = 0; enum dwarf_macro_record_type macinfo_type; const gdb_byte *opcode_definitions[256]; - void **slot; abfd = section->get_bfd_owner (); @@ -933,14 +931,11 @@ dwarf_decode_macros (dwarf2_per_objfile *per_objfile, command-line macro definitions/undefinitions. This flag is unset when we reach the first DW_MACINFO_start_file entry. */ - htab_up include_hash (htab_create_alloc (1, htab_hash_pointer, - htab_eq_pointer, - NULL, xcalloc, xfree)); + gdb::unordered_set<const gdb_byte *> include_hash; mac_ptr = section->buffer + offset; - slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT); - *slot = (void *) mac_ptr; + include_hash.insert (mac_ptr); dwarf_decode_macro_bytes (per_objfile, builder, abfd, mac_ptr, mac_end, current_file, lh, section, section_is_gnu, 0, offset_size, str_section, str_offsets_section, - str_offsets_base, include_hash.get (), cu); + str_offsets_base, include_hash, cu); } |