如何使用 readelf 确定正在重定位的内容
How to determine what is being relocated using readelf
从下面的代码片段中,我可以看到重定位条目将应用于某个部分的偏移量 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
第 Headers 部分:
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
应用重定位的部分在 section headers
的 info
字段中指定。从问题中的示例精灵中,重定位部分 .rela.plt
适用于部分编号 21
,即 .got.plt
部分。
目标文件和共享目标文件的偏移字段有不同的含义。 "For a relocatable file, the value is the byte offset from the beginning of the section to the storage unit affected by the relocation. For an executable file or a shared object, the value is the virtual address of the storage unit affected by the relocation."
Source/More 信息:http://www.skyfree.org/linux/references/ELF_Format.pdf
从下面的代码片段中,我可以看到重定位条目将应用于某个部分的偏移量 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
第 Headers 部分:
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
应用重定位的部分在 section headers
的 info
字段中指定。从问题中的示例精灵中,重定位部分 .rela.plt
适用于部分编号 21
,即 .got.plt
部分。
目标文件和共享目标文件的偏移字段有不同的含义。 "For a relocatable file, the value is the byte offset from the beginning of the section to the storage unit affected by the relocation. For an executable file or a shared object, the value is the virtual address of the storage unit affected by the relocation."
Source/More 信息:http://www.skyfree.org/linux/references/ELF_Format.pdf