Consolidate psymtab "Reading" messages

Each symbol reader implemented its own "Reading..." messages, and most
of them double-checked that a previously-expanded psymtab could not be
re-read.

This patch consolidates the message-printing, and changes these checks
into asserts.

gdb/ChangeLog
2020-01-26  Tom Tromey  <tom@tromey.com>

	* xcoffread.c (xcoff_read_symtab): Remove prints.  Add assert.
	* psymtab.c (psymtab_to_symtab): Print verbose "Reading"
	messages.
	* mdebugread.c (mdebug_read_symtab): Remove prints.
	* dwarf2read.c (dwarf2_psymtab::read_symtab): Remove prints.  Add
	assert.
	* dbxread.c (dbx_read_symtab): Remove prints.  Add assert.

Change-Id: I795be9710d42708299bb7b44972cffd27aec9413
This commit is contained in:
Tom Tromey 2019-10-22 21:13:10 -06:00
parent 891813beaa
commit 077cbab270
6 changed files with 36 additions and 78 deletions

View File

@ -1,3 +1,13 @@
2020-01-26 Tom Tromey <tom@tromey.com>
* xcoffread.c (xcoff_read_symtab): Remove prints. Add assert.
* psymtab.c (psymtab_to_symtab): Print verbose "Reading"
messages.
* mdebugread.c (mdebug_read_symtab): Remove prints.
* dwarf2read.c (dwarf2_psymtab::read_symtab): Remove prints. Add
assert.
* dbxread.c (dbx_read_symtab): Remove prints. Add assert.
2020-01-26 Tom Tromey <tom@tromey.com>
* xcoffread.c (this_symtab_psymtab, read_xcoff_symtab)

View File

@ -2117,24 +2117,10 @@ dbx_psymtab_to_symtab_1 (struct objfile *objfile, legacy_psymtab *pst)
static void
dbx_read_symtab (legacy_psymtab *self, struct objfile *objfile)
{
if (self->readin)
{
fprintf_unfiltered (gdb_stderr, "Psymtab for %s already read in. "
"Shouldn't happen.\n",
self->filename);
return;
}
gdb_assert (!self->readin);
if (LDSYMLEN (self) || self->number_of_dependencies)
{
/* Print the message now, before reading the string table,
to avoid disconcerting pauses. */
if (info_verbose)
{
printf_filtered ("Reading in symbols for %s...", self->filename);
gdb_flush (gdb_stdout);
}
next_symbol_text_func = dbx_next_symbol_text;
{
@ -2155,10 +2141,6 @@ dbx_read_symtab (legacy_psymtab *self, struct objfile *objfile)
/* Match with global symbols. This only needs to be done once,
after all of the symtabs and dependencies have been read in. */
scan_file_globals (objfile);
/* Finish up the debug error message. */
if (info_verbose)
printf_filtered ("done.\n");
}
}

View File

@ -9494,41 +9494,23 @@ dwarf2_psymtab::read_symtab (struct objfile *objfile)
struct dwarf2_per_objfile *dwarf2_per_objfile
= get_dwarf2_per_objfile (objfile);
if (readin)
gdb_assert (!readin);
/* If this psymtab is constructed from a debug-only objfile, the
has_section_at_zero flag will not necessarily be correct. We
can get the correct value for this flag by looking at the data
associated with the (presumably stripped) associated objfile. */
if (objfile->separate_debug_objfile_backlink)
{
warning (_("bug: psymtab for %s is already read in."),
filename);
struct dwarf2_per_objfile *dpo_backlink
= get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
dwarf2_per_objfile->has_section_at_zero
= dpo_backlink->has_section_at_zero;
}
else
{
if (info_verbose)
{
printf_filtered (_("Reading in symbols for %s..."),
filename);
gdb_flush (gdb_stdout);
}
/* If this psymtab is constructed from a debug-only objfile, the
has_section_at_zero flag will not necessarily be correct. We
can get the correct value for this flag by looking at the data
associated with the (presumably stripped) associated objfile. */
if (objfile->separate_debug_objfile_backlink)
{
struct dwarf2_per_objfile *dpo_backlink
= get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
dwarf2_per_objfile->reading_partial_symbols = 0;
dwarf2_per_objfile->has_section_at_zero
= dpo_backlink->has_section_at_zero;
}
dwarf2_per_objfile->reading_partial_symbols = 0;
psymtab_to_symtab_1 (this);
/* Finish up the debug error message. */
if (info_verbose)
printf_filtered (_("done.\n"));
}
psymtab_to_symtab_1 (this);
process_cu_includes (dwarf2_per_objfile);
}

View File

@ -277,12 +277,6 @@ static const char *mdebug_next_symbol_text (struct objfile *);
static void
mdebug_read_symtab (legacy_psymtab *self, struct objfile *objfile)
{
if (info_verbose)
{
printf_filtered (_("Reading in symbols for %s..."), self->filename);
gdb_flush (gdb_stdout);
}
next_symbol_text_func = mdebug_next_symbol_text;
psymtab_to_symtab_1 (objfile, self, self->filename);
@ -290,9 +284,6 @@ mdebug_read_symtab (legacy_psymtab *self, struct objfile *objfile)
/* Match with global symbols. This only needs to be done once,
after all of the symtabs and dependencies have been read in. */
scan_file_globals (objfile);
if (info_verbose)
printf_filtered (_("done.\n"));
}
/* File-level interface functions. */

View File

@ -758,7 +758,18 @@ psymtab_to_symtab (struct objfile *objfile, struct partial_symtab *pst)
{
scoped_restore decrementer = increment_reading_symtab ();
if (info_verbose)
{
printf_filtered (_("Reading in symbols for %s..."),
pst->filename);
gdb_flush (gdb_stdout);
}
pst->read_symtab (objfile);
/* Finish up the debug error message. */
if (info_verbose)
printf_filtered (_("done.\n"));
}
return pst->compunit_symtab;

View File

@ -1869,25 +1869,11 @@ xcoff_psymtab_to_symtab_1 (struct objfile *objfile, legacy_psymtab *pst)
static void
xcoff_read_symtab (legacy_psymtab *self, struct objfile *objfile)
{
if (self->readin)
{
fprintf_unfiltered
(gdb_stderr, "Psymtab for %s already read in. Shouldn't happen.\n",
self->filename);
return;
}
gdb_assert (!self->readin);
if (((struct symloc *) self->read_symtab_private)->numsyms != 0
|| self->number_of_dependencies)
{
/* Print the message now, before reading the string table,
to avoid disconcerting pauses. */
if (info_verbose)
{
printf_filtered ("Reading in symbols for %s...", self->filename);
gdb_flush (gdb_stdout);
}
next_symbol_text_func = xcoff_next_symbol_text;
xcoff_psymtab_to_symtab_1 (objfile, self);
@ -1895,10 +1881,6 @@ xcoff_read_symtab (legacy_psymtab *self, struct objfile *objfile)
/* Match with global symbols. This only needs to be done once,
after all of the symtabs and dependencies have been read in. */
scan_file_globals (objfile);
/* Finish up the debug error message. */
if (info_verbose)
printf_filtered ("done.\n");
}
}