[−][src]Enum gimli::read::CallFrameInstruction
A parsed call frame instruction.
Variants
SetLoc
- DW_CFA_set_loc
The DW_CFA_set_loc instruction takes a single operand that represents a target address. The required action is to create a new table row using the specified address as the location. All other values in the new row are initially identical to the current row. The new location value is always greater than the current one. If the segment_size field of this FDE's CIE is non- zero, the initial location is preceded by a segment selector of the given length.
Fields of SetLoc
address: u64
The target address.
AdvanceLoc
The AdvanceLoc
instruction is used for all of DW_CFA_advance_loc
and
DW_CFA_advance_loc{1,2,4}
.
- DW_CFA_advance_loc
The DW_CFA_advance instruction takes a single operand (encoded with the opcode) that represents a constant delta. The required action is to create a new table row with a location value that is computed by taking the current entry’s location value and adding the value of delta * code_alignment_factor. All other values in the new row are initially identical to the current row.
Fields of AdvanceLoc
delta: u32
The delta to be added to the current address.
DefCfa
- DW_CFA_def_cfa
The DW_CFA_def_cfa instruction takes two unsigned LEB128 operands representing a register number and a (non-factored) offset. The required action is to define the current CFA rule to use the provided register and offset.
Fields of DefCfa
DefCfaSf
- DW_CFA_def_cfa_sf
The DW_CFA_def_cfa_sf instruction takes two operands: an unsigned LEB128 value representing a register number and a signed LEB128 factored offset. This instruction is identical to DW_CFA_def_cfa except that the second operand is signed and factored. The resulting offset is factored_offset * data_alignment_factor.
Fields of DefCfaSf
DefCfaRegister
- DW_CFA_def_cfa_register
The DW_CFA_def_cfa_register instruction takes a single unsigned LEB128 operand representing a register number. The required action is to define the current CFA rule to use the provided register (but to keep the old offset). This operation is valid only if the current CFA rule is defined to use a register and offset.
Fields of DefCfaRegister
register: Register
The target register's number.
DefCfaOffset
- DW_CFA_def_cfa_offset
The DW_CFA_def_cfa_offset instruction takes a single unsigned LEB128 operand representing a (non-factored) offset. The required action is to define the current CFA rule to use the provided offset (but to keep the old register). This operation is valid only if the current CFA rule is defined to use a register and offset.
Fields of DefCfaOffset
offset: u64
The non-factored offset.
DefCfaOffsetSf
- DW_CFA_def_cfa_offset_sf
The DW_CFA_def_cfa_offset_sf instruction takes a signed LEB128 operand representing a factored offset. This instruction is identical to DW_CFA_def_cfa_offset except that the operand is signed and factored. The resulting offset is factored_offset * data_alignment_factor. This operation is valid only if the current CFA rule is defined to use a register and offset.
Fields of DefCfaOffsetSf
factored_offset: i64
The factored offset.
DefCfaExpression
- DW_CFA_def_cfa_expression
The DW_CFA_def_cfa_expression instruction takes a single operand encoded as a DW_FORM_exprloc value representing a DWARF expression. The required action is to establish that expression as the means by which the current CFA is computed.
Fields of DefCfaExpression
expression: Expression<R>
The DWARF expression.
Undefined
- DW_CFA_undefined
The DW_CFA_undefined instruction takes a single unsigned LEB128 operand that represents a register number. The required action is to set the rule for the specified register to “undefined.”
Fields of Undefined
register: Register
The target register's number.
SameValue
- DW_CFA_same_value
The DW_CFA_same_value instruction takes a single unsigned LEB128 operand that represents a register number. The required action is to set the rule for the specified register to “same value.”
Fields of SameValue
register: Register
The target register's number.
Offset
The Offset
instruction represents both DW_CFA_offset
and
DW_CFA_offset_extended
.
- DW_CFA_offset
The DW_CFA_offset instruction takes two operands: a register number (encoded with the opcode) and an unsigned LEB128 constant representing a factored offset. The required action is to change the rule for the register indicated by the register number to be an offset(N) rule where the value of N is factored offset * data_alignment_factor.
Fields of Offset
OffsetExtendedSf
- DW_CFA_offset_extended_sf
The DW_CFA_offset_extended_sf instruction takes two operands: an unsigned LEB128 value representing a register number and a signed LEB128 factored offset. This instruction is identical to DW_CFA_offset_extended except that the second operand is signed and factored. The resulting offset is factored_offset * data_alignment_factor.
Fields of OffsetExtendedSf
ValOffset
- DW_CFA_val_offset
The DW_CFA_val_offset instruction takes two unsigned LEB128 operands representing a register number and a factored offset. The required action is to change the rule for the register indicated by the register number to be a val_offset(N) rule where the value of N is factored_offset * data_alignment_factor.
Fields of ValOffset
ValOffsetSf
- DW_CFA_val_offset_sf
The DW_CFA_val_offset_sf instruction takes two operands: an unsigned LEB128 value representing a register number and a signed LEB128 factored offset. This instruction is identical to DW_CFA_val_offset except that the second operand is signed and factored. The resulting offset is factored_offset * data_alignment_factor.
Fields of ValOffsetSf
Register
- DW_CFA_register
The DW_CFA_register instruction takes two unsigned LEB128 operands representing register numbers. The required action is to set the rule for the first register to be register(R) where R is the second register.
Fields of Register
Expression
- DW_CFA_expression
The DW_CFA_expression instruction takes two operands: an unsigned LEB128 value representing a register number, and a DW_FORM_block value representing a DWARF expression. The required action is to change the rule for the register indicated by the register number to be an expression(E) rule where E is the DWARF expression. That is, the DWARF expression computes the address. The value of the CFA is pushed on the DWARF evaluation stack prior to execution of the DWARF expression.
Fields of Expression
ValExpression
- DW_CFA_val_expression
The DW_CFA_val_expression instruction takes two operands: an unsigned LEB128 value representing a register number, and a DW_FORM_block value representing a DWARF expression. The required action is to change the rule for the register indicated by the register number to be a val_expression(E) rule where E is the DWARF expression. That is, the DWARF expression computes the value of the given register. The value of the CFA is pushed on the DWARF evaluation stack prior to execution of the DWARF expression.
Fields of ValExpression
Restore
The Restore
instruction represents both DW_CFA_restore
and
DW_CFA_restore_extended
.
- DW_CFA_restore
The DW_CFA_restore instruction takes a single operand (encoded with the opcode) that represents a register number. The required action is to change the rule for the indicated register to the rule assigned it by the initial_instructions in the CIE.
Fields of Restore
register: Register
The register to be reset.
RememberState
- DW_CFA_remember_state
The DW_CFA_remember_state instruction takes no operands. The required action is to push the set of rules for every register onto an implicit stack.
RestoreState
- DW_CFA_restore_state
The DW_CFA_restore_state instruction takes no operands. The required action is to pop the set of rules off the implicit stack and place them in the current row.
ArgsSize
DW_CFA_GNU_args_size
GNU Extension
The DW_CFA_GNU_args_size instruction takes an unsigned LEB128 operand representing an argument size. This instruction specifies the total of the size of the arguments which have been pushed onto the stack.
Fields of ArgsSize
size: u64
The size of the arguments which have been pushed onto the stack
Nop
- DW_CFA_nop
The DW_CFA_nop instruction has no operands and no required actions. It is used as padding to make a CIE or FDE an appropriate size.
Trait Implementations
impl<R: PartialEq + Reader> PartialEq<CallFrameInstruction<R>> for CallFrameInstruction<R>
[src]
fn eq(&self, other: &CallFrameInstruction<R>) -> bool
[src]
fn ne(&self, other: &CallFrameInstruction<R>) -> bool
[src]
impl<R: Eq + Reader> Eq for CallFrameInstruction<R>
[src]
impl<R: Debug + Reader> Debug for CallFrameInstruction<R>
[src]
impl<R: Clone + Reader> Clone for CallFrameInstruction<R>
[src]
fn clone(&self) -> CallFrameInstruction<R>
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
Auto Trait Implementations
impl<R> Send for CallFrameInstruction<R> where
R: Send,
R: Send,
impl<R> Sync for CallFrameInstruction<R> where
R: Sync,
R: Sync,
impl<R> Unpin for CallFrameInstruction<R> where
R: Unpin,
R: Unpin,
impl<R> UnwindSafe for CallFrameInstruction<R> where
R: UnwindSafe,
R: UnwindSafe,
impl<R> RefUnwindSafe for CallFrameInstruction<R> where
R: RefUnwindSafe,
R: RefUnwindSafe,
Blanket Implementations
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
[src]
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,