Linux relocation

2019-02-19  本文已影响0人  clive0x

Linux有symbol defining和symbol reference两个过程,在link阶段,需要由relocation建立两过程联系。

Elf32_Rel(对于x86_64就是Elf64_Rela)表达定义和引用之间的联系。

r_info即指向symbol defining

ELF32_R_SYM(info) ((info)>>8)

ELF32_R_TYPE(info) ((unsigned char)(info))

ELF64_R_SYM(info) ((info)>>32)

ELF64_R_TYPE(info) ((Elf64_Word)(info))

ELF32_R_SYM/ELF64_R_SYM算出来的是.dynsym表格中的table offset,需要由.rel.plt sh_link字段链接至.dynsym表。

r_offset,指向symbol reference。两种情况:

当type为ET_REL 时,r_offset为 需要重定向的section offset,Section需要由.rel.plt sh_info字段决定。

当type为ET_EXEC时,r_offset为重定向VA

引用原文地址:https://www.intezer.com/executable-and-linkable-format-101-part-3-relocations/

上一篇 下一篇

猜你喜欢

热点阅读