草庐IT

Riscv-elf

全部标签

c - 查找谁使用了 ELF 文件中的符号

我有一个很大的二进制文件,其中包含一个符号。我可以在nm或objdump中看到符号。我知道使用了该符号,否则链接器不会包含它(更准确地说,我知道使用了同一源文件中的某些符号)。我正在尝试找出它的具体使用方式。如果引用是由一个函数(例如调用函数的函数、使用全局变量的函数),我可以使用objdump-rd反汇编文件并找到引用。但是如果引用是由变量(例如初始化为指向某个变量的全局指针),则反汇编不会显示它。我没能找到任何方法。这是一个演示它的例子。在此示例中,很明显谁使用了x,但我不知道如何检查生成的二进制文件并找到它。//x.cintx=3;//main.cexternintx;stati

c - 查找谁使用了 ELF 文件中的符号

我有一个很大的二进制文件,其中包含一个符号。我可以在nm或objdump中看到符号。我知道使用了该符号,否则链接器不会包含它(更准确地说,我知道使用了同一源文件中的某些符号)。我正在尝试找出它的具体使用方式。如果引用是由一个函数(例如调用函数的函数、使用全局变量的函数),我可以使用objdump-rd反汇编文件并找到引用。但是如果引用是由变量(例如初始化为指向某个变量的全局指针),则反汇编不会显示它。我没能找到任何方法。这是一个演示它的例子。在此示例中,很明显谁使用了x,但我不知道如何检查生成的二进制文件并找到它。//x.cintx=3;//main.cexternintx;stati

Linux ELF 文件 : Which byte will differ for static and dynamic ELF programs?

我正在使用linuxelf文件。我想检测给定的elf程序是静态链接的(完全静态链接,ldd表示“不是动态可执行文件”)还是动态链接的。ELF适用于嵌入式Linux,所以我不能直接运行它或使用ldd实用程序。我想通过读取和检查一些字节完全在我的程序中完成此操作。我不想依赖file实用程序或libelf、binutils等。哪些字节会不同? 最佳答案 如何使用ldd.c来自μClibc?如果你愿意,应该很容易去掉任何不需要的依赖项/检查。我认为这是一种比试图通过阅读man5elf找出所有极端情况更聪明的方法,尽管FWIW它看起来只是检查

Linux ELF 文件 : Which byte will differ for static and dynamic ELF programs?

我正在使用linuxelf文件。我想检测给定的elf程序是静态链接的(完全静态链接,ldd表示“不是动态可执行文件”)还是动态链接的。ELF适用于嵌入式Linux,所以我不能直接运行它或使用ldd实用程序。我想通过读取和检查一些字节完全在我的程序中完成此操作。我不想依赖file实用程序或libelf、binutils等。哪些字节会不同? 最佳答案 如何使用ldd.c来自μClibc?如果你愿意,应该很容易去掉任何不需要的依赖项/检查。我认为这是一种比试图通过阅读man5elf找出所有极端情况更聪明的方法,尽管FWIW它看起来只是检查

linux - 如何查看ELF文件中包含的函数名和参数?

如果我查看文件的字节,我肯定可以看到其中的一些函数名称。有什么工具可以为我列出它们吗?甚至他们的参数也是如此? 最佳答案 这应该打印目标文件或库中所有已定义的符号。nm-C--defined-onlyfile.onm有很多选项可以用来过滤掉符号,比如-g只显示globalsymbols,-l用于打印行号(如果您使用gcc-g启用调试符号)等等。如果你有一个ELF格式的二进制文件(看起来是你的情况),你也可以使用readelfreadelf-Wsfile.o此输出中的第8列包含感兴趣的符号名称。您可以使用c++filt来分解名称:re

linux - 如何查看ELF文件中包含的函数名和参数?

如果我查看文件的字节,我肯定可以看到其中的一些函数名称。有什么工具可以为我列出它们吗?甚至他们的参数也是如此? 最佳答案 这应该打印目标文件或库中所有已定义的符号。nm-C--defined-onlyfile.onm有很多选项可以用来过滤掉符号,比如-g只显示globalsymbols,-l用于打印行号(如果您使用gcc-g启用调试符号)等等。如果你有一个ELF格式的二进制文件(看起来是你的情况),你也可以使用readelfreadelf-Wsfile.o此输出中的第8列包含感兴趣的符号名称。您可以使用c++filt来分解名称:re

linux - Mac 上的 gnu utils 如 gobjdump parser Linux ELF binary 可以吗?

所以基本上我有一些在Linux32位上编译的ELF二进制文件。我想在我的Mac64位上分析它。我正在尝试使用自制软件安装的gnu实用程序,例如gobjdump和greadelf。但是,当我尝试使用gobjdump解析elf二进制文件时,出现了这个错误:gobjdump:hello:Fileformatisambiguousgobjdump:Matchingformats:elf32-i386-naclelf32-i386-sol2elf32-i386-vxworkself32-i386所以我的问题是:是否可以使用其gnuutils在MAC上分析32位Linux编译的ELF二进制文件?如

linux - Mac 上的 gnu utils 如 gobjdump parser Linux ELF binary 可以吗?

所以基本上我有一些在Linux32位上编译的ELF二进制文件。我想在我的Mac64位上分析它。我正在尝试使用自制软件安装的gnu实用程序,例如gobjdump和greadelf。但是,当我尝试使用gobjdump解析elf二进制文件时,出现了这个错误:gobjdump:hello:Fileformatisambiguousgobjdump:Matchingformats:elf32-i386-naclelf32-i386-sol2elf32-i386-vxworkself32-i386所以我的问题是:是否可以使用其gnuutils在MAC上分析32位Linux编译的ELF二进制文件?如

linux - ELF格式的重定位信息在哪里?

在Loaders部分引用“LinkersandLoaders”"load-timerelocationisfarsimplerthanlink-timerelocation,becausetheentireprogramisrelocatedasaunit.[...]Afterreadingtheprogramintomemory,theloaderconsultstherelocationitemsintheobjectfileandfixesupthememorylocationstowhichtheitemspoint"也许我误解了这一点,这仅在某些体系结构中存在,但我的问题是:

linux - ELF格式的重定位信息在哪里?

在Loaders部分引用“LinkersandLoaders”"load-timerelocationisfarsimplerthanlink-timerelocation,becausetheentireprogramisrelocatedasaunit.[...]Afterreadingtheprogramintomemory,theloaderconsultstherelocationitemsintheobjectfileandfixesupthememorylocationstowhichtheitemspoint"也许我误解了这一点,这仅在某些体系结构中存在,但我的问题是: