【发布时间】:2017-11-08 17:37:44
【问题描述】:
我编译了一个简单的C程序(gcc -o file file.cpp),运行objdump -h file得到如下输出,
12 .text 00000172 0000000000400400 0000000000400400 00000400 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
13 .fini 00000009 0000000000400574 0000000000400574 00000574 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
我有一个简短的问题。
为什么.text 部分之后有 2 个字节的间隙? 0x400400 + 0x172 = 0x400572,但 .fini 部分从 0x400574 开始?这和对齐有关系吗?我也注意到其他一些部分之间也存在类似的差距。
【问题讨论】:
-
可能对齐。但你为什么要问?好奇心?还是有其他问题导致这个问题?
-
试图找出方法来识别虚拟地址空间中
.text段的范围 -
您可能会在链接器脚本中找到如下内容:
. = ALIGN(4);