Enum framehop::aarch64::UnwindRuleAarch64
source · pub enum UnwindRuleAarch64 {
NoOp,
NoOpIfFirstFrameOtherwiseFp,
OffsetSp {
sp_offset_by_16: u16,
},
OffsetSpIfFirstFrameOtherwiseStackEndsHere {
sp_offset_by_16: u16,
},
OffsetSpAndRestoreLr {
sp_offset_by_16: u16,
lr_storage_offset_from_sp_by_8: i16,
},
OffsetSpAndRestoreFpAndLr {
sp_offset_by_16: u16,
fp_storage_offset_from_sp_by_8: i16,
lr_storage_offset_from_sp_by_8: i16,
},
UseFramePointer,
UseFramepointerWithOffsets {
sp_offset_from_fp_by_8: u16,
fp_storage_offset_from_fp_by_8: i16,
lr_storage_offset_from_fp_by_8: i16,
},
}
Variants§
NoOp
(sp, fp, lr) = (sp, fp, lr) Only possible for the first frame. Subsequent frames must get the return address from somewhere other than the lr register to avoid infinite loops.
NoOpIfFirstFrameOtherwiseFp
(sp, fp, lr) = if is_first_frame (sp, fp, lr) else (fp + 16, *fp, *(fp + 8)) Used as a fallback rule.
OffsetSp
(sp, fp, lr) = (sp + 16x, fp, lr) Only possible for the first frame. Subsequent frames must get the return address from somewhere other than the lr register to avoid infinite loops.
OffsetSpIfFirstFrameOtherwiseStackEndsHere
(sp, fp, lr) = (sp + 16x, fp, lr) if is_first_frame This rule reflects an ambiguity in DWARF CFI information. When the return address is “undefined” because it was omitted, it could mean “same value”, but this is only allowed for the first frame.
OffsetSpAndRestoreLr
(sp, fp, lr) = (sp + 16x, fp, *(sp + 8y))
OffsetSpAndRestoreFpAndLr
(sp, fp, lr) = (sp + 16x, *(sp + 8y), *(sp + 8z))
UseFramePointer
(sp, fp, lr) = (fp + 16, *fp, *(fp + 8))
UseFramepointerWithOffsets
Fields
(sp, fp, lr) = (fp + 8x, *(fp + 8y), *(fp + 8z))
Trait Implementations§
source§impl Clone for UnwindRuleAarch64
impl Clone for UnwindRuleAarch64
source§fn clone(&self) -> UnwindRuleAarch64
fn clone(&self) -> UnwindRuleAarch64
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for UnwindRuleAarch64
impl Debug for UnwindRuleAarch64
source§impl PartialEq for UnwindRuleAarch64
impl PartialEq for UnwindRuleAarch64
source§fn eq(&self, other: &UnwindRuleAarch64) -> bool
fn eq(&self, other: &UnwindRuleAarch64) -> bool
self
and other
values to be equal, and is used
by ==
.