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:

Implementations§

source§

impl<D, P> UnwinderAarch64<D, P>

source

pub fn new() -> Self

Create an unwinder for a process.

Trait Implementations§

source§

impl<D, P> Clone for UnwinderAarch64<D, P>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<D, P> Default for UnwinderAarch64<D, P>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<D: Deref<Target = [u8]>, P: AllocationPolicy> Unwinder for UnwinderAarch64<D, P>

§

type UnwindRegs = UnwindRegsAarch64

The unwind registers type for the targeted CPU architecture.
§

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>

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>)

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)

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

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>
where F: FnMut(u64) -> Result<u64, ()>,

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>
where F: FnMut(u64) -> Result<u64, ()>,

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>

§

impl<D, P> Send for UnwinderAarch64<D, P>
where D: Send + Sync, P: Send,

§

impl<D, P> Sync for UnwinderAarch64<D, P>
where D: Send + Sync, P: Sync,

§

impl<D, P> Unpin for UnwinderAarch64<D, P>
where P: Unpin,

§

impl<D, P> UnwindSafe for UnwinderAarch64<D, P>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.