DwarfCie
Description
Decoded CIE record (the parts we care about). Strings point into the section bytes and are valid for the parsed DwarfCfi’s lifetime.
Usage example (Cross-references)
Usage examples (Cross-references)
// ---------------------------------------------------------------------------
static bool parse_cie(DwUCursor *body, u64 cie_offset, DwarfCie *out) {
MemSet(out, 0, sizeof(*out));
out->offset = cie_offset; out->cie_offset = cie_offset;
const DwarfCie *cie = DwarfCfiFindCie(cfi, cie_offset);
if (!cie)
return false; if (id == 0) {
u64 cie_offset = (u64)(rec_start - section_data);
DwarfCie cie;
DwUCursor body = {.p = section_cur.p, .end = body_end};
if (parse_cie(&body, cie_offset, &cie)) { }
const DwarfCie *DwarfCfiFindCie(const DwarfCfi *self, u64 cie_offset) {
if (!self)
return NULL; } CfiVm;
static void cfi_vm_init(CfiVm *vm, const DwarfCie *cie, u64 fde_pc_begin, u8 ra_reg) {
MemSet(vm, 0, sizeof(*vm));
vm->row.return_address_register = ra_reg; return false;
}
const DwarfCie *cie = DwarfCfiFindCie(cfi, fde->cie_offset);
if (!cie)
return false;- In
Dwarf.h:144:
const u8 *initial_instructions;
u64 initial_instructions_size;
} DwarfCie;
///
- In
Dwarf.h:161:
} DwarfFde;
typedef Vec(DwarfCie) DwarfCies;
typedef Vec(DwarfFde) DwarfFdes;- In
Dwarf.h:202:
/// Find a CIE by its `.eh_frame` offset (used to link FDE -> CIE).
///
const DwarfCie *DwarfCfiFindCie(const DwarfCfi *self, u64 cie_offset);
void DwarfCfiDeinit(DwarfCfi *self);
Last updated on