gdb/
Fix entry-values in C++ across CUs. * dwarf2loc.c (call_site_to_target_addr) <FIELD_LOC_KIND_PHYSNAME>: Use lookup_minimal_symbol. Add a comment. * dwarf2read.c (read_call_site_scope) <is_ref_attr> <die_is_declaration>: Prefer DW_AT_linkage_name. gdb/testsuite/ Fix entry-values in C++ across CUs. * gdb.arch/amd64-tailcall-cxx.exp: New file. * gdb.arch/amd64-tailcall-cxx1.S: New file. * gdb.arch/amd64-tailcall-cxx1.cc: New file. * gdb.arch/amd64-tailcall-cxx2.S: New file. * gdb.arch/amd64-tailcall-cxx2.cc: New file.
This commit is contained in:
parent
55e9373143
commit
9112db0926
9 changed files with 767 additions and 3 deletions
|
@ -9812,9 +9812,18 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||
gdb_assert (target_cu->objfile == objfile);
|
||||
if (die_is_declaration (target_die, target_cu))
|
||||
{
|
||||
const char *target_physname;
|
||||
const char *target_physname = NULL;
|
||||
struct attribute *target_attr;
|
||||
|
||||
target_physname = dwarf2_physname (NULL, target_die, target_cu);
|
||||
/* Prefer the mangled name; otherwise compute the demangled one. */
|
||||
target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
|
||||
if (target_attr == NULL)
|
||||
target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
|
||||
target_cu);
|
||||
if (target_attr != NULL && DW_STRING (target_attr) != NULL)
|
||||
target_physname = DW_STRING (target_attr);
|
||||
else
|
||||
target_physname = dwarf2_physname (NULL, target_die, target_cu);
|
||||
if (target_physname == NULL)
|
||||
complaint (&symfile_complaints,
|
||||
_("DW_AT_GNU_call_site_target target DIE has invalid "
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue