Struct ShadowStackInternal

Source
#[repr(C)]
pub struct ShadowStackInternal<'a, T: Rootable> { pub stack: &'a ShadowStack, pub prev: *mut RawShadowStackEntry, pub vtable: usize, pub value: T, }
Expand description

Almost the same as raw entry of shadow stack except this one gives access to value. This type is not exposed in public API and used only internally.

Fields§

§stack: &'a ShadowStack§prev: *mut RawShadowStackEntry§vtable: usize§value: T

Implementations§

Source§

impl<'a, T: Rootable> ShadowStackInternal<'a, T>

Source

pub unsafe fn construct( stack: &'a ShadowStack, prev: *mut RawShadowStackEntry, vtable: usize, value: T, ) -> Self

Constructs internal shadow stack value. Must not be used outside of $letroot! macro.

Trait Implementations§

Source§

impl<T: Rootable> Drop for ShadowStackInternal<'_, T>

Source§

fn drop(&mut self)

Drop current shadow stack entry and update shadow stack state.

Auto Trait Implementations§

§

impl<'a, T> Freeze for ShadowStackInternal<'a, T>
where T: Freeze,

§

impl<'a, T> !RefUnwindSafe for ShadowStackInternal<'a, T>

§

impl<'a, T> !Send for ShadowStackInternal<'a, T>

§

impl<'a, T> !Sync for ShadowStackInternal<'a, T>

§

impl<'a, T> Unpin for ShadowStackInternal<'a, T>
where T: Unpin,

§

impl<'a, T> !UnwindSafe for ShadowStackInternal<'a, T>

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> Any for T
where T: Any,

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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

Source§

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.