diff options
author | Tom Tromey <tom@tromey.com> | 2019-10-22 16:57:35 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2020-01-26 16:40:21 -0700 |
commit | 32caafd02b069c36908f41f53ae0cbca1911aaca (patch) | |
tree | 100fcb2c3ac32456eb3fdc8d452f0bf1766afd17 | |
parent | abaa2f2340a400fd19aea2973f705fe813d620d4 (diff) | |
download | gdb-32caafd02b069c36908f41f53ae0cbca1911aaca.zip gdb-32caafd02b069c36908f41f53ae0cbca1911aaca.tar.gz gdb-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
-rw-r--r-- | gdb/ChangeLog | 13 | ||||
-rw-r--r-- | gdb/dbxread.c | 2 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 2 | ||||
-rw-r--r-- | gdb/mdebugread.c | 2 | ||||
-rw-r--r-- | gdb/psympriv.h | 24 | ||||
-rw-r--r-- | gdb/psymtab.c | 21 | ||||
-rw-r--r-- | gdb/xcoffread.c | 2 |
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; |