我正在了解有关搬迁的信息ELF 参考和这个博客,但我无法计算搬迁地址。
假设我们有两个文件
A
,B
类型为ET_REL
,我们想要合并它们S
在链接期间命名的部分;这些部分包括符号SA
(在A
文件中)和SB
(在B
)文件中。如果我们在A.elf
和中有重定位条目和重定位偏移量B.elf
,我不明白链接器如何避免重定位地址冲突:我假设这些偏移量在A.elf
和中可能是相同的B.elf
,因为这些文件在编译期间不知道彼此。ET_EXEC 中重定位表的用途是什么?我不明白为什么需要它。
Rela类型重定位中加数的作用是什么?
我认为最重要的是,我对搬迁的具体步骤没有清晰的直觉。这里有一个例子博客,但我不明白该符号到底发生了什么,结果是什么以及我们如何组合多个部分。任何有关学习资源的建议将不胜感激。