DWARF_GET_LOCLIST_ENTRY(3)

DWARF_GET_LOCLIST_ENTRY(3) | Library Functions Manual | DWARF_GET_LOCLIST_ENTRY(3)

# NAME

`dwarf_get_loclist_entry` —
retrieve DWARF location list entry

# LIBRARY

DWARF Access Library (libdwarf, -ldwarf)

# SYNOPSIS

`#include <libdwarf.h>`

int
`dwarf_get_loclist_entry`(Dwarf_Debug dbg, Dwarf_Unsigned offset, Dwarf_Addr *hipc, Dwarf_Addr *lopc, Dwarf_Ptr *data, Dwarf_Unsigned *entry_len, Dwarf_Unsigned *next_entry, Dwarf_Error *err);

# DESCRIPTION

Function `dwarf_get_loclist_entry`() retrieves a location list entry from the DWARF section “.debug_loc”.

Argument dbg should reference a DWARF debug context allocated using dwarf_init(3).

Argument offset is an offset, relative to the “.debug_loc” section, to the start of the desired location list entry.

Argument hipc should point to a location which will hold the offset, relative to the base address of the location list entry, of the highest program counter value for the entry.

Argument lowpc should point to a location which will hold the offset, relative to the base address of the location list entry, of the lowest program counter value for the entry.

Argument data should point to a location which will be set to a pointer to the location list data.

Argument entry_len should point to a location which will hold the length in bytes of the location list data returned in argument data.

Argument next_entry should point to a location which will hold the offset of the next location list entry.

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

# RETURN VALUES

Function `dwarf_get_loclist_entry`() returns `DW_DLV_OK` when it succeeds. It returns `DW_DLV_NO_ENTRY` if there is no location list at the specified offset offset. In case of an error, it returns `DW_DLV_ERROR` and sets the argument err.

# EXAMPLES

To iterate through all the location list entries in the “.debug_loc” section, use:

    Dwarf_Debug dbg;
    Dwarf_Unsigned off, len, next;
    Dwarf_Addr hipc, lopc;
    Dwarf_Ptr data;
    Dwarf_Error de;
    int ret;

    off = 0;
    while ((ret = dwarf_get_loclist_entry(dbg, off, &hipc, &lopc, &data,
        &len, &next, &de)) == DW_DLV_OK) {
    	/* ... use loclist entry ... */
    	off = next;
    }
    if (ret == DW_DLV_ERROR)
    	warnx("dwarf_get_loclist_entry failed: %s", dwarf_errmsg(de));

# ERRORS

Function `dwarf_get_loclist_entry`() can fail with:

[`DW_DLE_ARGUMENT`]
  One of the arguments dbg, hipc, lopc, data, entry_len or next_entry was `NULL`.
[`DW_DLE_NO_ENTRY`]
  There is no location list at the specified offset offset.

# SEE ALSO

dwarf(3), dwarf_loclist(3), dwarf_loclist_from_expr(3), dwarf_loclist_from_expr_a(3), dwarf_loclist_n(3)

July 6, 2011 | NetBSD 10.1