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 11.0