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 <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.
This commit is contained in:
parent
e61108c92d
commit
2467f4f6a5
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user