binutils/bfd中的elfnn-<arch>.c和elfxx-<arch>.c是什么意思?

What's the meaning of elfnn-<arch>.c and elfxx-<arch>.c in binutils/bfd?

我正在跟踪 binutils 源代码。
我发现 binutils/bfd.
中有名为 elfnn-<arch>.celfxx-<arch>.c 的文件 elfnn 和 elfxx 是什么意思?

谢谢。

在架构仅支持 32 位或 64 位基于 ELF 的 ABI 的情况下,该架构的代码位于名为 elf32-arch 的文件中。 c 或 elf64-arch.c,分别。在某些情况下,架构同时支持两者,但实现方式非常不同,因此您会同时看到 elf32-arch.c 和 elf64-arch[= 21=.c 源文件(例如 ppc、mips)。

但是一些更现代的架构,同时开发了 32 位和 64 位支持,共享很多实现(例如,aarch64、ia64、riscv)。在这些情况下,您会看到一个 elfnn-arch.c 源文件。这个文件是一个模板;构建过程从模板自动生成文件的 elf32 和 elf64 特化。尽管如此,很多代码对于 32 位和 64 位都是通用的,不需要专门化,因此您会在 elfxx-arch.c 源文件中找到该代码,这不是模板。