diff options
author | Tom Tromey <tom@tromey.com> | 2020-11-01 09:51:13 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2020-11-01 09:51:14 -0700 |
commit | 0684bb51b5207aed1d76098ebaca6243f9c168e7 (patch) | |
tree | 84024f5fc2d6abce09f3b97de805617f342804bc | |
parent | 089002bba03cf3f546dd63f98e763254ae04d7c1 (diff) | |
download | gdb-0684bb51b5207aed1d76098ebaca6243f9c168e7.zip gdb-0684bb51b5207aed1d76098ebaca6243f9c168e7.tar.gz gdb-0684bb51b5207aed1d76098ebaca6243f9c168e7.tar.bz2 |
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.
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/objfiles.h | 3 | ||||
-rw-r--r-- | gdb/psymtab.c | 13 | ||||
-rw-r--r-- | gdb/symmisc.c | 21 |
4 files changed, 28 insertions, 17 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 967317a..f34932d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 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. * dwarf2/read.c (process_psymtab_comp_unit_reader): Update. (build_type_psymtabs_reader): Update. diff --git a/gdb/objfiles.h b/gdb/objfiles.h index 549977a..bf3d7fc 100644 --- a/gdb/objfiles.h +++ b/gdb/objfiles.h @@ -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; diff --git a/gdb/psymtab.c b/gdb/psymtab.c index b3deef41..dc802a6 100644 --- a/gdb/psymtab.c +++ b/gdb/psymtab.c @@ -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. */ diff --git a/gdb/symmisc.c b/gdb/symmisc.c index fc56cfa..8d748b9 100644 --- a/gdb/symmisc.c +++ b/gdb/symmisc.c @@ -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)); |