Turn start_psymtab_common into a constructor
authorTom Tromey <tom@tromey.com>
Tue, 22 Oct 2019 23:08:16 +0000 (17:08 -0600)
committerTom Tromey <tom@tromey.com>
Sun, 26 Jan 2020 23:40:21 +0000 (16:40 -0700)
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

gdb/ChangeLog
gdb/ctfread.c
gdb/dbxread.c
gdb/dwarf2read.c
gdb/mdebugread.c
gdb/psympriv.h
gdb/psymtab.c
gdb/xcoffread.c

index 854ac3144cf6b9f7cb6e9bfe2aa69a37075fee2d..6353a00c151403cf5fe4436ca35c0016ed1fa945 100644 (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.
index c41d96f3e587b68fdbf362a007e6fc5921492455..e3931fbd3e4ed58621ebb1a5f86d615a4b30d37f 100644 (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;
index 95270856a07df78b7e1733f512d17dab70025876..4e388fae50eb6e730727ad22afad15ede8c99c1e 100644 (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);
index 2cac2864350036cf660a0557811c2160df427bc0..f865fa484826a0a204f4f2b427c7447be1e5e830 100644 (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;
 
index 2ec30ec1deb7244263e815068435960accd111b4..dafc7f4c9cd76b035e5426dc9584667f46f5f2b8 100644 (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));
 
index 74ff10ef6a6f2c1ac48b77dbe078723795d8ee6b..82ae1b5d2516e5fdc4e23e48da758f5d9d80af4c 100644 (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
index 844e71861422434b8b3534a4c7e2f1073983c9f2..b31461c3318097077c8d23b8e6819cd23021cf69 100644 (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.  */
index be10c4f3d5c834e2ea99ddc52af2175a018c05a1..901c13469fbef41db894ab337f4a41e877b5d972 100644 (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);