https://sourceware.org/bugzilla/show_bug.cgi?id=23982
Bug ID: 23982
Summary: dwarf_formref_die() does not support DW_FORM_indirect
Product: elfutils
Version: unspecified
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: libdw
Assignee: unassigned at sourceware dot org
Reporter: Andreas.Kromke at dreamchip dot de
CC: elfutils-devel at sourceware dot org
Target Milestone: ---
This kind of indirect form is generated by some ARM compilers.
A temporary workaround might be:
Dwarf_Attribute *attr = dwarf_attr_integrate(die, DW_AT_type, &attr_mem);
if (attr != NULL)
{
unsigned int whatform = dwarf_whatform(attr);
while(whatform == DW_FORM_indirect)
{
uint64_t val;
const unsigned char *p = (const unsigned char *) attr->valp;
get_uleb128_unchecked(val, p);
whatform = (unsigned int) val;
attr_mem.form = whatform;
attr_mem.valp = (void *) p;
}
Dwarf_Die *type = dwarf_formref_die(attr, type_die);
...
However, this method is rather ugly, because it needs the internal function
get_uleb128_unchecked().
--
You are receiving this mail because:
You are on the CC list for the bug.