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 <luca.boccassi@microsoft.com>
This commit is contained in:
Luca Boccassi 2021-12-01 17:42:19 +00:00
parent 893b61d358
commit a2393deeee
2 changed files with 82 additions and 0 deletions

View File

@ -0,0 +1,78 @@
From 92608c3a98e943bb0d43408e84d4f419f87b5f1f Mon Sep 17 00:00:00 2001
From: Luca Boccassi <luca.boccassi@gmail.com>
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 <luca.boccassi@microsoft.com>
(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

View File

@ -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)