From: Matthias Klose Date: Sun, 25 Aug 2024 15:32:28 +0000 (+0200) Subject: env-package-metadata X-Git-Tag: archive/raspbian/2.43.1-5+rpi1^2^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=3a04dfb17a4305d05c8adefdee1d39291d08bc8e;p=binutils.git env-package-metadata Gbp-Pq: Name env-package-metadata.diff --- diff --git a/gold/layout.cc b/gold/layout.cc index b43ae841a..56b7acd0a 100644 --- a/gold/layout.cc +++ b/gold/layout.cc @@ -3560,15 +3560,32 @@ Layout::create_build_id() // If --package-metadata was used, set up the package metadata note. // https://systemd.io/ELF_PACKAGE_METADATA/ +static const char* +get_package_metadata() +{ + if (parameters->options().user_set_package_metadata()) + { + const char* desc = parameters->options().package_metadata(); + if (strcmp(desc, "") != 0) + return desc; + } + + if (getenv("ELF_PACKAGE_METADATA")) + { + const char* desc = getenv("ELF_PACKAGE_METADATA"); + if (strcmp(desc, "") != 0) + return desc; + } + + return NULL; +} + void Layout::create_package_metadata() { - if (!parameters->options().user_set_package_metadata()) - return; - - const char* desc = parameters->options().package_metadata(); - if (strcmp(desc, "") == 0) - return; + const char* desc = get_package_metadata(); + if (desc == NULL) + return; #ifdef HAVE_JANSSON json_error_t json_error; diff --git a/ld/ldelf.c b/ld/ldelf.c index 09691609f..8bb279fe4 100644 --- a/ld/ldelf.c +++ b/ld/ldelf.c @@ -97,6 +97,18 @@ ldelf_after_parse (void) einfo (_("%F%P: common page size (0x%v) > maximum page size (0x%v)\n"), link_info.commonpagesize, link_info.maxpagesize); } + + if (!ldelf_emit_note_fdo_package_metadata) + { + char *package_metadata = getenv("ELF_PACKAGE_METADATA"); + + if (package_metadata) + { + ldelf_emit_note_fdo_package_metadata = + xmalloc (strlen (package_metadata) + 1); + strcpy (ldelf_emit_note_fdo_package_metadata, package_metadata); + } + } } /* Handle the generation of DT_NEEDED tags. */