[PATCH] readelf: add pretty printing for FDO Dlopen Metadata note

luca.boccassi@gmail.com luca.boccassi@gmail.com
Fri May 10 22:16:49 GMT 2024


From: Luca Boccassi <bluca@debian.org>

Note that the webpage in the comment is not published yet,
it will be next week when the next systemd RC is tagged.
The document can be viewed right now on github at:
https://github.com/systemd/systemd/blob/main/docs/ELF_DLOPEN_METADATA.md

But the node ID and the string format are now fixed, even
if the content of the string might change, it will still be
a string.

Signed-off-by: Luca Boccassi <bluca@debian.org>
---
 binutils/readelf.c   | 7 +++++++
 include/elf/common.h | 3 +++
 2 files changed, 10 insertions(+)

diff --git a/binutils/readelf.c b/binutils/readelf.c
index f8305b4715b..2fb5f977ec0 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -20518,6 +20518,8 @@ get_note_type (Filedata * filedata, unsigned e_type)
 	return _("GO BUILDID");
       case FDO_PACKAGING_METADATA:
 	return _("FDO_PACKAGING_METADATA");
+      case FDO_DLOPEN_METADATA:
+	return _("FDO_DLOPEN_METADATA");
       default:
 	break;
       }
@@ -21777,6 +21779,11 @@ print_fdo_note (Elf_Internal_Note * pnote)
       printf (_("    Packaging Metadata: %.*s\n"), (int) pnote->descsz, pnote->descdata);
       return true;
     }
+  if (pnote->descsz > 0 && pnote->type == FDO_DLOPEN_METADATA)
+    {
+      printf (_("    Dlopen Metadata: %.*s\n"), (int) pnote->descsz, pnote->descdata);
+      return true;
+    }
   return false;
 }
 
diff --git a/include/elf/common.h b/include/elf/common.h
index 832f9bd510f..7e62c34643c 100644
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -1037,6 +1037,9 @@
 /* Values for FDO .note.package notes as defined on https://systemd.io/COREDUMP_PACKAGE_METADATA/  */
 #define FDO_PACKAGING_METADATA	0xcafe1a7e
 
+/* Values for FDO .note.dlopen notes as defined on https://systemd.io/ELF_DLOPEN_METADATA/  */
+#define FDO_DLOPEN_METADATA 0x407c0c0a
+
 /* These three macros disassemble and assemble a symbol table st_info field,
    which contains the symbol binding and symbol type.  The STB_ and STT_
    defines identify the binding and type.  */
-- 
2.39.2



More information about the Binutils mailing list