gpt4 book ai didi

c - 将具有绝对地址的符号链接(symbolic link)到 PIC 二进制文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:32 27 4
gpt4 key购买 nike

我正在创建一个由多个二进制图像构建的新图像(通过 python 脚本组合在一起)。问题是最后一个二进制图像必须用fPIC编译,而以前的图像不是。最后一张图像(使用 fPIC 编译的图像)使用 --just-symbols 重用其他二进制图像中的函数。

问题是,当我试图从另一个二进制文件调用函数时(--just symbols 接收到的符号),符号的地址是相对的而不是绝对的,这会导致一个严重的错误。

如何将具有绝对地址的符号链接(symbolic link)到 PIC 二进制文件?

代码示例:

文件 fun.c 编译成 fun.elf 剥离到 fun.bin:

int fun(int a,int b)
{
print("help\r\n");
}

-fPIC编译的文件fail.c和--just-symbols=fun.elf:

int fail(void)
{
fun(1,3);
}

示例中fail.bin中fun的地址是相对的,不是绝对的。

最佳答案

所以,经过更多的研究,我发现这是不可能的。您不能强制使用 fPIcflags编译的应用程序的 pc 不将 PIC 用于特殊符号(在我的例子中来自 --just-symbols 的符号)。

我选择的解决方案实际上是解析not PIC elf文件并获取所需功能的地址。使用这些地址并将它们转换为所需的函数。

关于c - 将具有绝对地址的符号链接(symbolic link)到 PIC 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815754/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com