x64: Thread-Local Storage Relocation Types
The TLS relocations that are listed in the following table are defined for x64. Descriptions in the table use the following notation.
-
@tlsgd(%rip)
-
Allocates two contiguous entries in the
GOT
to hold aTLS_index
structure. This structure is passed to__tls_get_addr
(). This instruction can only be used in the exact general dynamic code sequence. -
@tlsld(%rip)
-
Allocates two contiguous entries in the
GOT
to hold aTLS_index
structure. This structure is passed to__tls_get_addr
(). At runtime, theti_offset
offset field of the object is set to zero, and theti_module
offset is initialized. A call to the__tls_get_addr
() function returns the starting offset if the dynamic TLS block. This instruction can be used in the exact code sequence. -
@dtpoff
-
Calculates the offset of the variable relative to the start of the TLS block which contains the variable. The computed 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.
-
@gottpoff(%rip)
-
Allocates a entry in the
GOT
, to hold a variable offset in the initial TLS block. This offset is relative to the TLS blocks end,%fs:0
. The operator can only be used with amovq
oraddq
instruction. -
@tpoff(x)
-
Calculates the offset of a variable relative to the TLS block end,
%fs:0
. NoGOT
entry is created.
Table 16-25 x64: Thread-Local Storage Relocation Types
Name | Value | Field | Calculation |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|