我正在尝试编写一个可执行文件,其中.text部分位于特定位置。我写了以下链接器脚本:
base_address = 0x123456789AB;
SECTIONS
{
ENTRY(_start)
. = base_address;
.text : { *(.text); }
}
但是,当我查看生成的可执行文件的内存映射时,我看到:
12345600000-12345679000 r-xp 00000000 08:01 1 /path/to/executable
很明显为什么该部分会与0x1000
对齐,即页面大小,0x100000
来自哪里?
现在有趣的是,只有当我使用-Wl,--build-id=none
停用构建ID时,或者当我启用它们并尝试在.note.gnu.build-id
之后填充.text
部分时,才会发生这种情况。
答案 0 :(得分:0)
查看生成的地图文件。您的一些输入.text部分可能也有自己的对齐要求。