]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
readelf: Add support for AMDGPU code object V6
authorLancelot Six <lancelot.six@amd.com>
Fri, 31 Oct 2025 17:54:11 +0000 (17:54 +0000)
committerSimon Marchi <simon.marchi@efficios.com>
Fri, 8 May 2026 12:24:14 +0000 (08:24 -0400)
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
                                                   ----------
    ...

... indicating that this ELF has the "generic code object v1" flag.

Change-Id: I0cb8014fc23150e16f43ab98adb3832ede253c88
Co-Authored-By: Simon Marchi <simon.marchi@efficios.com>
binutils/readelf.c
include/elf/amdgpu.h

index 205adae1eea69b9dc3c0f313b0c965138586f037..bf27f9eec23129c4c4ea1d9182490e7759446446 100644 (file)
@@ -5406,6 +5406,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)
+       {
+         unsigned 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%u"), generic_v);
+
+         e_flags &= ~EF_AMDGPU_GENERIC_VERSION_V;
+       }
     }
 
   if (e_flags != 0)
index f5b974ca1245b51b442100d1c2699fa291fc210b..645fef05b089c6306a8d33bf605caca4365783c7 100644 (file)
@@ -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.  */
 
 #define EF_AMDGPU_FEATURE_SRAMECC_OFF_V4         0x800
 #define EF_AMDGPU_FEATURE_SRAMECC_ON_V4          0xc00
 
+/* 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