当我将目标文件链接在一起时,生成的 ELF 可执行文件(仅)具有以下 LOAD 段:
LOAD off 0x00000000 vaddr 0x00008000 paddr 0x00008000 align 2**15 filesz 0x000010f0 memsz 0x000010f0 flags rwx
链接器ld
将所有部分组合成一个rwx
段,而不是将可写部分和可执行部分分开。我想防止这种情况。可重定位对象的部分适当地标记为可写或可执行,因此此问题出现在链接时。
那么,是什么决定了如何ld
将权限分配给细分市场?链接描述文件似乎没有与此相关的任何内容。它是在构建工具链时指定的吗?
我的目标是 ARM,工具链是arm-linux-gnueabi
2.22binutils
版。
编辑:链接器脚本在这里。其他链接器选项是-Bdynamic
、--gc-sections
和。-z nocopyreloc
--no-undefined