[binutils-gdb] binutils/readelf: handle NT_AMDGPU_METADATA note name

Simon Marchi simark@sourceware.org
Wed Mar 16 13:02:54 GMT 2022


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

commit 28cdbb183bf80157a71d222b66abc38f32019f2d
Author: Simon Marchi <simon.marchi@efficios.com>
Date:   Wed Mar 16 09:01:26 2022 -0400

    binutils/readelf: handle NT_AMDGPU_METADATA note name
    
    Handle the NT_AMDGPU_METADATA note, which is described here:
    
      https://llvm.org/docs/AMDGPUUsage.html#code-object-v3-note-records
    
    As of this patch, just print out the name, not the contents, which is in
    the msgpack format.
    
    binutils/ChangeLog:
    
            * readelf.c (get_amdgpu_elf_note_type): New.
            (process_note): Handle "AMDGPU" notes.
    
    include/ChangeLog:
    
            * elf/amdgcn.h (NT_AMDGPU_METADATA): New.
    
    Change-Id: Id2dba2e2aeaa55ef7464fb35aee9c7d5f96ddb23

Diff:
---
 binutils/ChangeLog   |  5 +++++
 binutils/readelf.c   | 20 ++++++++++++++++++++
 include/ChangeLog    |  4 ++++
 include/elf/amdgpu.h |  4 ++++
 4 files changed, 33 insertions(+)

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 3ed0b0a7fd8..ea132260e67 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,8 @@
+2022-03-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* readelf.c (get_amdgpu_elf_note_type): New.
+	(process_note): Handle "AMDGPU" notes.
+
 2022-03-16  Simon Marchi  <simon.marchi@efficios.com>
 
 	* readelf.c: Include elf/amdgcn.h.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 00b5e546c1e..91515bdf0fa 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -19724,6 +19724,22 @@ decode_x86_compat_2_isa (unsigned int bitmask)
     }
 }
 
+static const char *
+get_amdgpu_elf_note_type (unsigned int e_type)
+{
+  switch (e_type)
+    {
+    case NT_AMDGPU_METADATA:
+      return _("NT_AMDGPU_METADATA (code object metadata)");
+    default:
+      {
+	static char buf[64];
+	snprintf (buf, sizeof (buf), _("Unknown note type: (0x%08x)"), e_type);
+	return buf;
+      }
+    }
+}
+
 static void
 decode_x86_isa (unsigned int bitmask)
 {
@@ -21313,6 +21329,10 @@ process_note (Elf_Internal_Note *  pnote,
     /* GNU-specific object file notes.  */
     nt = get_gnu_elf_note_type (pnote->type);
 
+  else if (startswith (pnote->namedata, "AMDGPU"))
+    /* AMDGPU-specific object file notes.  */
+    nt = get_amdgpu_elf_note_type (pnote->type);
+
   else if (startswith (pnote->namedata, "FreeBSD"))
     /* FreeBSD-specific core file notes.  */
     nt = get_freebsd_elfcore_note_type (filedata, pnote->type);
diff --git a/include/ChangeLog b/include/ChangeLog
index 7807497b0ad..64aeb128398 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2022-03-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* elf/amdgcn.h (NT_AMDGPU_METADATA): New.
+
 2022-03-16  Simon Marchi  <simon.marchi@efficios.com>
 
 	* elf/amdgcn.h: Add EF_AMDGPU_MACH_AMDGCN_* and
diff --git a/include/elf/amdgpu.h b/include/elf/amdgpu.h
index 005064fc264..e3c90dc74e8 100644
--- a/include/elf/amdgpu.h
+++ b/include/elf/amdgpu.h
@@ -87,4 +87,8 @@
 #define EF_AMDGPU_FEATURE_SRAMECC_OFF_V4         0x800
 #define EF_AMDGPU_FEATURE_SRAMECC_ON_V4          0xc00
 
+/* Notes. */
+
+#define NT_AMDGPU_METADATA                32
+
 #endif /* _ELF_AMDGPU_H */


More information about the Binutils-cvs mailing list