aboutsummaryrefslogtreecommitdiff
path: root/gdb/psympriv.h
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-10-23 09:40:54 -0600
committerTom Tromey <tom@tromey.com>2020-01-26 16:40:21 -0700
commit8566b89b737eef50f67bf23329b4606cf7973de1 (patch)
tree022486e22ca850c04d2488ec9913114191a69f91 /gdb/psympriv.h
parent077cbab270376098e90c841690f9e4439b63d3d4 (diff)
downloadgdb-8566b89b737eef50f67bf23329b4606cf7973de1.zip
gdb-8566b89b737eef50f67bf23329b4606cf7973de1.tar.gz
gdb-8566b89b737eef50f67bf23329b4606cf7973de1.tar.bz2
Introduce partial_symtab::expand_psymtab method
The symbol readers generally used two functions to expand a partial symtab: an outer function (now the "read_symtab" method), and an inner function, typically named something like "psymtab_to_symtab". This patch changes this second step to be a method on partial_symtab, and updates all the callers. For legacy_psymtab, a new function pointer member is introduced. This patch enables a subsequent cleanup. gdb/ChangeLog 2020-01-26 Tom Tromey <tom@tromey.com> * xcoffread.c (xcoff_psymtab_to_symtab_1): Change argument order. Call expand_psymtab. (xcoff_read_symtab): Call expand_psymtab. (xcoff_start_psymtab, xcoff_end_psymtab): Set legacy_expand_psymtab. * psympriv.h (struct partial_symtab) <expand_psymtab>: New method. (struct legacy_psymtab) <expand_psymtab>: Implement. <legacy_expand_psymtab>: New member. * mdebugread.c (mdebug_read_symtab): Call expand_psymtab. (parse_partial_symbols): Set legacy_expand_psymtab. (psymtab_to_symtab_1): Change argument order. Call expand_psymtab. (new_psymtab): Set legacy_expand_psymtab. * dwarf2read.h (struct dwarf2_psymtab) <expand_psymtab>: Declare. * dwarf2read.c (dwarf2_psymtab::read_symtab): Call expand_psymtab. (dwarf2_psymtab::expand_psymtab): Rename from psymtab_to_symtab_1. Call expand_psymtab. * dbxread.c (start_psymtab): Set legacy_expand_psymtab. (dbx_end_psymtab): Likewise. (dbx_psymtab_to_symtab_1): Change argument order. Call expand_psymtab. (dbx_read_symtab): Call expand_psymtab. * ctfread.c (struct ctf_psymtab) <expand_psymtab>: Declare. (ctf_psymtab::expand_psymtab): Rename from psymtab_to_symtab. (ctf_psymtab::read_symtab): Call expand_psymtab. Change-Id: Ic39a2d7aa7b424088d910b59dbd21271fa1c3430
Diffstat (limited to 'gdb/psympriv.h')
-rw-r--r--gdb/psympriv.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/gdb/psympriv.h b/gdb/psympriv.h
index 4c189aa..ae98a69 100644
--- a/gdb/psympriv.h
+++ b/gdb/psympriv.h
@@ -129,6 +129,11 @@ struct partial_symtab
table. */
virtual void read_symtab (struct objfile *) = 0;
+ /* Psymtab expansion is done in two steps. The first step is a call
+ to read_symtab; but while that is in progress, calls to
+ expand_psymtab can be made. */
+ virtual void expand_psymtab (struct objfile *) = 0;
+
/* Return the raw low text address of this partial_symtab. */
CORE_ADDR raw_text_low () const
{
@@ -311,11 +316,21 @@ struct legacy_psymtab : public partial_symtab
(*legacy_read_symtab) (this, objf);
}
+ void expand_psymtab (struct objfile *objf) override
+ {
+ (*legacy_expand_psymtab) (this, objf);
+ }
+
/* Pointer to function which will read in the symtab corresponding to
this psymtab. */
void (*legacy_read_symtab) (legacy_psymtab *, struct objfile *) = nullptr;
+ /* Pointer to function which will actually expand this psymtab into
+ a full symtab. */
+
+ void (*legacy_expand_psymtab) (legacy_psymtab *, struct objfile *) = nullptr;
+
/* Information that lets read_symtab() locate the part of the symbol table
that this psymtab corresponds to. This information is private to the
format-dependent symbol reading routines. For further detail examine