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.