diff options
author | Tom Tromey <tom@tromey.com> | 2016-09-22 13:47:48 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2016-10-21 14:17:33 -0600 |
commit | 873a915e0ad44cb303b071638536f27569491030 (patch) | |
tree | 6209436a7e32b15b891764df1e5e2738e33a4ec5 /gdb/minsyms.h | |
parent | 4b6749b9a4680e79affdb9c02ea2f5ba39a54587 (diff) | |
download | gdb-873a915e0ad44cb303b071638536f27569491030.zip gdb-873a915e0ad44cb303b071638536f27569491030.tar.gz gdb-873a915e0ad44cb303b071638536f27569491030.tar.bz2 |
Introduce minimal_symbol_reader
This patch introduced minimal_symbol_reader, a RAII-based class which
replaces the current make_cleanup_discard_minimal_symbols.
2016-10-21 Tom Tromey <tom@tromey.com>
* xcoffread.c (xcoff_initial_scan): Use
minimal_symbol_reader.
* mipsread.c (mipscoff_symfile_read): Use
minimal_symbol_reader.
* minsyms.h (minimal_symbol_reader): New class.
(init_minimal_symbol_collection)
(make_cleanup_discard_minimal_symbols, install_minimal_symbols):
Don't declare.
* minsyms.c (minimal_symbol_reader): Renamed from
init_minimal_symbol_collection, turned into constructor.
(~minimal_symbol_reader): Renamed from
do_discard_minimal_symbols_cleanup, turned into destructor.
(make_cleanup_discard_minimal_symbols): Remove.
(minimal_symbol_reader::install): Rename form
install_minimal_symbols.
* mdebugread.c (elfmdebug_build_psymtabs): Use
minimal_symbol_reader.
* machoread.c (macho_symfile_read): Use
minimal_symbol_reader.
* elfread.c (elf_read_minimal_symbols): Use
minimal_symbol_reader.
* dbxread.c (dbx_symfile_read): Use minimal_symbol_reader.
* coffread.c (coff_symfile_read): Use
minimal_symbol_reader.
Diffstat (limited to 'gdb/minsyms.h')
-rw-r--r-- | gdb/minsyms.h | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/gdb/minsyms.h b/gdb/minsyms.h index 8857f1a..d75bd41 100644 --- a/gdb/minsyms.h +++ b/gdb/minsyms.h @@ -53,21 +53,33 @@ struct bound_minimal_symbol as opaque and use functions provided by minsyms.c to inspect them. */ -/* Prepare to start collecting minimal symbols. This should be called - by a symbol reader to initialize the minimal symbol module. - Currently, minimal symbol table creation is not reentrant; it - relies on global (static) variables in minsyms.c. */ +/* An RAII-based object that is used to record minimal symbols while + they are being read. */ +class minimal_symbol_reader +{ + public: + + /* Prepare to start collecting minimal symbols. This should be called + by a symbol reader to initialize the minimal symbol module. + Currently, minimal symbol table creation is not reentrant; it + relies on global (static) variables in minsyms.c. */ + + explicit minimal_symbol_reader (); + + ~minimal_symbol_reader (); -void init_minimal_symbol_collection (void); + /* Install the minimal symbols that have been collected into the + given objfile. */ -/* Return a cleanup which is used to clean up the global state left - over by minimal symbol creation. After calling - init_minimal_symbol_collection, a symbol reader should call this - function. Then, after all minimal symbols have been read, - regardless of whether they are installed or not, the cleanup - returned by this function should be run. */ + void install (struct objfile *); -struct cleanup *make_cleanup_discard_minimal_symbols (void); + private: + + /* No need for these. They are intentionally not defined anywhere. */ + minimal_symbol_reader &operator= + (const minimal_symbol_reader &); + minimal_symbol_reader (const minimal_symbol_reader &); +}; /* Record a new minimal symbol. This is the "full" entry point; simpler convenience entry points are also provided below. @@ -122,13 +134,6 @@ struct minimal_symbol *prim_record_minimal_symbol_and_info int section, struct objfile *); -/* Install the minimal symbols that have been collected into the given - objfile. After this is called, the cleanup returned by - make_cleanup_discard_minimal_symbols should be run in order to - clean up global state. */ - -void install_minimal_symbols (struct objfile *); - /* Create the terminating entry of OBJFILE's minimal symbol table. If OBJFILE->msymbols is zero, allocate a single entry from OBJFILE->objfile_obstack; otherwise, just initialize |