Struct minidump_writer::minidump_format::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§
source§impl Clone for CONTEXT_ARM64_OLD
impl Clone for CONTEXT_ARM64_OLD
source§fn clone(&self) -> CONTEXT_ARM64_OLD
fn clone(&self) -> CONTEXT_ARM64_OLD
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more