为什么`Start of section headers`的值这么靠后

wnavrhmk  于 2023-04-29  发布在  其他
关注(0)|答案(1)|浏览(88)

我想知道为什么Start of section headers的值是那么远,因为Start of program headers的值只有64。
raedelf -a ./a.out结果的图片。readelf -a ./a.out
xdd以十六进制读取./a.out,从0x 580到0x 1000,均为0。从0x 1160到0x 2000,也都是0。
0似乎是节之间的填充符。
我的代码只是

main()
{
  printf("Hello world!\n");
  return 0;
}

有人能为我解释一下吗?谢谢!

ercv8c1e

ercv8c1e1#

有人能为我解释一下吗?
链接器在放置完所有节之后会生成节头表,因此节头表往往位于文件的最后位置。
此外,节头表在运行时不使用,因此不分配给任何可加载段。由于通常第一个PT_LOAD段覆盖ELF报头本身,因此 it 必须具有偏移量0。因此,将节头表放置在除文件末尾之外的任何地方将在段之间创建“间隙”,但是这样的间隙是不期望的。

相关问题