我在我的汇编程序中定义了一个新的代码段,它将在 x86 上编译成 32 位 ELF 二进制文件。
我使用链接器脚本为这个新代码部分分配一个指定的地址,它有效。但是,经过一些调试后,我注意到这个新部分没有加载到内存中!
我使用readelf
并发现这个新部分没有“执行”特权:
[15] .trampoline PROGBITS 080483d0 004020 000117 00 0 0 16
然后我这样做了:
objcopy --set-section-flags .trampoline=alloc,code a.out
但是,我收到了这个警告:
BFD: stQWykoH: warning: allocated section `.trampoline' not in segment
现在我意识到我没有明确地segment
为我的新部分分配信息!!
所以这是我的问题:
如何将
segment
信息分配给我定义的新代码部分?我仔细检查了链接器脚本(按照此处的说明进行转储),但我不知道如何修改脚本...我只想在我的汇编程序中添加一个新的可执行部分,并为这个新部分分配一个固定地址。那么我现在走在正确的道路上吗?