Introduce new add_psymbol_to_list overload
authorTom Tromey <tom@tromey.com>
Fri, 24 Apr 2020 21:35:01 +0000 (15:35 -0600)
committerTom Tromey <tromey@adacore.com>
Fri, 24 Apr 2020 21:35:02 +0000 (15:35 -0600)
This adds a new overload of add_psymbol_to_list.  This one takes an
already constructed psymbol and adds it to the bcache and the
appropriate list.

This seemed cleaner than continuing to add parameters to the existing
add_psymbol_to_list, and is more in line with how full symbols are
constructed.

gdb/ChangeLog
2020-04-24  Tom Tromey  <tom@tromey.com>

* psymtab.c (add_psymbol_to_bcache): Simplify calling convention.
(add_psymbol_to_list): New overload.  Make old overload call new
one.
* psympriv.h (add_psymbol_to_list): New overload.

gdb/ChangeLog
gdb/psympriv.h
gdb/psymtab.c

index df43ffd296e180db8427849761a580e2d3c31f7a..083d4d29eca4e5a8c8766525b1463a38d35cae92 100644 (file)
@@ -1,3 +1,10 @@
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+       * psymtab.c (add_psymbol_to_bcache): Simplify calling convention.
+       (add_psymbol_to_list): New overload.  Make old overload call new
+       one.
+       * psympriv.h (add_psymbol_to_list): New overload.
+
 2020-04-24  Tom Tromey  <tom@tromey.com>
 
        * dwarf2/read.c (partial_die_info::read) <case
index fdcee99e330989dd0b11edb1b61559dd2b712329..6f0307e05b787d762267e7c7e74179e28b21eecf 100644 (file)
@@ -424,6 +424,14 @@ extern void add_psymbol_to_list (gdb::string_view name,
                                 enum language language,
                                 struct objfile *objfile);
 
+/* Add a symbol to the partial symbol table of OBJFILE.  The psymbol
+   must be fully constructed, and the names must be set and intern'd
+   as appropriate.  */
+
+extern void add_psymbol_to_list (const partial_symbol &psym,
+                                psymbol_placement where,
+                                struct objfile *objfile);
+
 /* Initialize storage for partial symbols.  If partial symbol storage
    has already been initialized, this does nothing.  TOTAL_SYMBOLS is
    an estimate of how many symbols there will be.  */
index 376cbeedcdf392d17270a57ee3a26c6d69080e2f..118dc570e7cb60ebd56799e60f2da783d740038e 100644 (file)
@@ -1590,24 +1590,10 @@ psymbol_compare (const void *addr1, const void *addr2, int length)
    different domain (or address) is possible and correct.  */
 
 static struct partial_symbol *
-add_psymbol_to_bcache (gdb::string_view name, bool copy_name,
-                      domain_enum domain,
-                      enum address_class theclass,
-                      short section,
-                      CORE_ADDR coreaddr,
-                      enum language language, struct objfile *objfile,
+add_psymbol_to_bcache (const partial_symbol &psymbol,
+                      struct objfile *objfile,
                       int *added)
 {
-  struct partial_symbol psymbol;
-  memset (&psymbol, 0, sizeof (psymbol));
-
-  psymbol.set_unrelocated_address (coreaddr);
-  psymbol.ginfo.section = section;
-  psymbol.domain = domain;
-  psymbol.aclass = theclass;
-  psymbol.ginfo.set_language (language, objfile->partial_symtabs->obstack ());
-  psymbol.ginfo.compute_and_set_names (name, copy_name, objfile->per_bfd);
-
   /* Stash the partial symbol away in the cache.  */
   return ((struct partial_symbol *)
          objfile->partial_symtabs->psymbol_cache.insert
@@ -1628,21 +1614,16 @@ append_psymbol_to_list (std::vector<partial_symbol *> *list,
 /* See psympriv.h.  */
 
 void
-add_psymbol_to_list (gdb::string_view name, bool copy_name,
-                    domain_enum domain,
-                    enum address_class theclass,
-                    short section,
+add_psymbol_to_list (const partial_symbol &psymbol,
                     psymbol_placement where,
-                    CORE_ADDR coreaddr,
-                    enum language language, struct objfile *objfile)
+                    struct objfile *objfile)
 {
   struct partial_symbol *psym;
 
   int added;
 
   /* Stash the partial symbol away in the cache.  */
-  psym = add_psymbol_to_bcache (name, copy_name, domain, theclass,
-                               section, coreaddr, language, objfile, &added);
+  psym = add_psymbol_to_bcache (psymbol, objfile, &added);
 
   /* Do not duplicate global partial symbols.  */
   if (where == psymbol_placement::GLOBAL && !added)
@@ -1658,6 +1639,30 @@ add_psymbol_to_list (gdb::string_view name, bool copy_name,
 
 /* See psympriv.h.  */
 
+void
+add_psymbol_to_list (gdb::string_view name, bool copy_name,
+                    domain_enum domain,
+                    enum address_class theclass,
+                    short section,
+                    psymbol_placement where,
+                    CORE_ADDR coreaddr,
+                    enum language language, struct objfile *objfile)
+{
+  struct partial_symbol psymbol;
+  memset (&psymbol, 0, sizeof (psymbol));
+
+  psymbol.set_unrelocated_address (coreaddr);
+  psymbol.ginfo.section = section;
+  psymbol.domain = domain;
+  psymbol.aclass = theclass;
+  psymbol.ginfo.set_language (language, objfile->partial_symtabs->obstack ());
+  psymbol.ginfo.compute_and_set_names (name, copy_name, objfile->per_bfd);
+
+  add_psymbol_to_list (psymbol, where, objfile);
+}
+
+/* See psympriv.h.  */
+
 void
 init_psymbol_list (struct objfile *objfile, int total_symbols)
 {
This page took 0.030874 seconds and 4 git commands to generate.