readelf: recognize FDO Packaging Metadata ELF note
authorLuca Boccassi <luca.boccassi@gmail.com>
Wed, 1 Dec 2021 14:44:25 +0000 (14:44 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 1 Dec 2021 14:44:25 +0000 (14:44 +0000)
As defined on: https://systemd.io/COREDUMP_PACKAGE_METADATA/
this note will be used starting from Fedora 36. Allow
readelf --notes to pretty print it:

Displaying notes found in: .note.package
  Owner                Data size  Description
  FDO                  0x00000039 FDO_PACKAGING_METADATA
    Packaging Metadata: {"type":"deb","name":"fsverity-utils","version":"1.3-1"}

Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
binutils/readelf.c
include/elf/common.h

index 2e7d28511fb0626782ad4fd9cb151b1a1320ae73..92aa788cca1cd1fe8b9ee83d26528c341736b6e0 100644 (file)
@@ -19220,6 +19220,8 @@ get_note_type (Filedata * filedata, unsigned e_type)
        return _("NT_SIGINFO (siginfo_t data)");
       case NT_FILE:
        return _("NT_FILE (mapped files)");
+      case FDO_PACKAGING_METADATA:
+       return _("FDO_PACKAGING_METADATA");
       default:
        break;
       }
@@ -20446,6 +20448,17 @@ print_stapsdt_note (Elf_Internal_Note *pnote)
   return false;
 }
 
+static bool
+print_fdo_note (Elf_Internal_Note * pnote)
+{
+  if (pnote->descsz > 0 && pnote->type == FDO_PACKAGING_METADATA)
+    {
+      printf (_("    Packaging Metadata: %.*s\n"), (int) pnote->descsz, pnote->descdata);
+      return true;
+    }
+  return false;
+}
+
 static const char *
 get_ia64_vms_note_type (unsigned e_type)
 {
@@ -21179,6 +21192,8 @@ process_note (Elf_Internal_Note *  pnote,
     return print_stapsdt_note (pnote);
   else if (startswith (pnote->namedata, "CORE"))
     return print_core_note (pnote);
+  else if (startswith (pnote->namedata, "FDO"))
+    return print_fdo_note (pnote);
   else if (((startswith (pnote->namedata, "GA")
             && strchr ("*$!+", pnote->namedata[2]) != NULL)
            || strchr ("*$!+", pnote->namedata[0]) != NULL)
index 5d31e35ec8953f97e7bf0b7a4c06ecc6ec0c5b8b..61cfaacfe6c12b5b12015f610225de399a0ffd2b 100644 (file)
 
 #define NT_FREEBSD_ABI_TAG     1
 
+/* Values for FDO .note.package notes as defined on https://systemd.io/COREDUMP_PACKAGE_METADATA/  */
+#define FDO_PACKAGING_METADATA 0xcafe1a7e
+
 /* 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.  */