リンカーとライブラリ

SPARC: 32 ビットおよび 64 ビットの Local Executable (LE)

このコードシーケンスは、動的実行可能ファイル内から、同じファイル内で定義された TLS 変数を参照するためにのみ使用できます。この場合、静的な tlsoffset はリンク編集時に認識され、実行時の再配置は不要です。

表 8–6 SPARC: 32 ビットおよび 64 ビットの Local Executable スレッド固有変数のアクセスコード

コードシーケンス 

初期の再配置 

シンボル 

0x00 sethi %hix(@tpoff(x)), %o0
0x04 xor   %o0,%lo(@tpoff(x)),%o0
0x08 add   %g7, %o0, %o0
 
# %o0 - TLS 変数のアドレスが含まれる
R_SPARC_TLS_LE_HIX22
R_SPARC_TLS_LE_LOX10
<なし>
x
x

sethi 命令は R_SPARC_TLS_LE_HIX22 再配置を生成し、or 命令は R_SPARC_TLS_LE_LOX10 再配置を生成します。リンカーは、実行可能ファイルで定義されたシンボルの静的な TLS オフセットに、これらの再配置を直接結合します。実行時には、再配置処理は不要です。