Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


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)

NetBSD 10.99                   September 9, 2011                  NetBSD 10.99