Remove sym_fns::sym_read_psymbols

Partial symbols are read via the sym_fns::sym_read_psymbols function
pointer.  In order to separate the partial symbols from the objfile,
this must instead be done via a virtual method on
quick_symbol_functions.  This patch implements this change.

gdb/ChangeLog
2021-03-20  Tom Tromey  <tom@tromey.com>

	* xcoffread.c (xcoff_sym_fns): Update.
	* symfile.h (struct sym_fns) <sym_read_psymbols>: Remove.
	* symfile-debug.c (objfile::has_partial_symbols): Use
	can_lazily_read_symbols.
	(debug_sym_read_psymbols): Remove.
	(debug_sym_fns, install_symfile_debug_logging): Update.
	* quick-symbol.h (struct quick_symbol_functions)
	<can_lazily_read_symbols, read_partial_symbols>: New methods.
	* psymtab.c (require_partial_symbols): Use new 'qf' methods.
	* mipsread.c (ecoff_sym_fns): Update.
	* machoread.c (macho_sym_fns): Update.
	* elfread.c (struct lazy_dwarf_reader): New.
	(elf_symfile_read): Update.
	(read_psyms): Now a method of lazy_dwarf_reader.
	(elf_sym_fns): Update.
	(elf_sym_fns_lazy_psyms): Remove.
	* dbxread.c (aout_sym_fns): Update.
	* coffread.c (coff_sym_fns): Update.
This commit is contained in:
Tom Tromey
2021-03-20 17:23:40 -06:00
parent b29b98cf84
commit eb00e4686d
11 changed files with 59 additions and 61 deletions

View File

@ -81,8 +81,8 @@ objfile::has_partial_symbols ()
this function the symbols may have been already read in but they also may
not be present in this objfile. */
if ((flags & OBJF_PSYMTABS_READ) == 0
&& sf != nullptr
&& sf->sym_read_psymbols != NULL)
&& qf != nullptr
&& qf->can_lazily_read_symbols ())
retval = true;
else if (qf != nullptr)
retval = qf->has_symbols (this);
@ -420,18 +420,6 @@ debug_sym_read (struct objfile *objfile, symfile_add_flags symfile_flags)
debug_data->real_sf->sym_read (objfile, symfile_flags);
}
static void
debug_sym_read_psymbols (struct objfile *objfile)
{
const struct debug_sym_fns_data *debug_data
= symfile_debug_objfile_data_key.get (objfile);
fprintf_filtered (gdb_stdlog, "sf->sym_read_psymbols (%s)\n",
objfile_debug_name (objfile));
debug_data->real_sf->sym_read_psymbols (objfile);
}
static void
debug_sym_finish (struct objfile *objfile)
{
@ -508,7 +496,6 @@ static const struct sym_fns debug_sym_fns =
debug_sym_new_init,
debug_sym_init,
debug_sym_read,
debug_sym_read_psymbols,
debug_sym_finish,
debug_sym_offsets,
debug_sym_segments,
@ -543,8 +530,6 @@ install_symfile_debug_logging (struct objfile *objfile)
COPY_SF_PTR (real_sf, debug_data, sym_new_init, debug_sym_new_init);
COPY_SF_PTR (real_sf, debug_data, sym_init, debug_sym_init);
COPY_SF_PTR (real_sf, debug_data, sym_read, debug_sym_read);
COPY_SF_PTR (real_sf, debug_data, sym_read_psymbols,
debug_sym_read_psymbols);
COPY_SF_PTR (real_sf, debug_data, sym_finish, debug_sym_finish);
COPY_SF_PTR (real_sf, debug_data, sym_offsets, debug_sym_offsets);
COPY_SF_PTR (real_sf, debug_data, sym_segments, debug_sym_segments);