c/c++ 将位置相关对象转换为位置无关对象

c/c++ convert position dependent object to be position independent

我有一些带有调试符号的已编译目标文件,但无法访问源代码。

有什么方法可以将此文件转换为与位置无关的文件吗?

据我了解,“-fPIC”标志使所有跳转都是相对的。我想知道是否有调试符号足以修复此跳转并创建一个 PIC 二进制文件。

如果不是,请告诉我为什么无法完成此操作。

我认为这个问题是平台问题而不是特定于编译器的问题,因为不同的平台实现 PIC 代码的方式不同。

尽管如此,我不知道有哪个平台可以使用简单的工具将常规代码转换为位置无关代码。这是必须在 compile/code 世代时做出的决定。实现目标的唯一方法可能是反汇编代码并将每个绝对 code/data 引用修改为相对寻址。

简短的回答是:不,(实际上)不可能。