リンカーとライブラリ

x64: Local Executable (LE)

このコードシーケンスは、「スレッド固有領域のアクセスモデル」で説明されている LE モデルを実装します。

表 8–22 x64: Local Executable スレッド固有変数のアクセスコード

コードシーケンス

初期の再配置

シンボル

0x00 movq %fs:0, %rax
0x06 leaq  x@tpoff(%rax), %rax

# %rax - contains address of TLS variable
<none>
R_AMD64_TPOFF32
x

TLS 変数のアドレスではなく TLS 変数の内容を読み込む場合は、次のシーケンスを使用できます。

表 8–23 x64: Local Executable スレッド固有変数のアクセスコード II

コードシーケンス

初期の再配置

シンボル

0x00 movq %fs:0, %rax
0x06 movq  x@tpoff(%rax), %rax

# %rax - contains contents of TLS variable
<none>
R_AMD64_TPOFF32
x

次のシーケンスはより短いものです。

表 8–24 x64: Local Executable スレッド固有変数のアクセスコード III

コードシーケンス

初期の再配置

シンボル

0x00 movq  %fs:x@tpoff, %rax

# %rax - contains contents of TLS variable
R_AMD64_TPOFF32
x