在汇编代码中定义新代码部分以编译ELF二进制文件

时间:2015-02-10 19:33:36

标签: c assembly compilation linker elf

我在汇编程序中定义了一个新的代码段,它将在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信息分配给我的新部分!!

所以这是我的问题:

  1. 如何将segment信息分配给我定义的新代码部分?我仔细检查了链接器脚本(按照说明here转储),我不知道如何修改脚本......

  2. 我只想在程序集程序中添加一个新的可执行部分,并为这个新部分分配一个固定的地址。那么我现在正走在正确的道路上吗?

0 个答案:

没有答案