binary/elf/exceptions
This module takes care of symbolization in the exception sections and it generates CFI directives based on the unwind and exception information.
- cfi_directive(BlockAddress:address, Offset:unsigned, LocalIndex:unsigned, directive:symbol, ReferenceSym:symbol, Nargs:unsigned, arg1:number, arg2:number)
A CFI directive specifies unwind information directly inlined into the assembly code. This representation is slightly higher level than a raw eh_frame section but mostly equivalent. Most CFI directives are generated 1-to-1 from a
fde_instruction
. Other CFI directives mark the beginning and end of the FDE (.starproc and .endproc) or contain a pointer to the corresponding LSDA (exception handling information) or to the personality (.cfi_lsda and .cfi_personality respectively).
- symbol_special_encoding(EA:address, encoding:symbol)
symbol_special_encoding
marks symbols that are encoded with uleb128 or sleb128.
- dwarf_encoding_size(Encoding:unsigned, Size:unsigned)
Used by:
lsda_symbol_minus_symbol
,symbolic_data
- last_fde(Addr:address)
Used by:
symbol_minus_symbol
- last_fde_instruction(FdeAddr:address, Index:unsigned)
Uses:
fde_instruction
Used by:
endproc_local_index
- fde_instruction_ref(FdeAddr:address, Index:unsigned, LocalIndex:unsigned, ReferenceAddr:address)
Uses:
cie_entry
,fde_entry
,fde_instruction
Used by:
endproc_local_index
,fde_instruction_block_offset
,symbol_minus_symbol
Recursive:
fde_instruction_ref
- endproc_local_index(FdeAddr:address, LocalIndex:unsigned)
Used by:
cfi_directive
- fde_instruction_block_offset(FdeAddr:address, Index:unsigned, LocalIndex:unsigned, BlockAddr:address, Offset:unsigned)
The location a FDE instruction (identified by FdeAddr, Index, and LocalIndex) refers to, expressed as a combination of a BlockAddr and an Offset into the block.
- fde_block_addresses(FdeAddr:address, StartAddr:address, EndAddr:address)
- lsda_symbol_minus_symbol(EA:address, Size:unsigned, Symbol1:address, Symbol2:address, Scale:unsigned, Offset:number, Reason:symbol)
Same as
symbol_minus_symbol
: this is to avoid cyclic aggregation byboundary_sym_expr
usingsymbol_minus_symbol
.
- cfi_operand_is_register(Insn:symbol, OpNumber:unsigned)
Used by:
cfi_directive
- dwarf_to_cfi(DwarfInsn:symbol, OpNumber:unsigned, CfiInsn:symbol)
Used by:
cfi_directive