pub struct FrameData {Show 13 fields
pub ty: FrameType,
pub code_start: PdbInternalRva,
pub code_size: u32,
pub locals_size: u32,
pub params_size: u32,
pub prolog_size: u16,
pub saved_regs_size: u16,
pub max_stack_size: Option<u32>,
pub has_structured_eh: bool,
pub has_cpp_eh: bool,
pub is_function_start: bool,
pub uses_base_pointer: bool,
pub program: Option<StringRef>,
}Expand description
Frame data for a code block.
Fields§
§ty: FrameTypeCompiler-specific frame type.
code_start: PdbInternalRvaRelative virtual address of the start of the code block.
Note that this address is internal to the PDB. To convert this to an actual Rva, use
PdbInternalRva::to_rva.
code_size: u32Size of the code block covered by this frame data in bytes.
locals_size: u32Size of local variables pushed on the stack in bytes.
params_size: u32Size of parameters pushed on the stack in bytes.
prolog_size: u16Number of bytes of prologue code in the block.
saved_regs_size: u16Size of saved registers pushed on the stack in bytes.
max_stack_size: Option<u32>The maximum number of bytes pushed on the stack.
has_structured_eh: boolIndicates that structured exception handling is in effect.
has_cpp_eh: boolIndicates that C++ exception handling is in effect.
is_function_start: boolIndicates that this frame is the start of a function.
uses_base_pointer: boolIndicates that this function uses the EBP register.
program: Option<StringRef>A program string allowing to reconstruct register values for this frame.
The program string is a sequence of macros that is interpreted in order to establish the
prologue. For example, a typical stack frame might use the program string "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =". The format is reverse polish notation, where the
operators follow the operands. T0 represents a temporary variable on the stack.
Note that the program string is specific to the CPU and to the calling convention set up for the function represented by the current stack frame.