为什么 gcc 即使在传递了“-gdwarf-5”标志后也不产生 DWARF5 bin?
我正在尝试编译一个基本的C程序,以在Ubuntu X86-64机器上获取二进制精灵。我希望二进制文件符合DWARF5格式,因为我正在努力编写 .debug_sup parser。…
是否可以将 .text 部分自动分割到多个内存区域?
我目前正在为带有分割闪存区域的微控制器编写嵌入式程序。像“我的应用程序”这样的情况 MEMORY { flash1 : ORIGIN = 0x1000, LENGTH = 0x1000 /* 1K …
使用 C 创建可重定位的 elf 二进制文件,无需 libelf 或任何其他库
所以我尝试用 c 创建一个可重定位的 elf 二进制文件。我不想使用库或类似的东西。我已经编写了一些代码。这是我一直在阅读的资源:https://refspecs.l…
将ELF文件的入口点计算为物理地址(从0开始的偏移量)
我正在构建一个 RISC-V 模拟器,它基本上将整个 ELF 文件加载到内存中。 到目前为止,我使用了 risc-v 基金会提供的预编译测试二进制文件,它方便地在…
为什么动态链接时extern变量不使用GOT?
我有下面两段代码,我将文件 sum.c 编译为动态库(.so),然后将其与 main.c 一起编译。我使用的命令行如下: gcc sum.c -shared -fPIC -o libsum.so …
riscv objdump -d 的输出不清楚
现在我正在尝试了解 RISC-V ISA,但我对机器代码和汇编有不清楚的地方。 我编写了如下的 C 代码: int main() { return 42; } 然后,我通过以下命令生…
Binutils / Linker - 静态解析外部符号引用
背景 我正在开发一些针对具有最新 GNU 工具链的旧嵌入式设备的项目。 由于内存非常有限,代码被分为主要部分和一些覆盖层,其中覆盖层被压缩以节省空…
ELF 的 gnu_debuglink 部分给了我奇怪的名字
我使用过 Ubuntu 20.04.3,当我运行时, readelf --string-dump=.gnu_debuglink /usr/bin/cp 我得到了奇怪的调试文件名,同时期待类似 cp.debug 的内…
为什么 ELF 可执行文件可以有 4 个 LOAD 段?
有一个远程 64 位 *nix 服务器可以编译用户提供的代码(应该用 Rust 编写,但我认为这并不重要,因为它使用 LLVM)。我不知道它使用哪个编译器/链接器…
ELF加载器如何映射小于页面大小的部分?
mmap 手册页指出“文件以页面大小的倍数映射。”,在我的系统上为 4096 字节 (0x1000)。然而 ELF 文件可以有小于 0x1000 的部分,例如: [Sections] n…
可以使用“dlopen”加载和映射静态 ELF 可执行文件(不是库)吗?
如果文件anexe是静态编译的,没有符号,没有导出,ELF,可以使用dlopen("anexe", RTLD_LAZY)将其映射到内存吗? 我的目标不是能够引用符号——没有符…
ELF .notes 部分真的需要吗?
在 Linux 上,我尝试将静态链接的 ELF 文件剥离为最基本的内容。当我运行: strip --strip-unneeded foo 或 strip --strip-all foo 生成的文件仍然有…