From 86de1d91ac93e48f77ea9fe61edfdba8ac24aa02 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sat, 8 Feb 2020 13:40:54 -0700 Subject: [PATCH] Minor cleanups in abbrev_table This cleans up the DWARF abbrev_table API a bit, primarily by making various methods and members private. 2020-02-08 Tom Tromey * dwarf2/read.c (read_cutu_die_from_dwo): Update. (cutu_reader): Update. (build_type_psymtabs_1): Update. * dwarf2/abbrev.c (abbrev_table::read): Rename. (abbrev_table::alloc_abbrev): Update. * dwarf2/abbrev.h (abbrev_table_up): Move earlier. (abbrev_table::read): New static method, renamed from abbrev_table_read_table. (abbrev_table::alloc_abbrev) (abbrev_table::add_abbrev): Now private. (abbrev_table::abbrev_table): Now private. (abbrev_table::m_abbrev_obstack): Now private. Rename. Change-Id: I320dca83b799f672909ae66f73b7aca266adbaf9 --- gdb/ChangeLog | 15 +++++++++++++++ gdb/dwarf2/abbrev.c | 10 +++++----- gdb/dwarf2/abbrev.h | 46 ++++++++++++++++++++++----------------------- gdb/dwarf2/read.c | 18 +++++++++--------- 4 files changed, 52 insertions(+), 37 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 014c85831da..8fae30b7936 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,18 @@ +2020-02-08 Tom Tromey + + * dwarf2/read.c (read_cutu_die_from_dwo): Update. + (cutu_reader): Update. + (build_type_psymtabs_1): Update. + * dwarf2/abbrev.c (abbrev_table::read): Rename. + (abbrev_table::alloc_abbrev): Update. + * dwarf2/abbrev.h (abbrev_table_up): Move earlier. + (abbrev_table::read): New static method, renamed from + abbrev_table_read_table. + (abbrev_table::alloc_abbrev) + (abbrev_table::add_abbrev): Now private. + (abbrev_table::abbrev_table): Now private. + (abbrev_table::m_abbrev_obstack): Now private. Rename. + 2020-02-08 Tom Tromey * dwarf2/read.c (set_die_type, get_die_type_at_offset): Update. diff --git a/gdb/dwarf2/abbrev.c b/gdb/dwarf2/abbrev.c index 544d5793add..fac7309b93c 100644 --- a/gdb/dwarf2/abbrev.c +++ b/gdb/dwarf2/abbrev.c @@ -44,7 +44,7 @@ abbrev_table::alloc_abbrev () { struct abbrev_info *abbrev; - abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info); + abbrev = XOBNEW (&m_abbrev_obstack, struct abbrev_info); memset (abbrev, 0, sizeof (struct abbrev_info)); return abbrev; @@ -87,9 +87,9 @@ abbrev_table::lookup_abbrev (unsigned int abbrev_number) /* Read in an abbrev table. */ abbrev_table_up -abbrev_table_read_table (struct objfile *objfile, - struct dwarf2_section_info *section, - sect_offset sect_off) +abbrev_table::read (struct objfile *objfile, + struct dwarf2_section_info *section, + sect_offset sect_off) { bfd *abfd = section->get_bfd_owner (); const gdb_byte *abbrev_ptr; @@ -152,7 +152,7 @@ abbrev_table_read_table (struct objfile *objfile, } cur_abbrev->attrs = - XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev, + XOBNEWVEC (&abbrev_table->m_abbrev_obstack, struct attr_abbrev, cur_abbrev->num_attrs); memcpy (cur_abbrev->attrs, cur_attrs.data (), cur_abbrev->num_attrs * sizeof (struct attr_abbrev)); diff --git a/gdb/dwarf2/abbrev.h b/gdb/dwarf2/abbrev.h index df83c093be2..52103b0a683 100644 --- a/gdb/dwarf2/abbrev.h +++ b/gdb/dwarf2/abbrev.h @@ -50,15 +50,34 @@ struct attr_abbrev /* Size of abbrev_table.abbrev_hash_table. */ #define ABBREV_HASH_SIZE 121 +struct abbrev_table; +typedef std::unique_ptr abbrev_table_up; + /* Top level data structure to contain an abbreviation table. */ struct abbrev_table { + static abbrev_table_up read (struct objfile *objfile, + struct dwarf2_section_info *section, + sect_offset sect_off); + + /* Look up an abbrev in the table. + Returns NULL if the abbrev is not found. */ + + struct abbrev_info *lookup_abbrev (unsigned int abbrev_number); + + + /* Where the abbrev table came from. + This is used as a sanity check when the table is used. */ + const sect_offset sect_off; + +private: + explicit abbrev_table (sect_offset off) : sect_off (off) { m_abbrevs = - XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE); + XOBNEWVEC (&m_abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE); memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *)); } @@ -71,33 +90,14 @@ struct abbrev_table /* Add an abbreviation to the table. */ void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev); - /* Look up an abbrev in the table. - Returns NULL if the abbrev is not found. */ - - struct abbrev_info *lookup_abbrev (unsigned int abbrev_number); - - - /* Where the abbrev table came from. - This is used as a sanity check when the table is used. */ - const sect_offset sect_off; - - /* Storage for the abbrev table. */ - auto_obstack abbrev_obstack; - -private: - /* Hash table of abbrevs. This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack. It could be statically allocated, but the previous code didn't so we don't either. */ struct abbrev_info **m_abbrevs; -}; -typedef std::unique_ptr abbrev_table_up; - -extern abbrev_table_up abbrev_table_read_table - (struct objfile *objfile, - struct dwarf2_section_info *section, - sect_offset sect_off); + /* Storage for the abbrev table. */ + auto_obstack m_abbrev_obstack; +}; #endif /* GDB_DWARF2_ABBREV_H */ diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index e42f4f25795..345535af490 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -7036,8 +7036,8 @@ read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu, } *result_dwo_abbrev_table - = abbrev_table_read_table (objfile, dwo_abbrev_section, - cu->header.abbrev_sect_off); + = abbrev_table::read (objfile, dwo_abbrev_section, + cu->header.abbrev_sect_off); init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file, result_dwo_abbrev_table->get ()); @@ -7334,8 +7334,8 @@ cutu_reader::cutu_reader (struct dwarf2_per_cu_data *this_cu, else { m_abbrev_table_holder - = abbrev_table_read_table (objfile, abbrev_section, - cu->header.abbrev_sect_off); + = abbrev_table::read (objfile, abbrev_section, + cu->header.abbrev_sect_off); abbrev_table = m_abbrev_table_holder.get (); } @@ -7480,8 +7480,8 @@ cutu_reader::cutu_reader (struct dwarf2_per_cu_data *this_cu, } m_abbrev_table_holder - = abbrev_table_read_table (objfile, abbrev_section, - m_new_cu->header.abbrev_sect_off); + = abbrev_table::read (objfile, abbrev_section, + m_new_cu->header.abbrev_sect_off); init_cu_die_reader (this, m_new_cu.get (), section, dwo_file, m_abbrev_table_holder.get ()); @@ -7969,9 +7969,9 @@ build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile) { abbrev_offset = tu.abbrev_offset; abbrev_table = - abbrev_table_read_table (dwarf2_per_objfile->objfile, - &dwarf2_per_objfile->abbrev, - abbrev_offset); + abbrev_table::read (dwarf2_per_objfile->objfile, + &dwarf2_per_objfile->abbrev, + abbrev_offset); ++tu_stats->nr_uniq_abbrev_tables; } -- 2.30.2