DWARF_ADD_EXPR_GEN(3) | Library Functions Manual | DWARF_ADD_EXPR_GEN(3)

# NAME

`dwarf_add_expr_gen` —
add an operator to a location expression descriptor

# LIBRARY

DWARF Access Library (libdwarf, -ldwarf)

# SYNOPSIS

`#include <libdwarf.h>`

Dwarf_Unsigned
`dwarf_add_expr_gen`(Dwarf_P_Expr expr, Dwarf_Small opcode, Dwarf_Unsigned val1, Dwarf_Unsigned val2, Dwarf_Error *err);

# DESCRIPTION

Function `dwarf_add_expr_gen`() adds a location expression operator to the location expression descriptor referenced by argument expr.

Argument expr should reference a location expression descriptor allocated using the function dwarf_new_expr(3).

Argument opcode specifies the operation code of the location expression operator. Valid values for this argument are those denoted by the `DW_OP_`* constants defined in `<libdwarf.h>`.

To generate a `DW_OP_addr` operation, application code should instead use dwarf_add_expr_addr_b(3).

Argument val1 specifies the first operand of the location expression operator.

Argument val2 specifies the second operand of the location expression operator.

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_add_expr_gen`() returns the size in bytes of the location expression byte stream generated. In case of an error, function `dwarf_add_expr_gen`() returns `DW_DLV_NOCOUNT` and sets the argument err.

# ERRORS

Function `dwarf_add_expr_gen`() can fail with:

[`DW_DLE_ARGUMENT`]
  Argument expr was NULL.
[`DW_DLE_LOC_EXPR_BAD`]
  The operation code specified in argument opcode was invalid.
[`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_expr_current_offset(3), dwarf_expr_into_block(3), dwarf_new_expr(3)

September 9, 2011 | NetBSD 9.1