0

我想编写一个包含数据的位置相关代码。

这意味着,一个函数可以获取 printf 的绝对地址并打印一个简单的字符串。

我已经设法通过使用带有参数-fPIC的 arm-none-eabi-gcc编译 ELF 来实现这一点。问题是使用objcopy将 ELF 文件转换为平面二进制文件。

objcopy将字符串放在文件的顶部,从而使数据不再独立于位置,而不是将字符串留在函数末尾,由程序计数器寻址。

我错过了什么吗?objcopy 是否可以创建具有位置无关数据的平面二进制文件?

编辑:

可以在附图中看到字符串位于我的函数上方的绝对地址中,而不是在它的末尾并由 PC 指向

4

0 回答 0