Linker 链接器段对齐

Linker 链接器段对齐,linker,ld,linker-scripts,Linker,Ld,Linker Scripts,我正在尝试编写一个可执行文件,其中.text部分位于特定位置。我编写了以下链接器脚本: base_address = 0x123456789AB; SECTIONS { ENTRY(_start) . = base_address; .text : { *(.text); } } 但是,当我查看生成的可执行文件的内存映射时,我看到: 12345600000-12345679000 r-xp 00000000 08:01 1 /path/to/executable 很明

我正在尝试编写一个可执行文件,其中.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

查看生成的映射文件时,才会发生这种情况。可能您的一些输入。文本部分也有自己的对齐要求。

我有一个类似的问题-似乎是这样。文本部分将以兆字节边界对齐,不知道为什么或如何抑制它。