Oracle® Solaris 11.2 リンカーとライブラリガイド

印刷ビューの終了

更新: 2014 年 7 月
 
 

x64: スレッド固有ストレージの再配置のタイプ

次の表に、x64 用に定義された TLS 再配置を示します。表内の説明では、次の表記が使用されています。

@tlsgd(%rip)

TLS_index 構造体を保持するために、GOT 内に連続した 2 つのエントリを割り当てます。この構造体は、__tls_get_addr() に渡されます。この命令は、正確で一般的な動的コードシーケンス内でのみ使用できます。

@tlsld(%rip)

TLS_index 構造体を保持するために、GOT 内に連続した 2 つのエントリを割り当てます。この構造体は、__tls_get_addr() に渡されます。実行時、オブジェクトの ti_offset オフセットフィールドは ゼロに設定され、ti_module オフセットは初期化されます。__tls_get_addr() 関数の呼び出しは、動的な TLS ブロックの開始オフセットを返します。この命令は、正確なコードシーケンス内で使用できます。

@dtpoff

変数を含む TLS ブロックの最初からの変数の相対オフセットを計算します。計算値は加数の即値として使用され、特定のレジスタには関連付けられません。

@dtpmod(x)

TLS シンボルを含むオブジェクトの識別子を計算します。

@gottpoff(%rip)

最初の TLS ブロック内の変数のオフセットを保持する GOT 内のエントリを割り当てます。このオフセットは TLS ブロックの端、%fs:0 から計算されます。この演算子は、movq または addq 命令とだけ使用できます。

@tpoff(x)

TLS ブロックの端、%fs:0 からの変数の相対オフセットを計算します。GOT エントリは作成されません。

表 14-25  x64: スレッド固有ストレージの再配置のタイプ
名前
フィールド
計算
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)