DWARF_FORMREF(3)

DWARF_FORMREF(3) | Library Functions Manual | DWARF_FORMREF(3)

# NAME

`dwarf_formref`, `dwarf_global_formref` — retrieve offsets for REFERENCE class attributes

# LIBRARY

DWARF Access Library (libdwarf, -ldwarf)

# SYNOPSIS

`#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);

# DESCRIPTION

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.

# RETURN VALUES

These functions return `DW_DLV_OK` on success. In case of an error, these functions return `DW_DLV_ERROR` and sets argument err.

# ERRORS

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.

# SEE ALSO

dwarf(3), dwarf_attr(3), dwarf_formblock(3), dwarf_formflag(3), dwarf_formsdata(3), dwarf_formsig8(3), dwarf_formstring(3), dwarf_formudata(3), dwarf_hasattr(3)

June 21, 2010 | NetBSD 11.0