aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-10-22 17:08:16 -0600
committerTom Tromey <tom@tromey.com>2020-01-26 16:40:21 -0700
commitc3693a1d9466bc9d3abe004e66f1b56fed22ba61 (patch)
tree8e9f5a9fda035595e06d889abd595b4e173af616
parent32caafd02b069c36908f41f53ae0cbca1911aaca (diff)
downloadgdb-c3693a1d9466bc9d3abe004e66f1b56fed22ba61.zip
gdb-c3693a1d9466bc9d3abe004e66f1b56fed22ba61.tar.gz
gdb-c3693a1d9466bc9d3abe004e66f1b56fed22ba61.tar.bz2
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
-rw-r--r--gdb/ChangeLog12
-rw-r--r--gdb/ctfread.c2
-rw-r--r--gdb/dbxread.c4
-rw-r--r--gdb/dwarf2read.c2
-rw-r--r--gdb/mdebugread.c4
-rw-r--r--gdb/psympriv.h11
-rw-r--r--gdb/psymtab.c26
-rw-r--r--gdb/xcoffread.c7
8 files changed, 37 insertions, 31 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 854ac31..6353a00 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,17 @@
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.
* psymtab.c (start_psymtab_common): Use new.
(partial_symtab::partial_symtab): Rename from allocate_psymtab.
diff --git a/gdb/ctfread.c b/gdb/ctfread.c
index c41d96f..e3931fb 100644
--- a/gdb/ctfread.c
+++ b/gdb/ctfread.c
@@ -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;
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index 9527085..4e388fae 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -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);
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 2cac286..f865fa4 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -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;
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index 2ec30ec..dafc7f4 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -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));
diff --git a/gdb/psympriv.h b/gdb/psympriv.h
index 74ff10e..82ae1b5 100644
--- a/gdb/psympriv.h
+++ b/gdb/psympriv.h
@@ -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
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 844e718..b31461c 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -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. */
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index be10c4f..901c134 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -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);