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>
}
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)
#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