From: Matthias Klose Date: Wed, 4 Dec 2024 13:17:25 +0000 (+0100) Subject: env-package-metadata X-Git-Tag: archive/raspbian/2.44-3+rpi1^2^2^2^2^2^2^2^2^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a601f16a660c6c3e4d149a2bff9771df5f086bf4;p=binutils.git env-package-metadata Gbp-Pq: Name env-package-metadata.diff --- diff --git a/Makefile.in b/Makefile.in index f12c251f9..8a0dd6a54 100644 --- a/Makefile.in +++ b/Makefile.in @@ -2823,6 +2823,8 @@ do-check: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Unset ELF_PACKAGE_METADATA for tests"; \ + export -n ELF_PACKAGE_METADATA; \ $(MAKE) $(RECURSE_FLAGS_TO_PASS) check-host check-target # Automated reporting of test results. diff --git a/Makefile.tpl b/Makefile.tpl index 6e22adecd..216326a75 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -1008,6 +1008,8 @@ do-check: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Unset ELF_PACKAGE_METADATA for tests"; \ + export -n ELF_PACKAGE_METADATA; \ $(MAKE) $(RECURSE_FLAGS_TO_PASS) check-host check-target # Automated reporting of test results. 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 54cdf45a9..f7f3a930e 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. */