DWARF_GET_FDE_INFO_FOR_ALL_REGS(3) | Library Functions Manual | DWARF_GET_FDE_INFO_FOR_ALL_REGS(3) |
dwarf_get_fde_info_for_all_regs
—
#include <libdwarf.h>
int
dwarf_get_fde_info_for_all_regs
(Dwarf_Fde
fde, Dwarf_Addr pc,
Dwarf_Regtable *reg_table, Dwarf_Addr
*row_pc, Dwarf_Error *err);
dwarf_get_fde_info_for_all_regs
() retrieves a
row from the register rule table associated with the given FDE descriptor.
Argument fde should reference a valid DWARF FDE descriptor.
Argument pc should hold the program counter address to be used to locate the desired table row.
Argument reg_table should point to a Dwarf_Regtable descriptor which will hold the returned table row of register rules.
Argument row_pc should point to a location which will be set to the lowest program counter address associated with the table row.
If argument err is not
NULL
, it will be used to store error information in
case of an error.
The Dwarf_Regtable descriptor is defined in
the header file
<libdwarf.h>
:
typedef struct { struct { Dwarf_Small dw_offset_relevant; Dwarf_Half dw_regnum; Dwarf_Addr dw_offset; } rules[DW_REG_TABLE_SIZE]; } Dwarf_Regtable;
For each of the register rules returned, the dw_offset_relevant field is set to 1 if the register rule has a offset value. The dw_regnum field is set to the register number associated with the regsiter rule. The dw_offset field is set to the offset value associated with the register rule.
The number of register columns returned is either the constant
value DW_REG_TABLE_SIZE as defined
in the header
file <libdwarf.h>
, or the
value set by function
dwarf_set_frame_rule_table_size(3),
whichever is smaller.
dwarf_get_fde_info_for_all_regs
() is deprecated
since it only supports DWARF2 frame sections. Applications should instead use
function
dwarf_get_fde_info_for_all_regs3(3)
which supports both DWARF2 and DWARF3 frame sections.
dwarf_get_fde_info_for_all_regs
() returns
DW_DLV_OK
when it succeeds. In case of an error, it
returns DW_DLV_ERROR
and sets the argument
err.
dwarf_get_fde_info_for_all_regs
() can fail
with:
DW_DLE_ARGUMENT
]NULL
.DW_DLE_PC_NOT_IN_FDE_RANGE
]June 4, 2011 | NetBSD 10.0 |