pub enum Tls {
General,
Module,
InModule,
Slot,
SlotAddress,
SlotNegated,
Offset,
Negated,
}Expand description
Which of the i386 thread-local relocations a Reference::Tls is, named after what the four
bytes end up holding.
The suffix gcc writes for each is beside it. The linker may rewrite the instruction around the first three into a cheaper model once it knows where the variable ends up, which is why each kind is kept apart from the others rather than folded into an address or an offset.
Variants§
General
The pair of slots of the global offset table ___tls_get_addr takes, as a distance from the
table. @TLSGD, R_386_TLS_GD.
Module
The same pair for the module as a whole rather than one variable. @TLSLDM,
R_386_TLS_LDM.
InModule
How far into its module’s block a variable is, which is what goes with the address
Tls::Module found. @DTPOFF, R_386_TLS_LDO_32.
Slot
A slot of the global offset table holding where the variable is from the thread pointer, as
a distance from the table. @GOTNTPOFF, R_386_TLS_GOTIE.
SlotAddress
The same slot by its address, for code that is not position independent. @INDNTPOFF,
R_386_TLS_IE.
SlotNegated
A slot holding the distance the other way round, from the variable up to the thread
pointer, as a distance from the table. @GOTTPOFF, R_386_TLS_IE_32.
Offset
Where the variable is from the thread pointer, which is below it and so negative.
@NTPOFF, R_386_TLS_LE.
Negated
The same distance the other way round, which is positive. @TPOFF, R_386_TLS_LE_32.
Trait Implementations§
impl Copy for Tls
impl Eq for Tls
impl StructuralPartialEq for Tls
Auto Trait Implementations§
impl Freeze for Tls
impl RefUnwindSafe for Tls
impl Send for Tls
impl Sync for Tls
impl Unpin for Tls
impl UnsafeUnpin for Tls
impl UnwindSafe for Tls
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.