From 2467f4f6a533a28047e0b45ce716b9b1f9f72a09 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 24 Apr 2020 15:35:01 -0600 Subject: [PATCH] Introduce new add_psymbol_to_list overload 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 * 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 | 7 +++++++ gdb/psympriv.h | 8 ++++++++ gdb/psymtab.c | 53 +++++++++++++++++++++++++++----------------------- 3 files changed, 44 insertions(+), 24 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index df43ffd296e..083d4d29eca 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2020-04-24 Tom Tromey + + * 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 * dwarf2/read.c (partial_die_info::read) 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 *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) { -- 2.30.2