从下面的片段中,我可以看到重定位条目将应用于某个节的偏移量0x000000201018,但是如何确定哪个节?
而且,我所有的部分都比这个偏移量小。这意味着什么?
重新安置:
Relocation section '.rela.plt' at offset 0x4f8 contains 1 entries:
Offset Info Type Sym. Value Sym. Name + Addend
000000201018 000300000007 R_X86_64_JUMP_SLO 0000000000000000 printk + 0节标题:
Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
...
[ 6] .rela.plt RELA 00000000000004f8 000004f8
0000000000000018 0000000000000018 AI 3 21 8
...
[21] .got.plt PROGBITS 0000000000201000 00001000
0000000000000020 0000000000000008 WA 0 0 8发布于 2018-07-24 17:12:26
重新定位应用到的部分在section headers的section headers字段中指定。从问题中的elf示例来看,重新定位部分.rela.plt适用于节号21,.got.plt部分。
对于对象文件和共享对象文件,偏移字段具有不同的含义。对于可重定位文件,值是从节开始到受重定位影响的存储单元的字节偏移。对于可执行文件或共享对象,值是受重定位影响的存储单元的虚拟地址。
来源/更多信息:Format.pdf
https://stackoverflow.com/questions/51407802
复制相似问题