Oracle® Solaris 11.2 Linkers and Libraries Guide

Exit Print View

Updated: July 2014
 
 

32-bit x86: Thread-Local Storage Relocation Types

The TLS relocations that are listed in the following table are defined for x86. Descriptions in the table use the following notation.

@tlsgd(x)

Allocates two contiguous entries in the GOT to hold a TLS_index structure. This structure is passed to ___tls_get_addr(). The instruction referencing this entry will be bound to the first of the two GOT entries.

@tlsgdplt(x)

This relocation is handled as if it were a R_386_PLT32 relocation referencing the ___tls_get_addr() function.

@tlsldm(x)

Allocates two contiguous entries in the GOT to hold a TLS_index structure. This structure is passed to the ___tls_get_addr(). The ti_tlsoffset field of the TLS_index is set to 0, and the ti_moduleid is filled in at runtime. The call to ___tls_get_addr() returns the starting offset of the dynamic TLS block.

@gotntpoff(x)

Allocates a entry in the GOT, and initializes the entry with the negative tlsoffset relative to the static TLS block. This sequence is performed at runtime using the R_386_TLS_TPOFF relocation.

@indntpoff(x)

This expression is similar to @gotntpoff, but is used in position dependent code. @gotntpoff resolves to a GOT slot address relative to the start of the GOT in the movl or addl instructions. @indntpoff resolves to the absolute GOT slot address.

@ntpoff(x)

Calculates the negative tlsoffset relative to the static TLS block.

@dtpoff(x)

Calculates the tlsoffset relative to the TLS block. The value is used as an immediate value of an addend and is not associated with a specific register.

@dtpmod(x)

Calculates the object identifier of the object containing a TLS symbol.

Table 14-17  32-bit x86: Thread-Local Storage Relocation Types
Name
Value
Field
Calculation
R_386_TLS_GD_PLT
12
Word32
@tlsgdplt
R_386_TLS_LDM_PLT
13
Word32
@tlsldmplt
R_386_TLS_TPOFF
14
Word32
@ntpoff(S)
R_386_TLS_IE
15
Word32
@indntpoff(S)
R_386_TLS_GOTIE
16
Word32
@gotntpoff(S)
R_386_TLS_LE
17
Word32
@ntpoff(S)
R_386_TLS_GD
18
Word32
@tlsgd(S)
R_386_TLS_LDM
19
Word32
@tlsldm(S)
R_386_TLS_LDO_32
32
Word32
@dtpoff(S)
R_386_TLS_DTPMOD32
35
Word32
@dtpmod(S)
R_386_TLS_DTPOFF32
36
Word32
@dtpoff(S)