模拟动态加载程序以修复共享库偏移

时间:2012-11-16 17:51:55

标签: c++ c embedded shared-libraries

我在工作中有一个有趣的情况,我正在努力寻找一个好的解决方案。我们的代码运行在多核MIPS裸机(无内核)上。我们需要与需要升级的第三方代码集成。 我正在考虑将第三方代码编译为PIC,然后在下载此代码时更改代码/数据符号的GOT(我可以控制代码所在的位置)。此外,假设进入第三方代码的接口不会改变,因此没有新的PLT / GOT条目。 这会有用吗?我还应该考虑其他什么?

2 个答案:

答案 0 :(得分:1)

正确的答案是否比“嵌入动态链接器/加载器”更长?你的问题似乎与ld.so和喜欢的解决方案相同。描述动态链接器/加载器必须考虑的所有内容是John Levine的书籍主题,如Linkers and Loaders

答案 1 :(得分:0)

Linux / Unix binutils objcopy会成为您想要的吗?假设您正在一次构建所有二进制文件,而不是实际上想要在运行时以随机顺序动态加载它们[并且您没有足够的内存将它们分散到该内存中],那么我认为这样可行。

当然,如果你只需要修理GOT,那么我不明白为什么你不能这样做 - 写一些东西的任务并不困难。但是已经编写了objcopy,并且可以做很多二进制/可执行文件“搞乱”(我用它来制作各种系统的boot-roms,包括用于PC等的BIOS roms)[不是我出现了有了这个想法,更像是我拿了某人的makefile,碰巧在其中有objcopy - 我只是看看它做了什么来理解当某些事情出现错误时它是如何制作rom的那样的。

相关问题