aboutsummaryrefslogtreecommitdiff
path: root/gdb/symfile.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-05-10 16:23:51 -0600
committerTom Tromey <tom@tromey.com>2019-01-10 07:08:12 -0700
commitd320c2b5e181828418224521f2acd2ff48e127f4 (patch)
treeafaea8c763b84f9a59a49662366ad5fcf7c917d8 /gdb/symfile.c
parent1d94a5a36a614cf7ebe259d7660f4fa725f38ee2 (diff)
downloadgdb-d320c2b5e181828418224521f2acd2ff48e127f4.zip
gdb-d320c2b5e181828418224521f2acd2ff48e127f4.tar.gz
gdb-d320c2b5e181828418224521f2acd2ff48e127f4.tar.bz2
Introduce class psymtab_storage
This introduces a new psymtab_storage class, which holds all psymbol-related objects that are independent of the objfile. (This latter contraint explains why psymbol_map was not moved; though this could still be done with some work.) This patch does not yet change where psymtab allocation is done -- that comes later. This just wraps everything in a single object to make further transformations simpler. Note that a shared_ptr is used to link from the objfile to the psymtab_storage object. The end goal here is to allow a given symbol reader to simply attach to the psymtab_storage object to the BFD, then reuse it in later invocations; shared_ptr makes this simple to reason about. gdb/ChangeLog 2019-01-10 Tom Tromey <tom@tromey.com> * symmisc.c (print_symbol_bcache_statistics): Update. (print_objfile_statistics): Update. * symfile.c (reread_symbols): Update. * psymtab.h (class psymtab_storage): New. * psymtab.c (psymtab_storage): New constructor. (~psymtab_storage): New destructor. (require_partial_symbols): Update. (ALL_OBJFILE_PSYMTABS_REQUIRED): Rewrite. (find_pc_sect_psymtab, find_pc_sect_psymbol) (match_partial_symbol, lookup_partial_symbol, dump_psymtab) (psym_dump, recursively_search_psymtabs, psym_has_symbols) (psym_find_compunit_symtab_by_address, sort_pst_symbols) (start_psymtab_common, end_psymtab_common) (add_psymbol_to_bcache, add_psymbol_to_list, init_psymbol_list) (allocate_psymtab): Update. (psymtab_storage::discard_psymtab): Rename from discard_psymtab. Update. (dump_psymtab_addrmap, maintenance_print_psymbols) (maintenance_check_psymtabs): Update. (class objfile_psymtabs): Move to objfiles.h. * psympriv.h (discard_psymtab): Now inline. (psymtab_discarder::psymtab_discarder): Update. (psymtab_discarder::~psymtab_discarder): Update. (ALL_OBJFILE_PSYMTABS): Rewrite. * objfiles.h (struct objfile) <psymtabs, psymtabs_addrmap, free_psymtabs, psymbol_cache, global_psymbols, static_psymbols>: Remove fields. <partial_symtabs>: New field. (class objfile_psymtabs): Move from psymtab.h. Update. * objfiles.c (objfile::objfile): Initialize partial_symtabs, not psymbol_cache. (objfile::~objfile): Don't destroy psymbol_cache. * mdebugread.c (parse_partial_symbols): Update. * dwarf2read.c (create_addrmap_from_index) (create_addrmap_from_aranges, dw2_find_pc_sect_compunit_symtab) (process_psymtab_comp_unit_reader, dwarf2_build_psymtabs_hard) (add_partial_subprogram, dwarf2_ranges_read): Update. * dwarf-index-write.c (write_address_map) (write_one_signatured_type, recursively_write_psymbols) (class debug_names, class debug_names, write_psymtabs_to_index): Update.
Diffstat (limited to 'gdb/symfile.c')
-rw-r--r--gdb/symfile.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 46c2299..d407461 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -2526,21 +2526,21 @@ reread_symbols (void)
/* FIXME: Do we have to free a whole linked list, or is this
enough? */
- objfile->global_psymbols.clear ();
- objfile->static_psymbols.clear ();
+ objfile->partial_symtabs->global_psymbols.clear ();
+ objfile->partial_symtabs->static_psymbols.clear ();
/* Free the obstacks for non-reusable objfiles. */
- psymbol_bcache_free (objfile->psymbol_cache);
- objfile->psymbol_cache = psymbol_bcache_init ();
+ psymbol_bcache_free (objfile->partial_symtabs->psymbol_cache);
+ objfile->partial_symtabs->psymbol_cache = psymbol_bcache_init ();
/* NB: after this call to obstack_free, objfiles_changed
will need to be called (see discussion below). */
obstack_free (&objfile->objfile_obstack, 0);
objfile->sections = NULL;
objfile->compunit_symtabs = NULL;
- objfile->psymtabs = NULL;
- objfile->psymtabs_addrmap = NULL;
- objfile->free_psymtabs = NULL;
+ objfile->partial_symtabs->psymtabs = NULL;
+ objfile->partial_symtabs->psymtabs_addrmap = NULL;
+ objfile->partial_symtabs->free_psymtabs = NULL;
objfile->template_symbols = NULL;
objfile->static_links = NULL;