Struct minidump::format::CONTEXT_ARM64_OLD
source · [−]pub struct CONTEXT_ARM64_OLD {
pub context_flags: u64,
pub iregs: [u64; 31],
pub sp: u64,
pub pc: u64,
pub cpsr: u32,
pub fpsr: u32,
pub fpcr: u32,
pub float_regs: [u128; 32],
}
Expand description
An old (breakpad-style) aarch64 (arm64) CPU context.
This is a breakpad extension, but contrary to what the name might suggest, it isn’t completely out of service. I believe all non-windows platforms still prefer emitting this format to avoid needless churn.
Semantically this type agrees with the “new” CONTEXT_ARM64 and can
generally be handled with all the same logic. i.e. the general purpose
iregs
are the same. It’s just that the other fields are shuffled around.
As I understand it, this is basically an artifact of breakpad getting to arm64 “first” (Android would be first in line for it!) and picking a definition they thought was reasonable. Thankfully they picked an “out of the way” context id so that when Microsoft came along and picked their own definition, there wouldn’t be a conflict.
Note that we have inlined the fields of the “float save” struct from breakpad’s definition to be more uniform with CONTEXT_ARM64.
NOTE: if you ever decide to try to make this repr(C) and get really clever, this type is actually non-trivially repr(packed(4)) in the headers!
Fields
context_flags: u64
iregs: [u64; 31]
[x0, x1, ..., x28, fp, lr]
. See Arm64RegisterNumbers.
sp: u64
pc: u64
cpsr: u32
fpsr: u32
FPU status register.
fpcr: u32
FPU control register.
float_regs: [u128; 32]
float/NEON registers [d0, d1, ..., d31]
Trait Implementations
sourceimpl Clone for CONTEXT_ARM64_OLD
impl Clone for CONTEXT_ARM64_OLD
sourcefn clone(&self) -> CONTEXT_ARM64_OLD
fn clone(&self) -> CONTEXT_ARM64_OLD
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl CpuContext for CONTEXT_ARM64_OLD
impl CpuContext for CONTEXT_ARM64_OLD
sourceconst REGISTERS: &'static [&'static str]
const REGISTERS: &'static [&'static str]
General purpose registers in this context type.
sourcefn memoize_register(&self, reg: &str) -> Option<&'static str>
fn memoize_register(&self, reg: &str) -> Option<&'static str>
Gets a static version of the given register name, if possible. Read more
sourcefn register_is_valid(&self, reg: &str, valid: &MinidumpContextValidity) -> bool
fn register_is_valid(&self, reg: &str, valid: &MinidumpContextValidity) -> bool
Gets whether the given register is valid Read more
sourcefn get_register_always(&self, reg: &str) -> u64
fn get_register_always(&self, reg: &str) -> u64
Get a register value regardless of whether it is valid.
sourcefn set_register(&mut self, reg: &str, val: Self::Register) -> Option<()>
fn set_register(&mut self, reg: &str, val: Self::Register) -> Option<()>
Set a register value, if that register name it exists. Read more
sourcefn stack_pointer_register_name(&self) -> &'static str
fn stack_pointer_register_name(&self) -> &'static str
Gets the name of the stack pointer register (for use with get_register/set_register).
sourcefn instruction_pointer_register_name(&self) -> &'static str
fn instruction_pointer_register_name(&self) -> &'static str
Gets the name of the instruction pointer register (for use with get_register/set_register).
sourcefn get_register(
&self,
reg: &str,
valid: &MinidumpContextValidity
) -> Option<Self::Register>
fn get_register(
&self,
reg: &str,
valid: &MinidumpContextValidity
) -> Option<Self::Register>
Get a register value if it is valid. Read more
sourcefn format_register(&self, reg: &str) -> String
fn format_register(&self, reg: &str) -> String
Return a String containing the value of reg
formatted to its natural width.
sourcefn registers(&self) -> CpuRegisters<'_, Self>ⓘNotable traits for CpuRegisters<'a, T>impl<'a, T> Iterator for CpuRegisters<'a, T> where
T: CpuContext, type Item = (&'static str, T::Register);
fn registers(&self) -> CpuRegisters<'_, Self>ⓘNotable traits for CpuRegisters<'a, T>impl<'a, T> Iterator for CpuRegisters<'a, T> where
T: CpuContext, type Item = (&'static str, T::Register);
T: CpuContext, type Item = (&'static str, T::Register);
An iterator over all registers in this context. Read more
sourcefn valid_registers<'a>(
&'a self,
valid: &'a MinidumpContextValidity
) -> CpuRegisters<'a, Self>ⓘNotable traits for CpuRegisters<'a, T>impl<'a, T> Iterator for CpuRegisters<'a, T> where
T: CpuContext, type Item = (&'static str, T::Register);
fn valid_registers<'a>(
&'a self,
valid: &'a MinidumpContextValidity
) -> CpuRegisters<'a, Self>ⓘNotable traits for CpuRegisters<'a, T>impl<'a, T> Iterator for CpuRegisters<'a, T> where
T: CpuContext, type Item = (&'static str, T::Register);
T: CpuContext, type Item = (&'static str, T::Register);
An iterator over valid registers in this context. Read more
sourceimpl Debug for CONTEXT_ARM64_OLD
impl Debug for CONTEXT_ARM64_OLD
sourceimpl Default for CONTEXT_ARM64_OLD
impl Default for CONTEXT_ARM64_OLD
sourcefn default() -> CONTEXT_ARM64_OLD
fn default() -> CONTEXT_ARM64_OLD
Returns the “default value” for a type. Read more
sourceimpl<'a> TryFromCtx<'a, Endian, [u8]> for CONTEXT_ARM64_OLD where
CONTEXT_ARM64_OLD: 'a,
impl<'a> TryFromCtx<'a, Endian, [u8]> for CONTEXT_ARM64_OLD where
CONTEXT_ARM64_OLD: 'a,
type Error = Error
fn try_from_ctx(
src: &'a [u8],
ctx: Endian
) -> Result<(CONTEXT_ARM64_OLD, usize), <CONTEXT_ARM64_OLD as TryFromCtx<'a, Endian, [u8]>>::Error>
sourceimpl<'a> TryIntoCtx<Endian, [u8]> for &'a CONTEXT_ARM64_OLD
impl<'a> TryIntoCtx<Endian, [u8]> for &'a CONTEXT_ARM64_OLD
sourceimpl TryIntoCtx<Endian, [u8]> for CONTEXT_ARM64_OLD
impl TryIntoCtx<Endian, [u8]> for CONTEXT_ARM64_OLD
impl Copy for CONTEXT_ARM64_OLD
Auto Trait Implementations
impl RefUnwindSafe for CONTEXT_ARM64_OLD
impl Send for CONTEXT_ARM64_OLD
impl Sync for CONTEXT_ARM64_OLD
impl Unpin for CONTEXT_ARM64_OLD
impl UnwindSafe for CONTEXT_ARM64_OLD
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more