DWARF_GET_FDE_INFO_FOR_ALL_REGS(3)
π NAME π
dwarf_get_fde_info_for_all_regs β retrieve register rule row. Okay bestie, this is the libdwarf manual page, and yes we are pulling a whole row of register rules out of an FDE. Slay.
π LIBRARY π
DWARF Access Library (libdwarf, -ldwarf).
β¨ SYNOPSIS β¨
#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);
π¦ DESCRIPTION π¦
Function dwarf_get_fde_info_for_all_regs() retrieves a row from the register rule table associated with the given FDE descriptor. Itβs giving βgrab the row, bestieβ energy.
Hereβs the vibe check on the arguments:
fdeβ should reference a valid DWARF FDE descriptor.pcβ should hold the program counter address to be used to locate the desired table row.reg_tableβ should point to aDwarf_Regtabledescriptor, which will hold the returned table row of register rules.row_pcβ should point to a location that will be set to the lowest program counter address associated with the table row.errβ if itβs notNULL, 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 an offset value. The dw_regnum field is set to the register number associated with the register 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. Iconic.
π COMPATIBILITY π
Okay, important tea: function dwarf_get_fde_info_for_all_regs() is deprecated since it only supports DWARF2 frame sections. Not me using the old one π Applications should instead use function dwarf_get_fde_info_for_all_regs3(3), which supports both DWARF2 and DWARF3 frame sections. Periodt.
π RETURN VALUES π
Function 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. Thatβs the whole return-value story, bestie.
π ERRORS π
Function dwarf_get_fde_info_for_all_regs() can fail with:
[DW_DLE_ARGUMENT]β One of the argumentsfde,reg_tableorrow_pcwasNULL.[DW_DLE_PC_NOT_IN_FDE_RANGE]β The program counter value provided in argumentpcdid not fall in the range covered by argumentfde.
π SEE ALSO π
dwarf(3), dwarf_get_fde_at_pc(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_n(3), dwarf_set_frame_cfa_value(3), dwarf_set_frame_rule_initial_value(3), dwarf_set_frame_rule_table_size(3), dwarf_set_frame_same_value(3), dwarf_set_frame_undefined_value(3).
mwah π β this pageβs source/version is Debian, dated June 4, 201. Catch you in the next manpage, bestie π«Ά
π¦ where this page comes from
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- nixpkgs unstable: libdwarf 15.0.0
- Copyright (c) 2011 Kai Wang
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms