Skip to main content

FrameData

Struct FrameData 

Source
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: FrameType

Compiler-specific frame type.

§code_start: PdbInternalRva

Relative 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: u32

Size of the code block covered by this frame data in bytes.

§locals_size: u32

Size of local variables pushed on the stack in bytes.

§params_size: u32

Size of parameters pushed on the stack in bytes.

§prolog_size: u16

Number of bytes of prologue code in the block.

§saved_regs_size: u16

Size 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: bool

Indicates that structured exception handling is in effect.

§has_cpp_eh: bool

Indicates that C++ exception handling is in effect.

§is_function_start: bool

Indicates that this frame is the start of a function.

§uses_base_pointer: bool

Indicates 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.

Trait Implementations§

Source§

impl Clone for FrameData

Source§

fn clone(&self) -> FrameData

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FrameData

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.