dwarf_formref,
dwarf_global_formref —
retrieve offsets for REFERENCE class attributes
DWARF Access Library (libdwarf,
-ldwarf)
#include
<libdwarf.h>
int
dwarf_formref(Dwarf_Attribute
attr, Dwarf_Off *retoffset,
Dwarf_Error *err);
int
dwarf_global_formref(Dwarf_Attribute
attr, Dwarf_Off *retoffset,
Dwarf_Error *err);
These functions return the offsets associated with a DWARF
attribute descriptor.
Function
dwarf_formref()
returns the compilation unit relative offset of the descriptor referenced by
argument attr in the location pointed to by argument
retoffset. Argument attr must be
a reference that is local to a compilation unit. Permitted forms for
argument attr are
DW_FORM_ref1, DW_FORM_ref2,
DW_FORM_ref4, DW_FORM_ref8
and DW_FORM_ref_udata.
Function
dwarf_global_formref()
returns the section-relative offset of the descriptor referenced by argument
attr in the location pointed to by argument
retoffset. Argument attr should
be a legal
REFERENCE
class form. Permitted forms for argument attr are:
DW_FORM_ref_addr,
DW_FORM_ref_udata,
DW_FORM_ref1, DW_FORM_ref2,
DW_FORM_ref4, DW_FORM_ref8
and DW_FORM_sec_offset. The returned offset is
relative to the start of the “.debug_info” ELF section.
If argument err is not NULL, it will be used
to return an error descriptor in case of an error.
These functions return DW_DLV_OK on
success. In case of an error, these functions return
DW_DLV_ERROR and sets argument
err.
These functions may fail with the following errors:
- [
DW_DLE_ARGUMENT]
- Either of arguments attr or
retoffset was NULL.
- [
DW_DLE_ATTR_FORM_BAD]
- The attribute referenced by argument attr was not of
a permitted kind.