我在汇编程序中定义了一个新的代码段,它将在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
信息分配给我定义的新代码部分?我仔细检查了链接器脚本(按照说明here转储),我不知道如何修改脚本......
我只想在程序集程序中添加一个新的可执行部分,并为这个新部分分配一个固定的地址。那么我现在正走在正确的道路上吗?