DWARF_ADD_EXPR_ADDR(3)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1, nixpkgs unstable

🌸 NAME 🌸

dwarf_add_expr_addr, dwarf_add_expr_addr_b β€” add a DW_OP_addr location expression πŸ’…

hiii bestie πŸ’– welcome to the DWARF_ADD_EXPR_ADDR(3) page from the Library Functions Manual β€” yes, that's the manual name, and we're doing iconic DWARF business today ✨.


πŸŽ€ LIBRARY πŸŽ€

DWARF Access Library β€” that's libdwarf, and you link it with -ldwarf 🫢


✨ SYNOPSIS ✨

okay so copy-paste this exactly, bestie:

#include <libdwarf.h>

Dwarf_Unsigned
dwarf_add_expr_addr(Dwarf_P_Expr expr, Dwarf_Unsigned address,
    Dwarf_Signed sym_index, Dwarf_Error *err);

Dwarf_Unsigned
dwarf_add_expr_addr_b(Dwarf_P_Expr expr, Dwarf_Unsigned address,
    Dwarf_Unsigned sym_index, Dwarf_Error *err);

πŸ’– DESCRIPTION πŸ’–

okay so dwarf_add_expr_addr_b() is the main character here πŸ‘‘: it adds a DW_OP_addr location expression 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) β€” don't just make one out of vibes, bestie 🧚.

Argument address specifies the operand, a relocatable address value πŸ’«.

Argument sym_index specifies the ELF symbol index of the symbol to be used for relocation 🎯.

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

Now the tea β˜•: function dwarf_add_expr_addr() is deprecated. It is similar to function dwarf_add_expr_addr_b() except that it cannot handle all possible symbol index values β€” so that's the catch, no cap πŸ’€.


πŸ¦‹ RETURN VALUES πŸ¦‹

On success, these functions return the size in bytes of the location expression byte stream generated β€” yes, bytes, not vibes πŸ“.

In case of an error, these functions return DW_DLV_NOCOUNT and set the argument err 😭.


πŸ”₯ ERRORS πŸ”₯

These functions can fail with:

  • [DW_DLE_ARGUMENT] β€” Argument expr 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_gen(3), dwarf_expr_current_offset(3), dwarf_expr_into_block(3), dwarf_new_expr(3)


mwah πŸ’‹ this page came from Debian, dated September 9, 2011 β€” bye bestie, go slay those location expressions 🌈✨

πŸ“¦ where this page comes from