tail head cat sleep
QR code linking to this page

Manual Pages  — DWARF_NEW_EXPR

NAME

dwarf_new_expr – create a location expression descriptor

CONTENTS

LIBRARY

DWARF Access Library (libdwarf, -ldwarf)

SYNOPSIS

#include <libdwarf.h>

Dwarf_P_Expr
dwarf_new_expr(Dwarf_P_Debug dbg, Dwarf_Error *err);

DESCRIPTION

Function dwarf_new_expr() allocates a DWARF location expression descriptor used to build up a location expression stream.

The application can use the functions dwarf_add_expr_gen(3) and dwarf_add_expr_addr_b(3) to add location expression operators to the created descriptor. When done, the application can call the function dwarf_expr_into_block(3) to retrieve the generated byte stream for the location expression, or call the function dwarf_add_AT_location_expr(3) to create an attribute with the location expression stream as its value.

Argument dbg should reference a DWARF producer instance allocated using dwarf_producer_init(3) or dwarf_producer_init_b(3).

If argument err is not NULL, it will be used to store error information in case of an error.

RETURN VALUES

On success, function dwarf_new_expr() returns the created location expression descriptor. In case of an error, function dwarf_new_expr() returns DW_DLV_BADADDR and sets the argument err.

EXAMPLES

To create a location expression descriptor, add location expression operators to it and to retrieve the generated byte stream, use:
Dwarf_P_Debug dbg;
Dwarf_Error de;
Dwarf_P_Expr pe;
Dwarf_Addr buf;
Dwarf_Unsigned len;

/* ...Assume that `dbg' refers to a DWARF producer instance... */

if ((pe = dwarf_new_expr(dbg, &de)) == DW_DLV_BADADDR) {         warnx("dwarf_new_expr failed: %s", dwarf_errmsg(-1));         return; }

if (dwarf_add_expr_gen(pe, DW_OP_regx, 55, 0, &de) == DW_DLV_NOCOUNT) {         warnx("dwarf_add_expr_gen failed: %s", dwarf_errmsg(-1));         return; }

if ((buf = dwarf_expr_into_block(pe, &len, &de)) == DW_DLV_BADADDR) {         warnx("dwarf_expr_into_block failed: %s",          dwarf_errmsg(-1));         return; }

ERRORS

Function dwarf_new_expr() can fail with:
[DW_DLE_ARGUMENT] Argument dbg was NULL.
[DW_DLE_MEMORY] An out of memory condition was encountered during the execution of the function.

SEE ALSO

dwarf(3), dwarf_add_AT_location_expr(3), dwarf_add_expr_addr(3), dwarf_add_expr_addr_b(3), dwarf_add_expr_gen(3), dwarf_expr_current_offset(3), dwarf_expr_into_block(3), dwarf_producer_init(3), dwarf_producer_init_b(3)

DWARF_NEW_EXPR (3) September 8, 2011

tail head cat sleep
QR code linking to this page


Please direct any comments about this manual page service to Ben Bullock. Privacy policy.

UNIX has been evolving feverishly for close to 30 years, sort of like bacteria in a cesspool — only not as attractive
— John Levine, "Unix for Dummies"