aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-10-22 16:57:35 -0600
committerTom Tromey <tom@tromey.com>2020-01-26 16:40:21 -0700
commit32caafd02b069c36908f41f53ae0cbca1911aaca (patch)
tree100fcb2c3ac32456eb3fdc8d452f0bf1766afd17 /gdb
parentabaa2f2340a400fd19aea2973f705fe813d620d4 (diff)
downloadbinutils-32caafd02b069c36908f41f53ae0cbca1911aaca.zip
binutils-32caafd02b069c36908f41f53ae0cbca1911aaca.tar.gz
binutils-32caafd02b069c36908f41f53ae0cbca1911aaca.tar.bz2
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
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog13
-rw-r--r--gdb/dbxread.c2
-rw-r--r--gdb/dwarf2read.c2
-rw-r--r--gdb/mdebugread.c2
-rw-r--r--gdb/psympriv.h24
-rw-r--r--gdb/psymtab.c21
-rw-r--r--gdb/xcoffread.c2
7 files changed, 35 insertions, 31 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 475ebbb..854ac31 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,18 @@
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
allocate_psymtab. Update documentation.
* psymtab.c (psymtab_storage::install_psymtab): Rename from
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index d4d7901..9527085 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -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);
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 6394410..2cac286 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -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))
{
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index f28c0b2..2ec30ec 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -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. */
diff --git a/gdb/psympriv.h b/gdb/psympriv.h
index ce28112..74ff10e 100644
--- a/gdb/psympriv.h
+++ b/gdb/psympriv.h
@@ -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)
{
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 975737c..844e718 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -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
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index 27e49f7..be10c4f 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -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;