[binutils-gdb] readelf: Add support for AMDGPU code object V6

Simon Marchi simark@sourceware.org
Fri May 8 12:28:20 GMT 2026


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d49acf37a337408fdd5d008c633e7b31497565e3

commit d49acf37a337408fdd5d008c633e7b31497565e3
Author: Lancelot Six <lancelot.six@amd.com>
Date:   Fri Oct 31 17:54:11 2025 +0000

    readelf: Add support for AMDGPU code object V6
    
    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>

Diff:
---
 binutils/readelf.c   | 14 ++++++++++++++
 include/elf/amdgpu.h |  6 ++++++
 2 files changed, 20 insertions(+)

diff --git a/binutils/readelf.c b/binutils/readelf.c
index 205adae1eea..bf27f9eec23 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -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)
diff --git a/include/elf/amdgpu.h b/include/elf/amdgpu.h
index f5b974ca124..645fef05b08 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.  */
 
@@ -108,6 +109,11 @@
 #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


More information about the Binutils-cvs mailing list