ELF文件包含两个处理重定位的结构:
Elf64_Rel
typedef struct {
Elf64_Addr r_offset;
Uint64_t
r_info;
} Elf64_Rel;和Elf64_Rela
typedef struct {
Elf64_Addr r_offset;
uint64_t
r_info;
int64_t
r_addend;
} Elf64_Rela;我想看一下搬迁条目,但我不知道该用哪一个。手册页对此相当神秘。每个人都有特定的用法吗?
发布于 2020-02-29 09:51:38
这取决于目标。大多数目标只使用这两种形式中的一种。搬迁在系统五应用二进制接口 ( ELF规范)中的章节指出:
如前所述,只有
Elf32_Rela和Elf64_Rela条目包含显式加载项。类型为Elf32_Rel和Elf64_Rel的条目在要修改的位置中存储隐式加载项。根据处理器体系结构的不同,一种或另一种形式可能是必要的,也可能更方便。因此,特定机器的实现可以单独使用一种形式,也可以根据上下文使用任何一种形式。
ELF格式是自描述的,因为它显示是REL还是RELA重新定位(SHT_REL或SHT_RELA表示节类型;DT_REL、DT_RELSZ、DT_RELENT或DT_RELA、DT_RELASZ、DT_RELAENT在动态部分)。但搬迁处理本身就是针对特定目标的。
https://stackoverflow.com/questions/60462386
复制相似问题