X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fpsymtab.h;h=e8bafbe4338f8cd32e79fea653b17704708331b5;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=0ad2b49d9a5c03b9a63a36e16cfacdb3d4b88021;hpb=3dd9bb462012df685d6d41300dacedae1c81e28a;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/psymtab.h b/gdb/psymtab.h index 0ad2b49d9a..e8bafbe433 100644 --- a/gdb/psymtab.h +++ b/gdb/psymtab.h @@ -1,6 +1,6 @@ /* Public partial symbol table definitions. - Copyright (C) 2009-2019 Free Software Foundation, Inc. + Copyright (C) 2009-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -36,7 +36,9 @@ struct partial_symbol; other memory managed by this class), or on the per-BFD object. The only link from the psymtab storage object back to the objfile (or objfile_obstack) that is made by the core psymtab code is the - compunit_symtab member in the psymtab. + compunit_symtab member in the standard_psymtab -- and a given + symbol reader can avoid this by implementing its own subclasses of + partial_symtab. However, it is up to each symbol reader to maintain this invariant in other ways, if it wants to reuse psymtabs across multiple @@ -83,11 +85,10 @@ public: return OBSTACK_CALLOC (obstack (), number, struct partial_symtab *); } - /* Allocate a new psymtab on the psymtab obstack. The new psymtab - will be linked in to the "psymtabs" list, but otherwise all other - fields will be zero. */ + /* Install a psymtab on the psymtab list. This transfers ownership + of PST to this object. */ - struct partial_symtab *allocate_psymtab (); + void install_psymtab (partial_symtab *pst); typedef next_adapter partial_symtab_range; @@ -120,7 +121,7 @@ public: /* A byte cache where we can stash arbitrary "chunks" of bytes that will not change. */ - struct bcache psymbol_cache; + gdb::bcache psymbol_cache; /* Vectors of all partial symbols read in from file. The actual data is stored in the objfile_obstack. */ @@ -128,11 +129,13 @@ public: std::vector global_psymbols; std::vector static_psymbols; -private: + /* Stack of vectors of partial symbols, using during psymtab + initialization. */ - /* List of freed partial symtabs, available for re-use. */ + std::vector*> current_global_psymbols; + std::vector*> current_static_psymbols; - struct partial_symtab *free_psymtabs = nullptr; +private: /* The obstack where allocations are made. This is lazily allocated so that we don't waste memory when there are no psymtabs. */ @@ -147,11 +150,11 @@ extern const struct quick_symbol_functions dwarf2_gdb_index_functions; extern const struct quick_symbol_functions dwarf2_debug_names_functions; /* Ensure that the partial symbols for OBJFILE have been loaded. If - VERBOSE is non-zero, then this will print a message when symbols + VERBOSE is true, then this will print a message when symbols are loaded. This function returns a range adapter suitable for iterating over the psymtabs of OBJFILE. */ extern psymtab_storage::partial_symtab_range require_partial_symbols - (struct objfile *objfile, int verbose); + (struct objfile *objfile, bool verbose); #endif /* PSYMTAB_H */