Skip to main content

Reloc

Enum Reloc 

Source
pub enum Reloc {
Show 26 variants Abs4, Abs8, X86PCRel4, X86CallPCRel4, X86CallPLTRel4, X86GOTPCRel4, X86SecRel, Arm32Call, Arm64Call, ElfX86_64TlsGd, MachOX86_64Tlv, MachOAarch64TlsAdrPage21, MachOAarch64TlsAdrPageOff12, Aarch64TlsDescAdrPage21, Aarch64TlsDescLd64Lo12, Aarch64TlsDescAddLo12, Aarch64TlsDescCall, Aarch64AdrGotPage21, Aarch64Ld64GotLo12Nc, Aarch64AdrPrelPgHi21, Aarch64AddAbsLo12Nc, RiscvAbs8, RiscvCallPlt, RiscvTlsGdHi20, RiscvPCRelLo12I, RiscvGotHi20,
}
Expand description

Relocation kinds for every ISA

Variants§

§

Abs4

absolute 4-byte

§

Abs8

absolute 8-byte

§

X86PCRel4

x86 PC-relative 4-byte

§

X86CallPCRel4

x86 call to PC-relative 4-byte

§

X86CallPLTRel4

x86 call to PLT-relative 4-byte

§

X86GOTPCRel4

x86 GOT PC-relative 4-byte

§

X86SecRel

The 32-bit offset of the target from the beginning of its section. Equivalent to IMAGE_REL_AMD64_SECREL. See: PE Format

§

Arm32Call

Arm32 call target

§

Arm64Call

Arm64 call target. Encoded as bottom 26 bits of instruction. This value is sign-extended, multiplied by 4, and added to the PC of the call instruction to form the destination address.

§

ElfX86_64TlsGd

Elf x86_64 32 bit signed PC relative offset to two GOT entries for GD symbol.

§

MachOX86_64Tlv

Mach-O x86_64 32 bit signed PC relative offset to a __thread_vars entry.

§

MachOAarch64TlsAdrPage21

Mach-O Aarch64 TLS PC-relative distance to the page of the TLVP slot.

§

MachOAarch64TlsAdrPageOff12

Mach-O Aarch64 TLS Offset within page of TLVP slot.

§

Aarch64TlsDescAdrPage21

Aarch64 TLSDESC Adr Page21 This is equivalent to R_AARCH64_TLSDESC_ADR_PAGE21 in the aaelf64

§

Aarch64TlsDescLd64Lo12

Aarch64 TLSDESC Ld64 Lo12 This is equivalent to R_AARCH64_TLSDESC_LD64_LO12 in the aaelf64

§

Aarch64TlsDescAddLo12

Aarch64 TLSDESC Add Lo12 This is equivalent to R_AARCH64_TLSGD_ADD_LO12 in the aaelf64

§

Aarch64TlsDescCall

Aarch64 TLSDESC Call This is equivalent to R_AARCH64_TLSDESC_CALL in the aaelf64

§

Aarch64AdrGotPage21

AArch64 GOT Page Set the immediate value of an ADRP to bits 32:12 of X; check that –2^32 <= X < 2^32 This is equivalent to R_AARCH64_ADR_GOT_PAGE (311) in the aaelf64

§

Aarch64Ld64GotLo12Nc

AArch64 GOT Low bits Set the LD/ST immediate field to bits 11:3 of X. No overflow check; check that X&7 = 0 This is equivalent to R_AARCH64_LD64_GOT_LO12_NC (312) in the aaelf64

§

Aarch64AdrPrelPgHi21

Equivalent of R_AARCH64_ADR_PREL_PG_HI21.

§

Aarch64AddAbsLo12Nc

Equivalent of R_AARCH64_ADD_ABS_LO12_NC.

§

RiscvAbs8

RISC-V Absolute address: 64-bit address.

§

RiscvCallPlt

RISC-V Call PLT: 32-bit PC-relative function call, macros call, tail (PIC)

Despite having PLT in the name, this relocation is also used for normal calls. The non-PLT version of this relocation has been deprecated.

This is the R_RISCV_CALL_PLT relocation from the RISC-V ELF psABI document. https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc#procedure-calls

§

RiscvTlsGdHi20

RISC-V TLS GD: High 20 bits of 32-bit PC-relative TLS GD GOT reference,

This is the R_RISCV_TLS_GD_HI20 relocation from the RISC-V ELF psABI document. https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc#global-dynamic

§

RiscvPCRelLo12I

Low 12 bits of a 32-bit PC-relative relocation (I-Type instruction)

This is the R_RISCV_PCREL_LO12_I relocation from the RISC-V ELF psABI document. https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc#pc-relative-symbol-addresses

§

RiscvGotHi20

High 20 bits of a 32-bit PC-relative GOT offset relocation

This is the R_RISCV_GOT_HI20 relocation from the RISC-V ELF psABI document. https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc#pc-relative-symbol-addresses

Trait Implementations§

Source§

impl Clone for Reloc

Source§

fn clone(&self) -> Reloc

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 Reloc

Source§

impl Debug for Reloc

Source§

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

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

impl Eq for Reloc

Source§

impl Hash for Reloc

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for Reloc

Source§

fn cmp(&self, other: &Reloc) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Reloc

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl PartialOrd for Reloc

Source§

fn partial_cmp(&self, other: &Reloc) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl StructuralPartialEq for Reloc

Auto Trait Implementations§

§

impl Freeze for Reloc

§

impl RefUnwindSafe for Reloc

§

impl Send for Reloc

§

impl Sync for Reloc

§

impl Unpin for Reloc

§

impl UnsafeUnpin for Reloc

§

impl UnwindSafe for Reloc

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.