我想编写一个包含数据的位置相关代码。
这意味着,一个函数可以获取 printf 的绝对地址并打印一个简单的字符串。
我已经设法通过使用带有参数-fPIC的 arm-none-eabi-gcc编译 ELF 来实现这一点。问题是使用objcopy将 ELF 文件转换为平面二进制文件。
objcopy将字符串放在文件的顶部,从而使数据不再独立于位置,而不是将字符串留在函数末尾,由程序计数器寻址。
我错过了什么吗?objcopy 是否可以创建具有位置无关数据的平面二进制文件?
编辑:
可以在附图中看到该字符串位于我的函数上方的绝对地址中,而不是在它的末尾并由 PC 指向