Skip to main content

RelocKind

Enum RelocKind 

Source
pub enum RelocKind {
    Branch26,
    Page21,
    PageOff12 {
        scale: u8,
    },
    GotPage21,
    GotPageOff12,
    Rel32,
    GotRel32,
    Abs64,
}
Expand description

Normalized relocation kinds across Mach-O / ELF / COFF, for the two architectures the JIT targets.

Variants§

§

Branch26

aarch64 b/bl imm26 (±128 MiB, 4-byte aligned).

§

Page21

aarch64 adrp hi21 page, direct.

§

PageOff12

aarch64 add/ldr lo12, direct. scale is the access-size shift the patcher must apply (0 for add, 3 for 8-byte ldr).

Fields

§scale: u8

Access-size shift the patcher applies (0 for add, 3 for 8-byte ldr).

§

GotPage21

aarch64 adrp hi21 page → GOT slot.

§

GotPageOff12

aarch64 ldr lo12 → GOT slot (8-byte scaled).

§

Rel32

x86-64 rip-relative disp32 (jmp/call/lea/mov).

§

GotRel32

x86-64 rip-relative disp32 → GOT/IAT slot.

§

Abs64

8-byte absolute address, little-endian.

Trait Implementations§

Source§

impl Clone for RelocKind

Source§

fn clone(&self) -> RelocKind

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 Debug for RelocKind

Source§

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

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

impl PartialEq for RelocKind

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for RelocKind

Source§

impl Eq for RelocKind

Source§

impl StructuralPartialEq for RelocKind

Auto Trait Implementations§

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 = 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.