---
name: "dwarf_get_loclist_entry"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/dwarf_get_loclist_entry"
---

# dwarf\_get\_loclist\_entry(3)

retrieve DWARF location list entry

## NAME

**dwarf\_get\_loclist\_entry** – retrieve DWARF location list entry

## LIBRARY

library “libdwarf”

## 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)](/dwarf_init/3.md).

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/3.md), [dwarf\_loclist(3)](/dwarf_loclist/3.md), [dwarf\_loclist\_from\_expr(3)](/dwarf_loclist_from_expr/3.md), [dwarf\_loclist\_from\_expr\_a(3)](/dwarf_loclist_from_expr_a/3.md), [dwarf\_loclist\_n(3)](/dwarf_loclist_n/3.md)
