diff options
author | Tom Tromey <tom@tromey.com> | 2021-03-29 17:58:21 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2022-04-20 09:10:03 -0600 |
commit | 32ae6b930c293278c0a57d40c468653173ad09b5 (patch) | |
tree | d1d9942bfbccbfe77f673c156fb2527c7c778ee2 | |
parent | 6555809e3e5ca516c7c1ffca494118ec7fd16934 (diff) | |
download | gdb-32ae6b930c293278c0a57d40c468653173ad09b5.zip gdb-32ae6b930c293278c0a57d40c468653173ad09b5.tar.gz gdb-32ae6b930c293278c0a57d40c468653173ad09b5.tar.bz2 |
Let mapped index classes create the quick_symbol_functions object
This changes the mapped index classes to create the
quick_symbol_functions objects. This is a step toward having a more
abstract interface to mapped indices.
-rw-r--r-- | gdb/dwarf2/mapped-index.h | 4 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 31 |
2 files changed, 28 insertions, 7 deletions
diff --git a/gdb/dwarf2/mapped-index.h b/gdb/dwarf2/mapped-index.h index fb6828e..9f51a9e 100644 --- a/gdb/dwarf2/mapped-index.h +++ b/gdb/dwarf2/mapped-index.h @@ -77,6 +77,10 @@ struct mapped_index_base return false; } + /* Return a quick_symbol_functions instance that refers back to this + mapped_index_base. */ + virtual quick_symbol_functions_up make_quick_functions () const = 0; + /* Build the symbol name component sorted vector, if we haven't yet. */ void build_name_components (dwarf2_per_objfile *per_objfile); diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 3f44c72..c0bb18a 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -243,6 +243,8 @@ struct mapped_index final : public mapped_index_base size_t symbol_name_count () const override { return this->symbol_table.size () / 2; } + + quick_symbol_functions_up make_quick_functions () const override; }; /* A description of the mapped .debug_names. @@ -292,6 +294,8 @@ struct mapped_debug_names final : public mapped_index_base size_t symbol_name_count () const override { return this->name_count; } + + quick_symbol_functions_up make_quick_functions () const override; }; /* See dwarf2/read.h. */ @@ -1887,8 +1891,14 @@ make_dwarf_gdb_index () return quick_symbol_functions_up (new dwarf2_gdb_index); } -static quick_symbol_functions_up -make_dwarf_debug_names () +quick_symbol_functions_up +mapped_index::make_quick_functions () const +{ + return quick_symbol_functions_up (new dwarf2_gdb_index); +} + +quick_symbol_functions_up +mapped_debug_names::make_quick_functions () const { return quick_symbol_functions_up (new dwarf2_debug_names_index); } @@ -3494,6 +3504,11 @@ public: return m_symbol_table[idx]; } + quick_symbol_functions_up make_quick_functions () const override + { + return nullptr; + } + private: gdb::array_view<const char *> m_symbol_table; }; @@ -5281,7 +5296,8 @@ dwarf2_initialize_objfile (struct objfile *objfile) if (per_bfd->debug_names_table != nullptr) { dwarf_read_debug_printf ("re-using shared debug names table"); - objfile->qf.push_front (make_dwarf_debug_names ()); + objfile->qf.push_front + (per_bfd->debug_names_table->make_quick_functions ()); return; } @@ -5290,7 +5306,7 @@ dwarf2_initialize_objfile (struct objfile *objfile) if (per_bfd->index_table != nullptr) { dwarf_read_debug_printf ("re-using shared index table"); - objfile->qf.push_front (make_dwarf_gdb_index ()); + objfile->qf.push_front (per_bfd->index_table->make_quick_functions ()); return; } @@ -5304,7 +5320,8 @@ dwarf2_initialize_objfile (struct objfile *objfile) if (dwarf2_read_debug_names (per_objfile)) { dwarf_read_debug_printf ("found debug names"); - objfile->qf.push_front (make_dwarf_debug_names ()); + objfile->qf.push_front + (per_bfd->debug_names_table->make_quick_functions ()); return; } @@ -5313,7 +5330,7 @@ dwarf2_initialize_objfile (struct objfile *objfile) get_gdb_index_contents_from_section<dwz_file>)) { dwarf_read_debug_printf ("found gdb index from file"); - objfile->qf.push_front (make_dwarf_gdb_index ()); + objfile->qf.push_front (per_bfd->index_table->make_quick_functions ()); return; } @@ -5324,7 +5341,7 @@ dwarf2_initialize_objfile (struct objfile *objfile) { dwarf_read_debug_printf ("found gdb index from cache"); global_index_cache.hit (); - objfile->qf.push_front (make_dwarf_gdb_index ()); + objfile->qf.push_front (per_bfd->index_table->make_quick_functions ()); return; } |