【发布时间】:2013-05-24 19:47:56
【问题描述】:
我准备为 ARM elf 可重定位文件制作加载器。我设法以某种方式解析了精灵,并设法进行了一些简单的重定位,但是我必须执行以下操作并且遇到了麻烦。我需要从我试图加载的这个 ELF 文件中调用 printf 函数,它必须与试图加载它的程序中的 printf 函数相同。 (那是我的主机程序,用 ARM arch 的 c++ 编写)。我怎样才能得到这个 printf 地址,然后我怎样才能在 elf 文件中重新定位符号。 (我用谷歌搜索发现这种类型的重定位使用 24 位 PC 相对寻址)谁能帮我提取 printf 的地址? 提前谢谢!
【问题讨论】:
-
是的,我尝试过类似的方法,但我无法重新定位到新代码,我忘记添加重定位类型是 #define R_ARM_CALL 28(其中 28 是实际文件中的值)
标签: c++ assembly arm elf relocation