2010-02-24 77 views
5

我想写ELF可执行文件加载程序ARM platform.I有一些疑问这里如何动态加载可重定位的ELF可执行文件?

1)如何产生重定位或与位置无关的ELF可执行文件(什么是编译器&连接选项)2)如何上面加载此生成ELF可执行文件。

作为astart,我做了一些工作,它工作正常。我为RO_Base使用了一个固定地址,并且在构建时不使用任何--split选项来拆分Segments,所以我得到了一个连续的代码,数据,bss部分。在此之后,我将精灵加载到与RO_Base相同的地址并将代码作为新线程执行。这工作正常。我没有做任何重定位等...

现在我想通过生成可重定位的ELF并修改加载器进行适当的更改来使其动态并能够加载到任何地址。 请帮助我使它工作。

谢谢,

回答

0

只需使用-r标志链接器使文件可重新定位。

使用像this这样的东西来重新定位内存中的文件。

0

这是一个很大的话题。我会参考John R. Levine的“Linkers and Loaders”。这里是本书的手稿,Chapter 7 Relocation,我希望它有帮助

相关问题