https://sourceware.org/bugzilla/show_bug.cgi?id=23981
Bug ID: 23981
Summary: dwarf_siblingof() fails with attribute form
DW_FORM_ref_addr
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: ---
The API function dwarf_siblingof() internally calls __libdw_formref() which is
deprecated and especially does not support DW_FORM_ref_addr, resulting in a
return code of -1 (format error).
Instead dwarf_siblingof() should call dwarf_formref_die() or an internal
variant of that.
A temporary workaround might be:
int my_dwarf_siblingof(Dwarf_Die *die, Dwarf_Die *result) {
int ret = dwarf_siblingof(die, result);
if (ret >= 0) return ret;
Dwarf_Attribute attr_result;
Dwarf_Attribute *attr = dwarf_attr(die, DW_AT_sibling, &attr_result);
if (attr == NULL) return -1;
Dwarf_Die *formref_die = dwarf_formref_die(attr, result);
if (formref_die == NULL) return -1;
return 0;
}
--
You are receiving this mail because:
You are on the CC list for the bug.