次の表に、x64 用に定義された TLS 再配置を示します。表内の説明では、次の表記が使用されています。
TLS_index 構造体を保持するために、GOT 内に連続した 2 つのエントリを割り当てます。この構造体は、__tls_get_addr() に渡されます。この命令は、正確で一般的な動的コードシーケンス内でのみ使用できます。
TLS_index 構造体を保持するために、GOT 内に連続した 2 つのエントリを割り当てます。この構造体は、__tls_get_addr() に渡されます。実行時、オブジェクトの ti_offset オフセットフィールドは ゼロに設定され、ti_module オフセットは初期化されます。__tls_get_addr() 関数の呼び出しは、動的な TLS ブロックの開始オフセットを返します。この命令は、正確なコードシーケンス内で使用できます。
変数を含む TLS ブロックの最初からの変数の相対オフセットを計算します。計算値は加数の即値として使用され、特定のレジスタには関連付けられません。
TLS シンボルを含むオブジェクトの識別子を計算します。
最初の TLS ブロック内の変数のオフセットを保持する GOT 内のエントリを割り当てます。このオフセットは TLS ブロックの端、%fs:0 から計算されます。この演算子は、movq または addq 命令とだけ使用できます。
TLS ブロックの端、%fs:0 からの変数の相対オフセットを計算します。GOT エントリは作成されません。
名前 |
値 |
フィールド |
計算 |
---|---|---|---|
R_AMD64_DPTMOD64 |
16 |
Word64 |
@dtpmod(s) |
R_AMD64_DTPOFF64 |
17 |
Word64 |
@dtpoff(s) |
R_AMD64_TPOFF64 |
18 |
Word64 |
@tpoff(s) |
R_AMD64_TLSGD |
19 |
Word32 |
@tlsgd(s) |
R_AMD64_TLSLD |
20 |
Word32 |
@tlsld(s) |
R_AMD64_DTPOFF32 |
21 |
Word32 |
@dtpoff(s) |
R_AMD64_GOTTPOFF |
22 |
Word32 |
@gottpoff(s) |
R_AMD64_TPOFF32 |
23 |
Word32 |
@gottpoff(s) |