Struct framehop::aarch64::UnwinderAarch64
source · pub struct UnwinderAarch64<D, P = MayAllocateDuringUnwind>(/* private fields */);
Expand description
The unwinder for the Aarch64 CPU architecture. Use the Unwinder
trait for unwinding.
Type arguments:
D
: The type for unwind section data in the modules. SeeModule
.P
: TheAllocationPolicy
.
Implementations§
source§impl<D, P> UnwinderAarch64<D, P>
impl<D, P> UnwinderAarch64<D, P>
Trait Implementations§
source§impl<D, P> Clone for UnwinderAarch64<D, P>
impl<D, P> Clone for UnwinderAarch64<D, P>
source§impl<D, P> Default for UnwinderAarch64<D, P>
impl<D, P> Default for UnwinderAarch64<D, P>
source§impl<D: Deref<Target = [u8]>, P: AllocationPolicy> Unwinder for UnwinderAarch64<D, P>
impl<D: Deref<Target = [u8]>, P: AllocationPolicy> Unwinder for UnwinderAarch64<D, P>
§type UnwindRegs = UnwindRegsAarch64
type UnwindRegs = UnwindRegsAarch64
The unwind registers type for the targeted CPU architecture.
§type Cache = CacheAarch64<P>
type Cache = CacheAarch64<P>
The unwind cache for the targeted CPU architecture.
This is an associated type because the cache stores unwind rules, whose concrete
type depends on the CPU arch, and because the cache can support different allocation
policies.
§type Module = Module<D>
type Module = Module<D>
The module type. This is an associated type because the concrete type varies
depending on the type you use to give the module access to the unwind section data.
source§fn add_module(&mut self, module: Module<D>)
fn add_module(&mut self, module: Module<D>)
Add a module that’s loaded in the profiled process. This is how you provide unwind
information and address ranges. Read more
source§fn remove_module(&mut self, module_address_range_start: u64)
fn remove_module(&mut self, module_address_range_start: u64)
Remove a module that was added before using
add_module
, keyed by the start
address of that module’s address range. If no match is found, the call is ignored.
This should be called whenever a module is unloaded from the process.source§fn max_known_code_address(&self) -> u64
fn max_known_code_address(&self) -> u64
Returns the highest code address that is known in this process based on the module
address ranges. Returns 0 if no modules have been added. Read more
source§fn unwind_frame<F>(
&self,
address: FrameAddress,
regs: &mut UnwindRegsAarch64,
cache: &mut CacheAarch64<P>,
read_stack: &mut F
) -> Result<Option<u64>, Error>
fn unwind_frame<F>( &self, address: FrameAddress, regs: &mut UnwindRegsAarch64, cache: &mut CacheAarch64<P>, read_stack: &mut F ) -> Result<Option<u64>, Error>
Unwind a single frame, to recover return address and caller register values.
This is the main entry point for unwinding.
source§fn iter_frames<'u, 'c, 'r, F>(
&'u self,
pc: u64,
regs: Self::UnwindRegs,
cache: &'c mut Self::Cache,
read_stack: &'r mut F
) -> UnwindIterator<'u, 'c, 'r, Self, F>
fn iter_frames<'u, 'c, 'r, F>( &'u self, pc: u64, regs: Self::UnwindRegs, cache: &'c mut Self::Cache, read_stack: &'r mut F ) -> UnwindIterator<'u, 'c, 'r, Self, F>
Return an iterator that unwinds frame by frame until the end of the stack is found.
Auto Trait Implementations§
impl<D, P> RefUnwindSafe for UnwinderAarch64<D, P>where
D: RefUnwindSafe,
P: RefUnwindSafe,
impl<D, P> Send for UnwinderAarch64<D, P>
impl<D, P> Sync for UnwinderAarch64<D, P>
impl<D, P> Unpin for UnwinderAarch64<D, P>where
P: Unpin,
impl<D, P> UnwindSafe for UnwinderAarch64<D, P>where
D: RefUnwindSafe,
P: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more