DWARF_GET_FDE_INFO_FOR_ALL_REGS3(3) | Library Functions Manual | DWARF_GET_FDE_INFO_FOR_ALL_REGS3(3) |
dwarf_get_fde_info_for_all_regs3
—
#include <libdwarf.h>
int
dwarf_get_fde_info_for_all_regs3
(Dwarf_Fde
fde, Dwarf_Addr pc,
Dwarf_Regtable3 *reg_table, Dwarf_Addr
*row_pc, Dwarf_Error *err);
dwarf_get_fde_info_for_all_regs3
() 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_Regtable3 descriptor which will hold the
returned table row of register rules. The
Dwarf_Regtable3 descriptor is defined in the header
file <libdwarf.h>
:
typedef struct { Dwarf_Small dw_offset_relevant; Dwarf_Small dw_value_type; Dwarf_Half dw_regnum; Dwarf_Unsigned dw_offset_or_block_len; Dwarf_Ptr dw_block_ptr; } Dwarf_Regtable_Entry3; typedef struct { Dwarf_Regtable_Entry3 rt3_cfa_rule; Dwarf_Half rt3_reg_table_size; Dwarf_Regtable_Entry3 *rt3_rules; } Dwarf_Regtable3;
The rt3_reg_table_size field specifies the maximum number of register rule columns to be returned, and should be set by the application before calling the function. The rt3_rules field should point to a memory arena allocated by the application with space for at least rt3_reg_table_size descriptors of type Dwarf_Regtable_Entry3.
On a successful execution of this function, the rt3_cfa_rule field will be set to the CFA register rule associated with the table row, and the rt3_rules array will hold the returned register rules contained in the table row.
For each register rule descriptor returned, the
dw_offset_relevant field will be set to 1 if the
register rule has a offset value, the dw_value_type
field will be set to the type code of the register rule and the
dw_regnum field will be set to the register number
associated with the register rule. If the register rule is of type
DW_EXPR_OFFSET
or
DW_EXPR_VAL_OFFSET
, the
dw_offset_or_block_len field will be set to the offset
value associated with the register rule. If the type is
DW_EXPR_EXPRESSION
or
DW_EXPR_VAL_EXPRESSION
, the
dw_offset_or_block_len field will be set to the length
in bytes of the DWARF expression block associated with the register rule.
The dw_block_ptr field will be set to a pointer to the
content of the DWARF expression block associated with the register rule.
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.
dwarf_get_fde_info_for_all_regs3
() 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_regs3
() can fail
with:
DW_DLE_ARGUMENT
]NULL
.DW_DLE_PC_NOT_IN_FDE_RANGE
]June 26, 2011 | NetBSD 10.1 |