GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
DWARF_NEW_EXPR(3) FreeBSD Library Functions Manual DWARF_NEW_EXPR(3)

dwarf_new_expr
create a location expression descriptor

DWARF Access Library (libdwarf, -ldwarf)

#include <libdwarf.h>

Dwarf_P_Expr
dwarf_new_expr(Dwarf_P_Debug dbg, Dwarf_Error *err);

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.

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.

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;
}

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

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)
September 8, 2011 FreeBSD 13.1-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.