我正在尝试在64位x86环境下的Linux中加载使用 "gcc -m32 test.c -o test.exe"编译的ELF文件。我正在尝试将这个32位文件(test.exe)加载到具有以下核心逻辑(32位ELF)的用户空间ELF加载器中。 问题在于调用返回的起始地址会导致分段错误核心转储。...
我发现了一个名为size的命令,它可以给出ELF文件中某个部分的大小。在尝试使用该命令时,我为最简单的C++程序创建了一个输出文件: int main(){return 0;} 显然我没有定义任何已初始化或未初始化的数据,那么为什么我的BSS和DATA段大小分别为512和8字节? 我认...
在ELF二进制文件中,如何更改可加载段的对齐方式?在下面的示例中(请参见右侧),我想将0x200000减少到0x40960。 LOAD 0x000000 0x000000400000 0x0000000000400000 0x000704 0x000704 R E **0x200000...
我想使用ld的--build-id选项为我的二进制文件添加构建信息,但我不确定如何使该信息在程序内可用。假设我想编写一个程序,在每次出现异常时写入回溯,以及解析此信息的脚本。该脚本读取程序的符号表,并搜索回溯中打印的地址(因为该程序是静态链接的,backtrace_symbols无法正常工作,...
我正在尝试将一个 ELF 文件加载到我制作的 MIPS 模拟器中。我遇到的问题是我不太理解 ELF 节头偏移量背后的含义。当我进行段转储时,段 25-31 和 33-35 “开始”于 0x00000000,但头部表明段从某个值的偏移量开始(例如 010190)。另外,在 -S 节的开头,rea...
我正在使用NDK构建一个armv8a Android SDK,并希望启用LTO构建。我将 -flto 添加到C ++工具链的编译和链接标志中,一切都进行得很顺利,直到我尝试在模拟器中运行时,就会发出以下类似的错误: 警告:链接器:/ data / lib / libservice.so:未...
这是我在Mac OS X上使用clang++时遇到的问题的简化版本。为了使问题更真实,对其进行了严格编辑(第一次尝试描述该问题时并未展现问题)。 失败原因: 我有一个大型C++软件,其中目标文件中有大量符号,因此我使用“-fvisibility=hidden”来保持我的符号表小。众所周知,...