[PATCH 3/3] readelf: Add support for AMDGPU code object V6
Luis Machado
luis.machado@amd.com
Fri Oct 31 17:54:11 GMT 2025
From: Lancelot Six <lancelot.six@amd.com>
AMDGPU code object V6 adds the EF_AMDGPU_GENERIC_VERSION_V field.
Decode it when decoding the e_flags value for amdgpu.
The output for such generic GFX targets will look like:
$ readelf -h gpu.elf
ELF Header:
...
Flags: 0x1000151, gfx9-generic, xnack any, generic_v1
----------
...
That matches what is currently done by llvm-readelf [1].
[1]
https://github.com/ROCm/llvm-project/blob/088e74cf73549b556cb718f5322ae40a2c84a1f8/llvm/tools/llvm-readobj/ELFDumper.cpp#L3683-L3687
---
binutils/readelf.c | 14 ++++++++++++++
include/elf/amdgpu.h | 9 +++++++--
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 44d23261cc8..91ae762dc44 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -5357,6 +5357,20 @@ decode_AMDGPU_machine_flags (char *out, unsigned int e_flags, Filedata *filedata
}
e_flags &= ~EF_AMDGPU_FEATURE_SRAMECC_V4;
+
+
+ /* Extensions for HSA v6+. */
+ if (abiversion >= ELFABIVERSION_AMDGPU_HSA_V6)
+ {
+ int generic_v;
+
+ generic_v = ((e_flags & EF_AMDGPU_GENERIC_VERSION_V)
+ >> EF_AMDGPU_GENERIC_VERSION_V_SHIFT);
+
+ if (generic_v > 0)
+ out += sprintf (out, _(", generic_v%d"), generic_v);
+ e_flags &= ~EF_AMDGPU_GENERIC_VERSION_V;
+ }
}
if (e_flags != 0)
diff --git a/include/elf/amdgpu.h b/include/elf/amdgpu.h
index 7db66c0c08b..664b09bd64b 100644
--- a/include/elf/amdgpu.h
+++ b/include/elf/amdgpu.h
@@ -29,6 +29,7 @@
#define ELFABIVERSION_AMDGPU_HSA_V3 1
#define ELFABIVERSION_AMDGPU_HSA_V4 2
#define ELFABIVERSION_AMDGPU_HSA_V5 3
+#define ELFABIVERSION_AMDGPU_HSA_V6 4
/* Processor selection mask for EF_AMDGPU_MACH_* values. */
@@ -91,7 +92,7 @@
#define EF_AMDGPU_FEATURE_XNACK_V3 0x100
#define EF_AMDGPU_FEATURE_SRAMECC_V3 0x200
-/* Code object v4 (and later) machine flags. */
+/* Code object v4 (and v5) machine flags. */
#define EF_AMDGPU_FEATURE_XNACK_V4 0x300
#define EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4 0x000
@@ -105,8 +106,12 @@
#define EF_AMDGPU_FEATURE_SRAMECC_OFF_V4 0x800
#define EF_AMDGPU_FEATURE_SRAMECC_ON_V4 0xc00
-/* Notes. */
+/* Code object v6 machine flags. */
+#define EF_AMDGPU_GENERIC_VERSION_V 0xff000000
+#define EF_AMDGPU_GENERIC_VERSION_V_SHIFT 24
+
+/* Notes. */
#define NT_AMDGPU_METADATA 32
/* Relocations. */
--
2.43.0
More information about the Binutils
mailing list