Turn start_psymtab_common into a constructor

This turns start_psymtab_common into a constructor, and then changes
the callers to use "new" directly.  This completes the psymtab
allocation transition -- now it is possible for symbol readers to
subclass struct partial_symtab.

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

	* xcoffread.c (xcoff_start_psymtab): Use new.
	* psymtab.c (partial_symtab::partial_symtab): New constructor,
	renamed from start_psymtab_common.
	* psympriv.h (struct partial_symtab): Add new constructor.
	(start_psymtab_common): Don't declare.
	* mdebugread.c (parse_partial_symbols): Use new.
	* dwarf2read.c (create_partial_symtab): Use new.
	* dbxread.c (start_psymtab): Use new.
	* ctfread.c (create_partial_symtab): Use new.

Change-Id: I5a0217bcb52bcfa442559771954bb66bd9ccbf02
This commit is contained in:
Tom Tromey 2019-10-22 17:08:16 -06:00
parent 32caafd02b
commit c3693a1d94
8 changed files with 37 additions and 31 deletions

View File

@ -1,3 +1,15 @@
2020-01-26 Tom Tromey <tom@tromey.com>
* xcoffread.c (xcoff_start_psymtab): Use new.
* psymtab.c (partial_symtab::partial_symtab): New constructor,
renamed from start_psymtab_common.
* psympriv.h (struct partial_symtab): Add new constructor.
(start_psymtab_common): Don't declare.
* mdebugread.c (parse_partial_symbols): Use new.
* dwarf2read.c (create_partial_symtab): Use new.
* dbxread.c (start_psymtab): Use new.
* ctfread.c (create_partial_symtab): Use new.
2020-01-26 Tom Tromey <tom@tromey.com>
* xcoffread.c (xcoff_end_psymtab): Use new.

View File

@ -1299,7 +1299,7 @@ create_partial_symtab (const char *name,
struct partial_symtab *pst;
struct ctf_context *ccx;
pst = start_psymtab_common (objfile, name, 0);
pst = new partial_symtab (name, objfile, 0);
ccx = XOBNEW (&objfile->objfile_obstack, struct ctf_context);
ccx->fp = cfp;

View File

@ -1903,8 +1903,8 @@ static struct partial_symtab *
start_psymtab (struct objfile *objfile, const char *filename, CORE_ADDR textlow,
int ldsymoff)
{
struct partial_symtab *result =
start_psymtab_common (objfile, filename, textlow);
struct partial_symtab *result = new partial_symtab (filename, objfile,
textlow);
result->read_symtab_private =
XOBNEW (&objfile->objfile_obstack, struct symloc);

View File

@ -8027,7 +8027,7 @@ create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
struct partial_symtab *pst;
pst = start_psymtab_common (objfile, name, 0);
pst = new partial_symtab (name, objfile, 0);
pst->psymtabs_addrmap_supported = true;

View File

@ -2609,9 +2609,7 @@ parse_partial_symbols (minimal_symbol_reader &reader,
textlow = fh->adr;
else
textlow = 0;
pst = start_psymtab_common (objfile,
fdr_name (fh),
textlow);
pst = new partial_symtab (fdr_name (fh), objfile, textlow);
pst->read_symtab_private = XOBNEW (&objfile->objfile_obstack, symloc);
memset (pst->read_symtab_private, 0, sizeof (struct symloc));

View File

@ -113,6 +113,14 @@ struct partial_symtab
partial_symtab (const char *filename, struct objfile *objfile)
ATTRIBUTE_NONNULL (2) ATTRIBUTE_NONNULL (3);
/* Like the above, but also sets the initial text low and text high
from the ADDR argument, and sets the global- and
static-offsets. */
partial_symtab (const char *filename, struct objfile *objfile,
CORE_ADDR addr)
ATTRIBUTE_NONNULL (2) ATTRIBUTE_NONNULL (3);
/* Return the raw low text address of this partial_symtab. */
CORE_ADDR raw_text_low () const
{
@ -326,9 +334,6 @@ extern void add_psymbol_to_list (gdb::string_view name,
extern void init_psymbol_list (struct objfile *objfile, int total_symbols);
extern struct partial_symtab *start_psymtab_common (struct objfile *,
const char *, CORE_ADDR);
extern void end_psymtab_common (struct objfile *, struct partial_symtab *);
static inline void

View File

@ -1475,24 +1475,18 @@ sort_pst_symbols (struct objfile *objfile, struct partial_symtab *pst)
});
}
/* Allocate and partially fill a partial symtab. It will be
completely filled at the end of the symbol list.
/* Partially fill a partial symtab. It will be completely filled at
the end of the symbol list. */
FILENAME is the name of the symbol-file we are reading from. */
struct partial_symtab *
start_psymtab_common (struct objfile *objfile,
const char *filename,
CORE_ADDR textlow)
partial_symtab::partial_symtab (const char *filename,
struct objfile *objfile,
CORE_ADDR textlow)
: partial_symtab (filename, objfile)
{
struct partial_symtab *psymtab;
psymtab = new partial_symtab (filename, objfile);
psymtab->set_text_low (textlow);
psymtab->set_text_high (psymtab->raw_text_low ()); /* default */
psymtab->globals_offset = objfile->partial_symtabs->global_psymbols.size ();
psymtab->statics_offset = objfile->partial_symtabs->static_psymbols.size ();
return psymtab;
set_text_low (textlow);
set_text_high (raw_text_low ()); /* default */
globals_offset = objfile->partial_symtabs->global_psymbols.size ();
statics_offset = objfile->partial_symtabs->static_psymbols.size ();
}
/* Perform "finishing up" operations of a partial symtab. */

View File

@ -2007,11 +2007,8 @@ static struct partial_symtab *
xcoff_start_psymtab (struct objfile *objfile,
const char *filename, int first_symnum)
{
struct partial_symtab *result =
start_psymtab_common (objfile,
filename,
/* We fill in textlow later. */
0);
/* We fill in textlow later. */
struct partial_symtab *result = new partial_symtab (filename, objfile, 0);
result->read_symtab_private =
XOBNEW (&objfile->objfile_obstack, struct symloc);