janneke pushed a commit to branch core-packages-team in repository guix. commit 462780a840650b9734e1e0046de5bc0e8c84320c Author: Zheng Junjie <z572@z572.online> AuthorDate: Sat Feb 8 18:25:19 2025 +0800
gnu: binutils: Update to 2.44. * gnu/packages/patches/binutils-2.41-fix-cross.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/base.scm (binutils): Update to 2.44 and use it. * gnu/packages/patches/binutils-mingw-w64-timestamp.patch: Adjust it. Change-Id: Ia54b0e7a076b1fe162524bf76a1ab4031792bc32 --- gnu/local.mk | 1 + gnu/packages/base.scm | 8 +- gnu/packages/patches/binutils-2.41-fix-cross.patch | 63 +++++++++ .../patches/binutils-mingw-w64-timestamp.patch | 142 +++++++++------------ 4 files changed, 131 insertions(+), 83 deletions(-) diff --git a/gnu/local.mk b/gnu/local.mk index 9cd2ff5219..708c748de3 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1062,6 +1062,7 @@ dist_patch_DATA = \ %D%/packages/patches/binutils-loongson-workaround.patch \ %D%/packages/patches/binutils-mingw-w64-timestamp.patch \ %D%/packages/patches/binutils-mingw-w64-deterministic.patch \ + %D%/packages/patches/binutils-2.41-fix-cross.patch \ %D%/packages/patches/bloomberg-bde-cmake-module-path.patch \ %D%/packages/patches/bloomberg-bde-tools-fix-install-path.patch \ %D%/packages/patches/boolector-find-googletest.patch \ diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index a138e09fec..47a864f227 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -715,15 +715,17 @@ change. GNU make offers many powerful extensions over the standard utility.") (define-public binutils (package (name "binutils") - (version "2.41") + (version "2.44") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/binutils/binutils-" version ".tar.bz2")) (sha256 - (base32 "02xkm9xgcrqhln742636nm43yzrpjkhqj0z64h03gf7pab0bxi54")) - (patches (search-patches "binutils-loongson-workaround.patch")))) + (base32 "0fnwaasfglbphqzvz5n25js9gl695p7pjbmb1z81g8gsc6k90qzn")) + (patches (search-patches + "binutils-2.41-fix-cross.patch" + "binutils-loongson-workaround.patch")))) (build-system gnu-build-system) (arguments (list #:out-of-source? #t ;recommended in the README diff --git a/gnu/packages/patches/binutils-2.41-fix-cross.patch b/gnu/packages/patches/binutils-2.41-fix-cross.patch new file mode 100644 index 0000000000..40a19e091d --- /dev/null +++ b/gnu/packages/patches/binutils-2.41-fix-cross.patch @@ -0,0 +1,63 @@ +From b499f0c797779a6d7ff01445aebd2fcc47aac357 Mon Sep 17 00:00:00 2001 +From: Zheng Junjie <zhengjun...@iscas.ac.cn> +Date: Mon, 10 Feb 2025 17:04:55 +0800 +Subject: [PATCH] gprofng: Fix cross-compilation binary name. + +commit d25ba4596e85da6d8af78c88b5917e14763afbe1 create symbolic link +no care cross-compilation prefix. + +gprofng/ChangeLog +2025-02-10 Zheng Junjie <zhengjun...@iscas.ac.cn> + * src/Makefile.am: create symbolic link respect cross-compilation. + * src/Makefile.in: Rebuild. +--- + gprofng/src/Makefile.am | 12 +++++------- + gprofng/src/Makefile.in | 12 +++++------- + 2 files changed, 10 insertions(+), 14 deletions(-) + +diff --git a/gprofng/src/Makefile.am b/gprofng/src/Makefile.am +index a132a9ddb05..0465cdb06e3 100644 +--- a/gprofng/src/Makefile.am ++++ b/gprofng/src/Makefile.am +@@ -179,10 +179,8 @@ $(srcdir)/DbeSession.cc: QLParser.tab.hh + .PHONY: install-exec-local + install-exec-local: + $(mkinstalldirs) $(DESTDIR)$(bindir) +- rm -f $(DESTDIR)$(bindir)/gp-{archive,collect-app,display-html,display-src,display-text} +- ln -s gprofng-archive $(DESTDIR)$(bindir)/gp-archive +- ln -s gprofng-collect-app $(DESTDIR)$(bindir)/gp-collect-app +- ln -s gprofng-display-html $(DESTDIR)$(bindir)/gp-display-html +- ln -s gprofng-display-src $(DESTDIR)$(bindir)/gp-display-src +- ln -s gprofng-display-text $(DESTDIR)$(bindir)/gp-display-text +- ++ for i in gp-{archive,collect-app,display-html,display-src,display-text}; do \ ++ oldname=`echo $$i | sed '$(transform)'`; \ ++ rm -f $(DESTDIR)$(bindir)/$$oldname ; \ ++ ln -s `echo $$oldname | sed 's&gp-&gprofng-&'` $(DESTDIR)$(bindir)/$$oldname; \ ++ done +diff --git a/gprofng/src/Makefile.in b/gprofng/src/Makefile.in +index d0dec12e244..d6f1f9438b6 100644 +--- a/gprofng/src/Makefile.in ++++ b/gprofng/src/Makefile.in +@@ -1119,13 +1119,11 @@ $(srcdir)/DbeSession.cc: QLParser.tab.hh + .PHONY: install-exec-local + install-exec-local: + $(mkinstalldirs) $(DESTDIR)$(bindir) +- rm -f $(DESTDIR)$(bindir)/gp-{archive,collect-app,display-html,display-src,display-text} +- ln -s gprofng-archive $(DESTDIR)$(bindir)/gp-archive +- ln -s gprofng-collect-app $(DESTDIR)$(bindir)/gp-collect-app +- ln -s gprofng-display-html $(DESTDIR)$(bindir)/gp-display-html +- ln -s gprofng-display-src $(DESTDIR)$(bindir)/gp-display-src +- ln -s gprofng-display-text $(DESTDIR)$(bindir)/gp-display-text +- ++ for i in gp-{archive,collect-app,display-html,display-src,display-text}; do \ ++ oldname=`echo $$i | sed '$(transform)'`; \ ++ rm -f $(DESTDIR)$(bindir)/$$oldname ; \ ++ ln -s `echo $$oldname | sed 's&gp-&gprofng-&'` $(DESTDIR)$(bindir)/$$oldname; \ ++ done + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: +-- +2.47.1 + diff --git a/gnu/packages/patches/binutils-mingw-w64-timestamp.patch b/gnu/packages/patches/binutils-mingw-w64-timestamp.patch index fcfe4a36aa..059084e41d 100644 --- a/gnu/packages/patches/binutils-mingw-w64-timestamp.patch +++ b/gnu/packages/patches/binutils-mingw-w64-timestamp.patch @@ -11,9 +11,9 @@ Author: Stephen Kitt <sk...@debian.org> --- a/bfd/peXXigen.c +++ b/bfd/peXXigen.c -@@ -77,6 +77,9 @@ +@@ -74,6 +74,9 @@ + #include <wchar.h> #include <wctype.h> - #endif +#include <errno.h> +#include <limits.h> @@ -21,46 +21,37 @@ Author: Stephen Kitt <sk...@debian.org> /* NOTE: it's strange to be including an architecture specific header in what's supposed to be general (to PE/PEI) code. However, that's where the definitions are, and they don't vary per architecture -@@ -876,9 +879,36 @@ - - /* Use a real timestamp by default, unless the no-insert-timestamp - option was chosen. */ -- if ((pe_data (abfd)->timestamp) == -1) -- H_PUT_32 (abfd, time (0), filehdr_out->f_timdat); -- else -+ if ((pe_data (abfd)->timestamp) == -1) { -+ time_t now; -+ char *source_date_epoch; -+ unsigned long long epoch; -+ char *endptr; -+ -+ now = time (NULL); -+ source_date_epoch = getenv("SOURCE_DATE_EPOCH"); -+ if (source_date_epoch) { -+ errno = 0; -+ epoch = strtoull(source_date_epoch, &endptr, 10); -+ if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0)) -+ || (errno != 0 && epoch == 0)) { -+ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n", -+ strerror(errno)); -+ } else if (endptr == source_date_epoch) { -+ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", -+ endptr); -+ } else if (*endptr != '\0') { -+ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", -+ endptr); -+ } else if (epoch > ULONG_MAX) { -+ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu\n", -+ ULONG_MAX, epoch); -+ } else { -+ now = epoch; +@@ -842,6 +845,30 @@ + if ((pe_data (abfd)->timestamp) == -1) + { + time_t now = bfd_get_current_time (0); ++ char *source_date_epoch; ++ unsigned long long epoch; ++ char *endptr; ++ source_date_epoch = getenv("SOURCE_DATE_EPOCH"); ++ if (source_date_epoch) { ++ errno = 0; ++ epoch = strtoull(source_date_epoch, &endptr, 10); ++ if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0)) ++ || (errno != 0 && epoch == 0)) { ++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n", ++ strerror(errno)); ++ } else if (endptr == source_date_epoch) { ++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", ++ endptr); ++ } else if (*endptr != '\0') { ++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", ++ endptr); ++ } else if (epoch > ULONG_MAX) { ++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu\n", ++ ULONG_MAX, epoch); ++ } else { ++ now = epoch; ++ } + } -+ } -+ H_PUT_32 (abfd, now, filehdr_out->f_timdat); -+ } else - H_PUT_32 (abfd, pe_data (abfd)->timestamp, filehdr_out->f_timdat); - - PUT_FILEHDR_SYMPTR (abfd, filehdr_in->f_symptr, + H_PUT_32 (abfd, now, filehdr_out->f_timdat); + } + else --- a/ld/pe-dll.c +++ b/ld/pe-dll.c @@ -27,6 +27,8 @@ @@ -72,46 +63,37 @@ Author: Stephen Kitt <sk...@debian.org> #include <time.h> #include "ld.h" -@@ -1218,9 +1220,36 @@ - - memset (edata_d, 0, edata_sz); - -- if (pe_data (abfd)->timestamp == -1) -- H_PUT_32 (abfd, time (0), edata_d + 4); -- else -+ if (pe_data (abfd)->timestamp == -1) { -+ time_t now; -+ char *source_date_epoch; -+ unsigned long long epoch; -+ char *endptr; -+ -+ now = time(NULL); -+ source_date_epoch = getenv("SOURCE_DATE_EPOCH"); -+ if (source_date_epoch) { -+ errno = 0; -+ epoch = strtoull(source_date_epoch, &endptr, 10); -+ if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0)) -+ || (errno != 0 && epoch == 0)) { -+ einfo("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n", -+ strerror(errno)); -+ } else if (endptr == source_date_epoch) { -+ einfo("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", -+ endptr); -+ } else if (*endptr != '\0') { -+ einfo("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", -+ endptr); -+ } else if (epoch > ULONG_MAX) { -+ einfo("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu\n", -+ ULONG_MAX, epoch); -+ } else { -+ now = epoch; +@@ -1254,6 +1256,30 @@ + if (pe_data (abfd)->timestamp == -1) + { + time_t now = bfd_get_current_time (0); ++ char *source_date_epoch; ++ unsigned long long epoch; ++ char *endptr; ++ source_date_epoch = getenv("SOURCE_DATE_EPOCH"); ++ if (source_date_epoch) { ++ errno = 0; ++ epoch = strtoull(source_date_epoch, &endptr, 10); ++ if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0)) ++ || (errno != 0 && epoch == 0)) { ++ einfo("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n", ++ strerror(errno)); ++ } else if (endptr == source_date_epoch) { ++ einfo("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", ++ endptr); ++ } else if (*endptr != '\0') { ++ einfo("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", ++ endptr); ++ } else if (epoch > ULONG_MAX) { ++ einfo("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu\n", ++ ULONG_MAX, epoch); ++ } else { ++ now = epoch; ++ } + } -+ } -+ H_PUT_32 (abfd, now, edata_d + 4); -+ } else - H_PUT_32 (abfd, pe_data (abfd)->timestamp, edata_d + 4); - - if (pe_def_file->version_major != -1) + H_PUT_32 (abfd, now, edata_d + 4); + } + else --- a/ld/emultempl/pe.em +++ b/ld/emultempl/pe.em @@ -304,7 +304,7 @@