mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-06 12:09:26 +08:00
[gdb/symtab] Fix htab_find_slot call in read_call_site_scope
In read_call_site_scope we have: ... call_site_local.pc = pc; slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT); ... The call passes a call_site pointer as element. OTOH, the hashtab is created using hash_f == core_addr_hash and eq_f == core_addr_eq, so the element will be accessed through a CORE_ADDR pointer. This is not wrong (at least in C), given that pc is the first field in call_site. Nevertheless, as in call_site_for_pc, make the htab_find_slot call match the used hash_f and eq_f by using &pc instead: ... slot = htab_find_slot (cu->call_site_htab, &pc, INSERT); ... Tested on x86_64-linux. Co-Authored-By: Tom de Vries <tdevries@suse.de>
This commit is contained in:
parent
242fe37867
commit
b4c919f752
@ -13341,7 +13341,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
||||
struct gdbarch *gdbarch = objfile->arch ();
|
||||
CORE_ADDR pc, baseaddr;
|
||||
struct attribute *attr;
|
||||
struct call_site *call_site, call_site_local;
|
||||
struct call_site *call_site;
|
||||
void **slot;
|
||||
int nparams;
|
||||
struct die_info *child_die;
|
||||
@ -13369,8 +13369,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
||||
cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
|
||||
NULL, &objfile->objfile_obstack,
|
||||
hashtab_obstack_allocate, NULL);
|
||||
call_site_local.pc = pc;
|
||||
slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
|
||||
slot = htab_find_slot (cu->call_site_htab, &pc, INSERT);
|
||||
if (*slot != NULL)
|
||||
{
|
||||
complaint (_("Duplicate PC %s for DW_TAG_call_site "
|
||||
|
@ -1793,9 +1793,7 @@ struct call_site_parameter
|
||||
|
||||
struct call_site
|
||||
{
|
||||
/* * Address of the first instruction after this call. It must be
|
||||
the first field as we overload core_addr_hash and core_addr_eq
|
||||
for it. */
|
||||
/* Address of the first instruction after this call. */
|
||||
|
||||
CORE_ADDR pc;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user