DWARF_GET_FDE_AT_PC(3) | Library Functions Manual | DWARF_GET_FDE_AT_PC(3)

# NAME

`dwarf_get_fde_at_pc` —
retrieve the FDE descriptor for an address

# LIBRARY

DWARF Access Library (libdwarf, -ldwarf)

# SYNOPSIS

`#include <libdwarf.h>`

int
`dwarf_get_fde_at_pc`(Dwarf_Fde *fdelist, Dwarf_Addr pc, Dwarf_Fde *ret_fde, Dwarf_Addr *lopc, Dwarf_Addr *hipc, Dwarf_Error *err);

# DESCRIPTION

Function `dwarf_get_fde_at_pc`() searches the provided array of DWARF FDE descriptors for a descriptor covering a given program counter address.

Argument fdelist should point to an array of FDE descriptors, as returned by the functions dwarf_get_fde_list(3) or dwarf_get_fde_list_eh(3).

Argument pc should contain the program counter address being looked up.

Argument ret_fde should point to a location that will hold the returned FDE descriptor.

Argument lopc should point to a location that will be set to the lowest address covered by the returned FDE descriptor.

Argument hipc should point to a location that will be set to the highest address covered by the returned FDE descriptor.

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

# RETURN VALUES

Function `dwarf_get_fde_at_pc`() returns `DW_DLV_OK` when it succeeds. It returns `DW_DLV_NO_ENTRY` if a FDE descriptor that covers the address specified by argument pc is not found. In case of an error, it returns `DW_DLV_ERROR` and sets the argument err.

# ERRORS

Function `dwarf_get_fde_at_pc`() can fail with:

[`DW_DLE_ARGUMENT`]
  One of the arguments fdelist, ret_fde, lopc, or hipc was `NULL`.
[`DW_DLE_NO_ENTRY`]
  These was no FDE descriptor covering the address specified by argument pc.

# SEE ALSO

dwarf(3), dwarf_get_cie_of_fde(3), dwarf_get_fde_info_for_all_regs(3), dwarf_get_fde_info_for_all_regs3(3), dwarf_get_fde_info_for_cfa_reg3(3), dwarf_get_fde_info_for_reg(3), dwarf_get_fde_info_for_reg3(3), dwarf_get_fde_instr_bytes(3), dwarf_get_fde_list(3), dwarf_get_fde_list_eh(3), dwarf_get_fde_n(3), dwarf_get_fde_range(3)

May 22, 2011 | NetBSD 10.1