dwarf_add_AT_location_expr —
create an attribute descriptor for a location
expression
DWARF Access Library (libdwarf, -ldwarf)
#include
<libdwarf.h>
Dwarf_P_Attribute
dwarf_add_AT_location_expr(
Dwarf_P_Debug
dbg,
Dwarf_P_Die die,
Dwarf_Half attr,
Dwarf_P_Expr loc_expr,
Dwarf_Error *err);
Function
dwarf_add_AT_location_expr() creates an
attribute descriptor for a location expression and attaches it to the
debugging information entry referenced by argument
die.
Argument
dbg should reference a DWARF producer
instance allocated using
dwarf_producer_init(3)
or
dwarf_producer_init_b(3).
Argument
die should reference a debugging
information entry allocated using
dwarf_new_die(3).
Argument
attr specifies the attribute code of
the created attribute descriptor.
Argument
loc_expr should reference a location
expression descriptor allocated using
dwarf_new_expr(3).
The attribute created by function
dwarf_add_AT_location_expr() will have one of the
DWARF forms
DW_FORM_block
,
DW_FORM_block1
,
DW_FORM_block2
or
DW_FORM_block4
, depending on the size of
the byte stream generated by the location expression descriptor referenced by
argument
loc_expr.
If argument
err is not NULL, it will be used by
to store error information in case of an error.
On success, function
dwarf_add_AT_location_expr()
returns the created attribute descriptor. In case of an error, function
dwarf_add_AT_location_expr() returns
DW_DLV_BADADDR
and sets the argument
err.
Function
dwarf_add_AT_location_expr() can fail
with:
-
-
- [
DW_DLE_ARGUMENT
]
- One of the arguments dbg,
die or
loc_expr was NULL.
-
-
- [
DW_DLE_MEMORY
]
- An out of memory condition was encountered during the
execution of the function.
dwarf(3),
dwarf_new_die(3),
dwarf_new_expr(3),
dwarf_producer_init(3),
dwarf_producer_init_b(3)