https://docs.oracle.com/cd/E23824_01/html/819-0690/chapter6-54839.html#chapter7-2种状态:
64位SPARC和64位x86仅使用Elf64_Rela重定位条目。因此,r_addend成员充当重定位addend。x86仅使用Elf32_RL重定位条目。要重新定位的字段包含加数。
存在一个Elf64_Rel
结构,那么为什么不在64位x86目标上使用它呢?使用Elf64_Rela
不只是浪费空间吗?因为重新定位前的地址被忽略了(或者至少在测试中总是0(?
注意:Elf64_Rel
中省略了r_addend
,而不是简单地未使用。
存在一个Elf64_Rel结构,那么为什么不在64位x86目标上使用它呢?
在x86_64
上,有几种可能的内存模型。默认情况下,使用小型内存模型,不需要任何64位重定位。
如果使用-mcmodel=large
进行编译,则将使用64位重定位。