From a2393deeee2ef668b30ca43bb22aefb82b8d0266 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 1 Dec 2021 17:42:19 +0000 Subject: [PATCH] Backport upstream patch to allow readelf to recognize packaging metadata note Will be useful to implement: https://fedoraproject.org/wiki/Changes/Package_information_on_ELF_objects Signed-off-by: Luca Boccassi --- ...nize-FDO-Packaging-Metadata-ELF-note.patch | 78 +++++++++++++++++++ binutils.spec | 4 + 2 files changed, 82 insertions(+) create mode 100644 binutils-readelf-recognize-FDO-Packaging-Metadata-ELF-note.patch diff --git a/binutils-readelf-recognize-FDO-Packaging-Metadata-ELF-note.patch b/binutils-readelf-recognize-FDO-Packaging-Metadata-ELF-note.patch new file mode 100644 index 0000000..9d9a110 --- /dev/null +++ b/binutils-readelf-recognize-FDO-Packaging-Metadata-ELF-note.patch @@ -0,0 +1,78 @@ +From 92608c3a98e943bb0d43408e84d4f419f87b5f1f Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Wed, 1 Dec 2021 14:44:25 +0000 +Subject: [PATCH] readelf: recognize FDO Packaging Metadata ELF note + +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 +(cherry picked from commit e5382207cdddea07c6456fc1c0e6bea73b3d9947) +--- + binutils/readelf.c | 15 +++++++++++++++ + include/elf/common.h | 3 +++ + 2 files changed, 18 insertions(+) + +diff --git a/binutils/readelf.c b/binutils/readelf.c +index a6073f7ec80..a92dce3114f 100644 +--- a/binutils/readelf.c ++++ b/binutils/readelf.c +@@ -18861,6 +18861,8 @@ get_note_type (Filedata * filedata, unsigned e_type) + return _("func"); + case NT_GO_BUILDID: + return _("GO BUILDID"); ++ case FDO_PACKAGING_METADATA: ++ return _("FDO_PACKAGING_METADATA"); + default: + break; + } +@@ -20012,6 +20014,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) + { +@@ -20741,6 +20754,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) +diff --git a/include/elf/common.h b/include/elf/common.h +index 0cca28673dd..8ee17c84a97 100644 +--- a/include/elf/common.h ++++ b/include/elf/common.h +@@ -953,6 +953,9 @@ + + #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. */ +-- +2.30.2 + diff --git a/binutils.spec b/binutils.spec index 064f420..a5a5144 100644 --- a/binutils.spec +++ b/binutils.spec @@ -325,6 +325,10 @@ Patch27: binutils-gas-multibyte-warnings.patch # Lifetime: Fixed in 2.38. Patch28: binutils-AArch64-EFI.patch +# Purpose: Recognize FDO Packaging Metadata ELF note in readelf +# Lifetime: Fixed in 2.38. +Patch29: binutils-readelf-recognize-FDO-Packaging-Metadata-ELF-note.patch + #---------------------------------------------------------------------------- Provides: bundled(libiberty)