链接器的加数字段是否为非 32 位?

Is linker's addend field for non-32 bit?

检查目标文件时,例如/usr/lib32/usr/libreadelf -r <object file> 中的一个,似乎 32 位变体没有加数字段,而 64 位变体有。我猜这是为了修复非 32 位系统的地址布局,例如x86_64 还是手臂。正确吗?

RELA(显式加数)与 REL(以修改后的偏移量存储的加数)重定位之间的区别主要是历史性的。这一切都以 REL 开始,以节省 space,但大多数现代架构都使用 RELA 来 speed up linking. Theoretically static/dynamic linkers should support both REL and RELA or any mix thereof (see e.g. discussion here)。