【发布时间】:2021-01-29 03:37:23
【问题描述】:
我正在跟踪 binutils 源代码。
我发现在 binutils/bfd 中有名为 elfnn-<arch>.c 和 elfxx-<arch>.c 的文件。
elfnn和elfxx是什么意思?
谢谢。
【问题讨论】:
标签: binutils
我正在跟踪 binutils 源代码。
我发现在 binutils/bfd 中有名为 elfnn-<arch>.c 和 elfxx-<arch>.c 的文件。
elfnn和elfxx是什么意思?
谢谢。
【问题讨论】:
标签: binutils
如果架构仅支持 32 位或 64 位基于 ELF 的 ABI,则该架构的代码位于名为 elf32-arch.c 或 elf64-arch.c,分别。在某些情况下,架构同时支持两者,但实现非常不同,因此您会看到 elf32-arch.c 和 elf64-arch.c 源文件(例如 ppc、mips)。
但一些更现代的架构(同时开发了 32 位和 64 位支持)共享大量实现(例如,aarch64、ia64、riscv)。在这些情况下,您会看到一个 elfnn-arch.c 源文件。这个文件是一个模板;构建过程从模板中自动生成文件的 elf32- 和 elf64- 特化。尽管如此,很多代码对于 32 位和 64 位都是通用的,无需专门化,因此您会在 elfxx-arch.c 源文件中找到这些代码,这不是一个模板。
【讨论】: