Change allocate_psymtab to be a constructor

This is the next step in getting the symbol readers to allocate
psymtabs themselves: change allocate_psymtab to be an ordinary
constructor, and then use "new" at the previous call sites.  Note that
this doesn't get us all the way -- start_psymtab_common is still
allocating a partial symtab.

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

	* xcoffread.c (xcoff_end_psymtab): Use new.
	* psymtab.c (start_psymtab_common): Use new.
	(partial_symtab::partial_symtab): Rename from allocate_psymtab.
	Update.
	* psympriv.h (struct partial_symtab): Add parameters to
	constructor.  Don't inline.
	(allocate_psymtab): Don't declare.
	* mdebugread.c (new_psymtab): Use new.
	* dwarf2read.c (dwarf2_create_include_psymtab): Use new.
	* dbxread.c (dbx_end_psymtab): Use new.

Change-Id: Iffeae64c925050b90b9916cbc36e15b26ff42226
This commit is contained in:
Tom Tromey 2019-10-22 16:57:35 -06:00
parent abaa2f2340
commit 32caafd02b
7 changed files with 35 additions and 31 deletions

View File

@ -1,3 +1,16 @@
2020-01-26 Tom Tromey <tom@tromey.com>
* xcoffread.c (xcoff_end_psymtab): Use new.
* psymtab.c (start_psymtab_common): Use new.
(partial_symtab::partial_symtab): Rename from allocate_psymtab.
Update.
* psympriv.h (struct partial_symtab): Add parameters to
constructor. Don't inline.
(allocate_psymtab): Don't declare.
* mdebugread.c (new_psymtab): Use new.
* dwarf2read.c (dwarf2_create_include_psymtab): Use new.
* dbxread.c (dbx_end_psymtab): Use new.
2020-01-26 Tom Tromey <tom@tromey.com>
* psymtab.h (class psymtab_storage) <install_psymtab>: Rename from

View File

@ -2025,7 +2025,7 @@ dbx_end_psymtab (struct objfile *objfile, struct partial_symtab *pst,
for (i = 0; i < num_includes; i++)
{
struct partial_symtab *subpst =
allocate_psymtab (include_list[i], objfile);
new partial_symtab (include_list[i], objfile);
subpst->read_symtab_private =
XOBNEW (&objfile->objfile_obstack, struct symloc);

View File

@ -6695,7 +6695,7 @@ static void
dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
struct objfile *objfile)
{
struct partial_symtab *subpst = allocate_psymtab (name, objfile);
struct partial_symtab *subpst = new partial_symtab (name, objfile);
if (!IS_ABSOLUTE_PATH (subpst->filename))
{

View File

@ -4662,7 +4662,7 @@ new_psymtab (const char *name, struct objfile *objfile)
{
struct partial_symtab *psymtab;
psymtab = allocate_psymtab (name, objfile);
psymtab = new partial_symtab (name, objfile);
/* Keep a backpointer to the file's symbols. */

View File

@ -104,12 +104,14 @@ enum psymtab_search_status
struct partial_symtab
{
partial_symtab ()
: searched_flag (PST_NOT_SEARCHED),
text_low_valid (0),
text_high_valid (0)
{
}
/* Allocate a new partial symbol table associated with OBJFILE.
FILENAME (which must be non-NULL) is the filename of this partial
symbol table; it is copied into the appropriate storage. The
partial symtab will also be installed using
psymtab_storage::install. */
partial_symtab (const char *filename, struct objfile *objfile)
ATTRIBUTE_NONNULL (2) ATTRIBUTE_NONNULL (3);
/* Return the raw low text address of this partial_symtab. */
CORE_ADDR raw_text_low () const
@ -329,16 +331,6 @@ extern struct partial_symtab *start_psymtab_common (struct objfile *,
extern void end_psymtab_common (struct objfile *, struct partial_symtab *);
/* Allocate a new partial symbol table associated with OBJFILE.
FILENAME (which must be non-NULL) is the filename of this partial
symbol table; it is copied into the appropriate storage. A new
partial symbol table is returned; aside from "next" and "filename",
its fields are initialized to zero. */
extern struct partial_symtab *allocate_psymtab (const char *filename,
struct objfile *objfile)
ATTRIBUTE_NONNULL (1);
static inline void
discard_psymtab (struct objfile *objfile, struct partial_symtab *pst)
{

View File

@ -1487,7 +1487,7 @@ start_psymtab_common (struct objfile *objfile,
{
struct partial_symtab *psymtab;
psymtab = allocate_psymtab (filename, objfile);
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 ();
@ -1646,16 +1646,17 @@ init_psymbol_list (struct objfile *objfile, int total_symbols)
/* See psympriv.h. */
struct partial_symtab *
allocate_psymtab (const char *filename, struct objfile *objfile)
partial_symtab::partial_symtab (const char *filename_, struct objfile *objfile)
: searched_flag (PST_NOT_SEARCHED),
text_low_valid (0),
text_high_valid (0)
{
struct partial_symtab *psymtab = new partial_symtab;
objfile->partial_symtabs->install_psymtab (psymtab);
objfile->partial_symtabs->install_psymtab (this);
psymtab->filename
filename
= ((const char *) objfile->per_bfd->filename_cache.insert
(filename, strlen (filename) + 1));
psymtab->compunit_symtab = NULL;
(filename_, strlen (filename_) + 1));
compunit_symtab = NULL;
if (symtab_create_debug)
{
@ -1674,10 +1675,8 @@ allocate_psymtab (const char *filename, struct objfile *objfile)
}
fprintf_filtered (gdb_stdlog,
"Created psymtab %s for module %s.\n",
host_address_to_string (psymtab), filename);
host_address_to_string (this), filename);
}
return psymtab;
}
void

View File

@ -2065,7 +2065,7 @@ xcoff_end_psymtab (struct objfile *objfile, struct partial_symtab *pst,
for (i = 0; i < num_includes; i++)
{
struct partial_symtab *subpst =
allocate_psymtab (include_list[i], objfile);
new partial_symtab (include_list[i], objfile);
subpst->read_symtab_private = XOBNEW (&objfile->objfile_obstack, symloc);
((struct symloc *) subpst->read_symtab_private)->first_symnum = 0;