Skip to main content

Room

Struct Room 

Source
pub struct Room {
    pub after: u32,
    pub before: u32,
}
Expand description

How much room every function opens with for something to be written over it later.

What -fpatchable-function-entry= asks for, as the two halves a prologue deals in rather than as the total and the part the flag is written in. The room can be on either side of the function’s own label and the two sides are not the same thing: what is after the label is inside the function, which is what a patcher redirecting a call into it wants, and what is in front of it is outside, which is where a patcher that needs a whole instruction it can reach from the first one puts it.

Fields§

§after: u32

How many bytes go after the function’s own label.

§before: u32

How many go in front of it.

Implementations§

Source§

impl Room

Source

pub const fn any(self) -> bool

Whether any room at all was asked for, which is what decides whether a function gets one.

=0 is a command line that asked for none, and gcc takes it and writes nothing, so the question is about the numbers rather than about whether the flag was written.

Trait Implementations§

Source§

impl Clone for Room

Source§

fn clone(&self) -> Room

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for Room

Source§

impl Debug for Room

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Room

Source§

fn default() -> Room

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

impl Eq for Room

Source§

impl PartialEq for Room

Source§

fn eq(&self, other: &Room) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Room

Auto Trait Implementations§

§

impl Freeze for Room

§

impl RefUnwindSafe for Room

§

impl Send for Room

§

impl Sync for Room

§

impl Unpin for Room

§

impl UnsafeUnpin for Room

§

impl UnwindSafe for Room

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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,

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.