为什么 Elf64 不使用 Elf64_Rel 在 64 位 x86 上进行重定位?



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位重定位

最新更新