Remove partial symbol statistics
The "n_psyms" statistic in the per-objfile stats is not really needed, but its use requires passing the objfile to add_psymbol. This patch removes the field in favor of counting the psyms when needed. Note that this is not exactly equivalent -- in the old approach, a psymbol can in theory be created and then the psymtab discarded, which would increment the counter. This does not seem very important to me. I rewrote the code to count partial symbols; though TBH I think that this information is not really very useful. gdb/ChangeLog 2020-11-01 Tom Tromey <tom@tromey.com> * symmisc.c (count_psyms): New function. (print_objfile_statistics): Use it. * psymtab.c (append_psymbol_to_list): Remove. (partial_symtab::add_psymbol): Inline append_psymbol_to_list. * objfiles.h (struct objstats) <n_psyms>: Remove.
This commit is contained in:
parent
089002bba0
commit
0684bb51b5
@ -1,3 +1,11 @@
|
||||
2020-11-01 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* symmisc.c (count_psyms): New function.
|
||||
(print_objfile_statistics): Use it.
|
||||
* psymtab.c (append_psymbol_to_list): Remove.
|
||||
(partial_symtab::add_psymbol): Inline append_psymbol_to_list.
|
||||
* objfiles.h (struct objstats) <n_psyms>: Remove.
|
||||
|
||||
2020-11-01 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* dbxread.c (dbx_end_psymtab): Update.
|
||||
|
||||
@ -194,9 +194,6 @@ struct obj_section
|
||||
|
||||
struct objstats
|
||||
{
|
||||
/* Number of partial symbols read. */
|
||||
int n_psyms = 0;
|
||||
|
||||
/* Number of full symbols read. */
|
||||
int n_syms = 0;
|
||||
|
||||
|
||||
@ -1523,17 +1523,6 @@ add_psymbol_to_bcache (const partial_symbol &psymbol, struct objfile *objfile,
|
||||
(&psymbol, sizeof (struct partial_symbol), added));
|
||||
}
|
||||
|
||||
/* Helper function, adds partial symbol to the given partial symbol list. */
|
||||
|
||||
static void
|
||||
append_psymbol_to_list (std::vector<partial_symbol *> &list,
|
||||
struct partial_symbol *psym,
|
||||
struct objfile *objfile)
|
||||
{
|
||||
list.push_back (psym);
|
||||
OBJSTAT (objfile, n_psyms++);
|
||||
}
|
||||
|
||||
/* See psympriv.h. */
|
||||
|
||||
void
|
||||
@ -1555,7 +1544,7 @@ partial_symtab::add_psymbol (const partial_symbol &psymbol,
|
||||
= (where == psymbol_placement::STATIC
|
||||
? static_psymbols
|
||||
: global_psymbols);
|
||||
append_psymbol_to_list (list, psym, objfile);
|
||||
list.push_back (psym);
|
||||
}
|
||||
|
||||
/* See psympriv.h. */
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
#include "readline/tilde.h"
|
||||
|
||||
#include "psymtab.h"
|
||||
#include "psympriv.h"
|
||||
|
||||
/* Unfortunately for debugging, stderr is usually a macro. This is painful
|
||||
when calling functions that take FILE *'s from the debugger.
|
||||
@ -73,6 +74,20 @@ print_symbol_bcache_statistics (void)
|
||||
}
|
||||
}
|
||||
|
||||
/* Count the number of partial symbols in OBJFILE. */
|
||||
|
||||
static int
|
||||
count_psyms (struct objfile *objfile)
|
||||
{
|
||||
int count = 0;
|
||||
for (partial_symtab *pst : objfile->psymtabs ())
|
||||
{
|
||||
count += pst->global_psymbols.size ();
|
||||
count += pst->static_psymbols.size ();
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
void
|
||||
print_objfile_statistics (void)
|
||||
{
|
||||
@ -89,9 +104,11 @@ print_objfile_statistics (void)
|
||||
if (objfile->per_bfd->n_minsyms > 0)
|
||||
printf_filtered (_(" Number of \"minimal\" symbols read: %d\n"),
|
||||
objfile->per_bfd->n_minsyms);
|
||||
if (OBJSTAT (objfile, n_psyms) > 0)
|
||||
|
||||
int n_psyms = count_psyms (objfile);
|
||||
if (n_psyms > 0)
|
||||
printf_filtered (_(" Number of \"partial\" symbols read: %d\n"),
|
||||
OBJSTAT (objfile, n_psyms));
|
||||
n_psyms);
|
||||
if (OBJSTAT (objfile, n_syms) > 0)
|
||||
printf_filtered (_(" Number of \"full\" symbols read: %d\n"),
|
||||
OBJSTAT (objfile, n_syms));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user