x64: 再配置型
次の表に、x64 用に定義された再配置を示します。
表 12-19 x64: ELF 再配置型
|
|
|
|
R_AMD64_NONE
|
0
|
なし
|
なし
|
R_AMD64_64
|
1
|
word64
|
S + A
|
R_AMD64_PC32
|
2
|
word32
|
S + A - P
|
R_AMD64_GOT32
|
3
|
word32
|
G + A
|
R_AMD64_PLT32
|
4
|
word32
|
L + A - P
|
R_AMD64_COPY
|
5
|
なし
|
この表のあとの説明を参照してください。
|
R_AMD64_GLOB_DAT
|
6
|
word64
|
S
|
R_AMD64_JUMP_SLOT
|
7
|
word64
|
S
|
R_AMD64_RELATIVE
|
8
|
word64
|
B + A
|
R_AMD64_GOTPCREL
|
9
|
word32
|
G + GOT + A - P
|
R_AMD64_32
|
10
|
word32
|
S + A
|
R_AMD64_32S
|
11
|
word32
|
S + A
|
R_AMD64_16
|
12
|
word16
|
S + A
|
R_AMD64_PC16
|
13
|
word16
|
S + A - P
|
R_AMD64_8
|
14
|
word8
|
S + A
|
R_AMD64_PC8
|
15
|
word8
|
S + A - P
|
R_AMD64_PC64
|
24
|
word64
|
S + A - P
|
R_AMD64_GOTOFF64
|
25
|
word64
|
S + A - GOT
|
R_AMD64_GOTPC32
|
26
|
word32
|
GOT + A + P
|
R_AMD64_SIZE32
|
32
|
word32
|
Z + A
|
R_AMD64_SIZE64
|
33
|
word64
|
Z + A
|
|
これらの再配置型のほとんどの特別なセマンティクスは、x86 で使用されているものと同じです。いくつかの再配置型には、単純な計算を超えたセマンティクスが存在します。
- R_AMD64_GOTPCREL
-
この再配置のセマンティクスは R_AMD64_GOT32 または等しい R_386_GOTPC 再配置と異なります。x64 アーキテクチャーは、命令ポインタに対して相対的なアドレス指定モードを提供します。したがって、アドレスは 1 つの命令で GOT から読み込むことができます。
R_AMD64_GOTPCREL 再配置の計算は、シンボルのアドレスを指定した GOT 内の位置と再配置を適用する位置の間の差を提供します。
- R_AMD64_32
-
計算値は 32 ビットに切り捨てられます。リンカーは、再配置のために生成された値が元の 64 ビット値にゼロ拡張されていることを確認します。
- R_AMD64_32S
-
計算値は 32 ビットに切り捨てられます。リンカーは、再配置のために生成された値が元の 64 ビット値に符号拡張されていることを確認します。
- R_AMD64_8、R_AMD64_16、R_AMD64_PC16、R_AMD64_PC8
-
これらの再配置は x64 ABI には準拠していませんが、ドキュメント化するためにここに追加しておきます。R_AMD64_8 再配置は、計算値を 8 ビットに切り詰めます。R_AMD64_16 再配置は、計算値を 16 ビットに切り詰めます。