[PATCH core-updates 0/6] glibc & binutils update

  • Done
  • quality assurance status badge
Details
One participant
  • Marius Bakke
Owner
unassigned
Submitted by
Marius Bakke
Severity
normal
M
M
Marius Bakke wrote on 6 Feb 2020 18:59
(address . guix-patches@gnu.org)
20200206175955.12147-1-mbakke@fastmail.com
These patches update Binutils and Glibc to the latest versions, as well as
Linux-Libre headers (I will change from 5.4.16 to 5.4.18 or whatever is
current before pushing).

Glibc 2.31 required patching every GCC version due to a size change that
trips libsanitizer. It also requires patching older glibc versions due to
an unrelated change, but I'm not sure what the correct fix is. Try
building glibc-locales@2.29 with these patches to join the quest.

The GCC patches were pretty tricky, and unfortunately required small tweaks
between each version. I would prefer if someone else tried cherry-picking
the relevant upstream commits to an older GCC and see if they get the same
result I did. See the patch files for URLs.

Marius Bakke (6):
gnu: linux-libre-headers: Update to 5.4.16.
gnu: dnsmasq: Fix build with linux-libre-headers >= 5.2.
gnu: binutils: Update to 2.34.
gnu: cross-binutils: Fix xtensa build with Binutils 2.34.
gnu: glibc: Update to 2.31.
gnu: libfaketime: Fix build with glibc 2.31.

gnu/local.mk | 7 +
gnu/packages/base.scm | 55 +-
gnu/packages/check.scm | 4 +
gnu/packages/commencement.scm | 15 +-
gnu/packages/cross-base.scm | 15 +-
gnu/packages/dns.scm | 14 +-
gnu/packages/gcc.scm | 6 +
gnu/packages/linux.scm | 8 +-
.../binutils-revert-xtensa-shift.patch | 4091 +++++++++++++++++
.../gcc-4.9-libsanitizer-mode-size.patch | 52 +
.../gcc-6-libsanitizer-mode-size.patch | 53 +
.../gcc-7-libsanitizer-mode-size.patch | 53 +
.../gcc-8-libsanitizer-mode-size.patch | 56 +
.../gcc-9-libsanitizer-mode-size.patch | 58 +
.../glibc-2.29-supported-locales.patch | 33 +
.../patches/glibc-supported-locales.patch | 11 +-
16 files changed, 4503 insertions(+), 28 deletions(-)
create mode 100644 gnu/packages/patches/binutils-revert-xtensa-shift.patch
create mode 100644 gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch
create mode 100644 gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch
create mode 100644 gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch
create mode 100644 gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch
create mode 100644 gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch
create mode 100644 gnu/packages/patches/glibc-2.29-supported-locales.patch

--
2.25.0
M
M
Marius Bakke wrote on 6 Feb 2020 19:02
[PATCH 1/6] gnu: linux-libre-headers: Update to 5.4.16.
(address . 39456@debbugs.gnu.org)
20200206180245.12470-1-mbakke@fastmail.com
* gnu/packages/linux.scm (linux-libre-headers-4.19.56): Rename to ...
(linux-libre-headers-5.4.16): ... this. Update to 5.4.16.
(linux-libre-headers): Adjust accordingly.
* gnu/packages/commencement.scm (rsync-boot0): New variable.
(linux-libre-headers-boot0)[native-inputs]: Add RSYNC-BOOT0.
---
gnu/packages/commencement.scm | 15 ++++++++++++++-
gnu/packages/linux.scm | 8 ++++----
2 files changed, 18 insertions(+), 5 deletions(-)

Toggle diff (69 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index ced13eb075..c6abda3c29 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -46,6 +46,7 @@
#:use-module (gnu packages hurd)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages rsync)
#:use-module (gnu packages xml)
#:use-module (guix packages)
#:use-module (guix download)
@@ -1767,6 +1768,15 @@ exec " gcc "/bin/" program
#:guile ,%bootstrap-guile
#:tests? #f))))
+(define rsync-boot0
+ (package
+ (inherit rsync)
+ (native-inputs `(("perl" ,perl-boot0)))
+ (inputs (%boot0-inputs))
+ (arguments
+ `(#:implicit-inputs? #f
+ #:guile ,%bootstrap-guile))))
+
(define linux-libre-headers-boot0
(mlambda ()
"Return Linux-Libre header files for the bootstrap environment."
@@ -1786,6 +1796,9 @@ exec " gcc "/bin/" program
;; Flex and Bison are required since version 4.16.
("flex" ,flex-boot0)
("bison" ,bison-boot0)
+
+ ;; Rsync is required since version 5.3.
+ ("rsync" ,rsync-boot0)
,@(%boot0-inputs))))))
(define with-boot0
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index b3f46c0305..cfd20174e6 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -543,11 +543,11 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; The following package is used in the early bootstrap, and thus must be kept
;; stable and with minimal build requirements.
-(define-public linux-libre-headers-4.19.56
- (make-linux-libre-headers "4.19.56"
- "1zqiic55viy065lhnkmhn33sz3bbbr2ykbm5f92yzd8lpc9zl7yx"))
+(define-public linux-libre-headers-5.4.16
+ (make-linux-libre-headers "5.4.16"
+ "0czn2j83zvwn7karh77m8ai9z26jm4rmn4j2fk15qzl8gawzzwv7"))
-(define-public linux-libre-headers linux-libre-headers-4.19.56)
+(define-public linux-libre-headers linux-libre-headers-5.4.16)
;;;
--
2.25.0
M
M
Marius Bakke wrote on 6 Feb 2020 19:02
[PATCH 2/6] gnu: dnsmasq: Fix build with linux-libre-headers >= 5.2.
(address . 39456@debbugs.gnu.org)
20200206180245.12470-2-mbakke@fastmail.com
* gnu/packages/dns.scm (dnsmasq)[source](modules, snippet): New fields.
---
gnu/packages/dns.scm | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)

Toggle diff (34 lines)
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 7c52722cb6..a1f506905f 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
;;; Copyright © 2016 ng0 <ng0@n0.is>
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
@@ -83,7 +83,17 @@
version ".tar.xz"))
(sha256
(base32
- "1fv3g8vikj3sn37x1j6qsywn09w1jipvlv34j3q5qrljbrwa5ayd"))))
+ "1fv3g8vikj3sn37x1j6qsywn09w1jipvlv34j3q5qrljbrwa5ayd"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; The SIOCGSTAMP ioctl is defined in <linux/sockios.h> instead
+ ;; of <asm/sockios.h> starting with linux-libre-headers 5.2.
+ ;; Remove this for dnsmasq versions > 2.80.
+ (substitute* "src/dnsmasq.h"
+ (("#if defined\\(HAVE_LINUX_NETWORK\\)" all)
+ (string-append all "\n#include <linux/sockios.h>")))
+ #t))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
--
2.25.0
M
M
Marius Bakke wrote on 6 Feb 2020 19:02
[PATCH 4/6] gnu: cross-binutils: Fix xtensa build with Binutils 2.34.
(address . 39456@debbugs.gnu.org)
20200206180245.12470-4-mbakke@fastmail.com
* gnu/packages/patches/binutils-revert-xtensa-shift.patch: New file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/cross-base.scm (package-with-patch): Rename to ...
(package-with-patches): ... this. Allow multiple patches.
(cross-binutils): When building for xtensa, apply above patch.
---
gnu/local.mk | 1 +
gnu/packages/cross-base.scm | 15 +-
.../binutils-revert-xtensa-shift.patch | 4091 +++++++++++++++++
3 files changed, 4100 insertions(+), 7 deletions(-)
create mode 100644 gnu/packages/patches/binutils-revert-xtensa-shift.patch

Toggle diff (714 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 60b1ce9248..3c080bcd6e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -759,6 +759,7 @@ dist_patch_DATA = \
%D%/packages/patches/biber-fix-encoding-write.patch \
%D%/packages/patches/binutils-boot-2.20.1a.patch \
%D%/packages/patches/binutils-loongson-workaround.patch \
+ %D%/packages/patches/binutils-revert-xtensa-shift.patch \
%D%/packages/patches/blender-2.79-newer-ffmpeg.patch \
%D%/packages/patches/blender-2.79-python-3.7-fix.patch \
%D%/packages/patches/byobu-writable-status.patch \
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 13237fb8a8..1e03a42b2f 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -4,7 +4,7 @@
;;; Copyright © 2016, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2019 Carl Dong <contact@carldong.me>
;;;
;;; This file is part of GNU Guix.
@@ -70,11 +70,11 @@
`(cons ,(string-append "--target=" target)
,flags))))))
-(define (package-with-patch original patch)
- "Return package ORIGINAL with PATCH applied."
+(define (package-with-patches original patches)
+ "Return package ORIGINAL with PATCHES applied."
(package (inherit original)
(source (origin (inherit (package-source original))
- (patches (list patch))))))
+ (patches patches)))))
(define (cross-binutils target)
"Return a cross-Binutils for TARGET."
@@ -98,9 +98,10 @@
;; For Xtensa, apply Qualcomm's patch.
(cross (if (string-prefix? "xtensa-" target)
- (package-with-patch binutils
- (search-patch
- "ath9k-htc-firmware-binutils.patch"))
+ (package-with-patches binutils
+ (search-patches
+ "binutils-revert-xtensa-shift.patch"
+ "ath9k-htc-firmware-binutils.patch"))
binutils)
target)))
diff --git a/gnu/packages/patches/binutils-revert-xtensa-shift.patch b/gnu/packages/patches/binutils-revert-xtensa-shift.patch
new file mode 100644
index 0000000000..95e5784b9a
--- /dev/null
+++ b/gnu/packages/patches/binutils-revert-xtensa-shift.patch
@@ -0,0 +1,4091 @@
+This patch lazily reverts this upstream commit from Binutils 2.34:
+
+https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=567607c11fbf710513d0924192f3ed528c02d76f
+
+In order to avoid porting "ath9k-htc-firmware-binutils.patch" to the newer code.
+
+diff --git a/bfd/xtensa-modules.c b/bfd/xtensa-modules.c
+index 9af5653313..785dfe7aa0 100644
+--- a/bfd/xtensa-modules.c
++++ b/bfd/xtensa-modules.c
+@@ -302,1356 +302,1539 @@ static xtensa_state_internal states[] = {
+ static unsigned
+ Field_t_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 4) & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_t_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
+ }
+
+ static unsigned
+ Field_t_Slot_inst16a_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = ((insn[0] >> 4) & 0xf);
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_t_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
+ }
+
+ static unsigned
+ Field_t_Slot_inst16b_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 4) & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_t_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
+ }
+
+ static unsigned
+ Field_t_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = insn[0] & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_t_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf) | (tie_t << 0);
+ }
+
+ static unsigned
+ Field_t_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = insn[0] & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_t_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf) | (tie_t << 0);
+ }
+
+ static unsigned
+ Field_t_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = insn[0] & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_t_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf) | (tie_t << 0);
+ }
+
+ static unsigned
+ Field_t_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = insn[0] & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_t_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf) | (tie_t << 0);
+ }
+
+ static unsigned
+ Field_bbi4_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 12) & 1;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31);
+ return tie_t;
+ }
+
+ static void
+ Field_bbi4_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 1;
++ uint32 tie_t;
++ tie_t = (val << 31) >> 31;
+ insn[0] = (insn[0] & ~0x1000) | (tie_t << 12);
+ }
+
+ static unsigned
+ Field_bbi_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 12) & 1;
+- tie_t = (tie_t << 4) | ((insn[0] >> 4) & 0xf);
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31);
++ tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_bbi_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
+- tie_t = (val >> 4) & 1;
++ tie_t = (val << 27) >> 31;
+ insn[0] = (insn[0] & ~0x1000) | (tie_t << 12);
+ }
+
+ static unsigned
+ Field_bbi_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 26) & 1;
+- tie_t = (tie_t << 4) | (insn[0] & 0xf);
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31);
++ tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_bbi_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf) | (tie_t << 0);
+- tie_t = (val >> 4) & 1;
++ tie_t = (val << 27) >> 31;
+ insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26);
+ }
+
+ static unsigned
+ Field_imm12_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 12) & 0xfff;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 12) | ((insn[0] << 8) >> 20);
+ return tie_t;
+ }
+
+ static void
+ Field_imm12_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xfff;
++ uint32 tie_t;
++ tie_t = (val << 20) >> 20;
+ insn[0] = (insn[0] & ~0xfff000) | (tie_t << 12);
+ }
+
+ static unsigned
+ Field_imm8_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 16) & 0xff;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 8) | ((insn[0] << 8) >> 24);
+ return tie_t;
+ }
+
+ static void
+ Field_imm8_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xff;
++ uint32 tie_t;
++ tie_t = (val << 24) >> 24;
+ insn[0] = (insn[0] & ~0xff0000) | (tie_t << 16);
+ }
+
+ static unsigned
+ Field_imm8_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 12) & 0xff;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 8) | ((insn[0] << 12) >> 24);
+ return tie_t;
+ }
+
+ static void
+ Field_imm8_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xff;
++ uint32 tie_t;
++ tie_t = (val << 24) >> 24;
+ insn[0] = (insn[0] & ~0xff000) | (tie_t << 12);
+ }
+
+ static unsigned
+ Field_imm8_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 12) & 0xf;
+- tie_t = (tie_t << 4) | ((insn[0] >> 4) & 0xf);
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
++ tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_imm8_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
+- tie_t = (val >> 4) & 0xf;
++ tie_t = (val << 24) >> 28;
+ insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
+ }
+
+ static unsigned
+ Field_s_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 8) & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_s_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
+ }
+
+ static unsigned
+ Field_s_Slot_inst16a_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 8) & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_s_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
+ }
+
+ static unsigned
+ Field_s_Slot_inst16b_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 8) & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_s_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
+ }
+
+ static unsigned
+ Field_s_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 4) & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_s_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
+ }
+
+ static unsigned
+ Field_s_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 8) & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_s_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
+ }
+
+ static unsigned
+ Field_s_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 8) & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_s_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
+ }
+
+ static unsigned
+ Field_s_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 4) & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_s_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
+ }
+
+ static unsigned
+ Field_imm12b_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 8) & 0xf;
+- tie_t = (tie_t << 8) | ((insn[0] >> 16) & 0xff);
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
++ tie_t = (tie_t << 8) | ((insn[0] << 8) >> 24);
+ return tie_t;
+ }
+
+ static void
+ Field_imm12b_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xff;
++ uint32 tie_t;
++ tie_t = (val << 24) >> 24;
+ insn[0] = (insn[0] & ~0xff0000) | (tie_t << 16);
+- tie_t = (val >> 8) & 0xf;
++ tie_t = (val << 20) >> 28;
+ insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
+ }
+
+ static unsigned
+ Field_imm12b_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 4) & 0xf;
+- tie_t = (tie_t << 8) | ((insn[0] >> 12) & 0xff);
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
++ tie_t = (tie_t << 8) | ((insn[0] << 12) >> 24);
+ return tie_t;
+ }
+
+ static void
+ Field_imm12b_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xff;
++ uint32 tie_t;
++ tie_t = (val << 24) >> 24;
+ insn[0] = (insn[0] & ~0xff000) | (tie_t << 12);
+- tie_t = (val >> 8) & 0xf;
++ tie_t = (val << 20) >> 28;
+ insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
+ }
+
+ static unsigned
+ Field_imm12b_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 4) & 0xfff;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 12) | ((insn[0] << 16) >> 20);
+ return tie_t;
+ }
+
+ static void
+ Field_imm12b_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xfff;
++ uint32 tie_t;
++ tie_t = (val << 20) >> 20;
+ insn[0] = (insn[0] & ~0xfff0) | (tie_t << 4);
+ }
+
+ static unsigned
+ Field_imm16_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 8) & 0xffff;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 16) | ((insn[0] << 8) >> 16);
+ return tie_t;
+ }
+
+ static void
+ Field_imm16_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xffff;
++ uint32 tie_t;
++ tie_t = (val << 16) >> 16;
+ insn[0] = (insn[0] & ~0xffff00) | (tie_t << 8);
+ }
+
+ static unsigned
+ Field_imm16_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 4) & 0xffff;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 16) | ((insn[0] << 12) >> 16);
+ return tie_t;
+ }
+
+ static void
+ Field_imm16_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xffff;
++ uint32 tie_t;
++ tie_t = (val << 16) >> 16;
+ insn[0] = (insn[0] & ~0xffff0) | (tie_t << 4);
+ }
+
+ static unsigned
+ Field_m_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 6) & 3;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 2) | ((insn[0] << 24) >> 30);
+ return tie_t;
+ }
+
+ static void
+ Field_m_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 3;
++ uint32 tie_t;
++ tie_t = (val << 30) >> 30;
+ insn[0] = (insn[0] & ~0xc0) | (tie_t << 6);
+ }
+
+ static unsigned
+ Field_m_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 2) & 3;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 2) | ((insn[0] << 28) >> 30);
+ return tie_t;
+ }
+
+ static void
+ Field_m_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 3;
++ uint32 tie_t;
++ tie_t = (val << 30) >> 30;
+ insn[0] = (insn[0] & ~0xc) | (tie_t << 2);
+ }
+
+ static unsigned
+ Field_n_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 4) & 3;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30);
+ return tie_t;
+ }
+
+ static void
+ Field_n_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 3;
++ uint32 tie_t;
++ tie_t = (val << 30) >> 30;
+ insn[0] = (insn[0] & ~0x30) | (tie_t << 4);
+ }
+
+ static unsigned
+ Field_n_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = insn[0] & 3;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 2) | ((insn[0] << 30) >> 30);
+ return tie_t;
+ }
+
+ static void
+ Field_n_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 3;
++ uint32 tie_t;
++ tie_t = (val << 30) >> 30;
+ insn[0] = (insn[0] & ~0x3) | (tie_t << 0);
+ }
+
+ static unsigned
+ Field_offset_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = (insn[0] >> 6) & 0x3ffff;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 18) | ((insn[0] << 8) >> 14);
+ return tie_t;
+ }
+
+ static void
+ Field_offset_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0x3ffff;
++ uint32 tie_t;
++ tie_t = (val << 14) >> 14;
+ insn[0] = (insn[0] & ~0xffffc0) | (tie_t << 6);
+ }
+
+ static unsigned
+ Field_offset_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = insn[0] & 0x3ffff;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 18) | ((insn[0] << 14) >> 14);
+ return tie_t;
+ }
+
+ static void
+ Field_offset_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0x3ffff;
++ uint32 tie_t;
++ tie_t = (val << 14) >> 14;
+ insn[0] = (insn[0] & ~0x3ffff) | (tie_t << 0);
+ }
+
+ static unsigned
+ Field_op0_Slot_inst_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = insn[0] & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_op0_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf) | (tie_t << 0);
+ }
+
+ static unsigned
+ Field_op0_Slot_inst16a_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = insn[0] & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28);
+ return tie_t;
+ }
+
+ static void
+ Field_op0_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
+ {
+- uint32 tie_t = val & 0xf;
++ uint32 tie_t;
++ tie_t = (val << 28) >> 28;
+ insn[0] = (insn[0] & ~0xf) | (tie_t << 0);
+ }
+
+ static unsigned
+ Field_op0_Slot_inst16b_get (const xtensa_insnbuf insn)
+ {
+- unsigned tie_t = insn[0] & 0xf;
++ unsigned tie_t = 0;
++ tie_t = (tie_t << 4
This message was truncated. Download the full message here.
M
M
Marius Bakke wrote on 6 Feb 2020 19:02
[PATCH 3/6] gnu: binutils: Update to 2.34.
(address . 39456@debbugs.gnu.org)
20200206180245.12470-3-mbakke@fastmail.com
* gnu/packages/base.scm (binutils): Update to 2.34.
[arguments]: Add #:make-flags.
[properties]: New field.
(binutils+documentation): New public variable.
---
gnu/packages/base.scm | 30 ++++++++++++++++++++++++++----
1 file changed, 26 insertions(+), 4 deletions(-)

Toggle diff (70 lines)
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 45f6cf79ba..a37b10153e 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -10,7 +10,7 @@
;;; Copyright © 2016, 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -399,14 +399,14 @@ change. GNU make offers many powerful extensions over the standard utility.")
(define-public binutils
(package
(name "binutils")
- (version "2.33.1")
+ (version "2.34")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/binutils/binutils-"
version ".tar.bz2"))
(sha256
(base32
- "1cmd0riv37bqy9mwbg6n3523qgr8b3bbm5kwj19sjrasl4yq9d0c"))
+ "1rin1f5c7wm4n3piky6xilcrpf2s0n3dd5vqq8irrxkcic3i1w49"))
(patches (search-patches "binutils-loongson-workaround.patch"))))
(build-system gnu-build-system)
@@ -431,7 +431,17 @@ change. GNU make offers many powerful extensions over the standard utility.")
;; Make sure 'ar' and 'ranlib' produce archives in a
;; deterministic fashion.
- "--enable-deterministic-archives")))
+ "--enable-deterministic-archives")
+
+ ;; XXX: binutils 2.34 was mistakenly released without generated manuals:
+ ;; <https://sourceware.org/bugzilla/show_bug.cgi?id=25491>. To avoid a
+ ;; circular dependency on texinfo, prevent the build system from creating
+ ;; the manuals by calling "true" instead of "makeinfo"...
+ #:make-flags '("MAKEINFO=true")))
+
+ ;; ...and "hide" this package so that users who install binutils get the
+ ;; version with documentation defined below.
+ (properties '((hidden? . #t)))
(synopsis "Binary utilities: bfd gas gprof ld")
(description
@@ -444,6 +454,18 @@ included.")
(license gpl3+)
(home-page "https://www.gnu.org/software/binutils/")))
+;; Work around a problem with binutils 2.34 whereby manuals are missing from
+;; the release tarball. Remove this and the related code above when updating.
+(define-public binutils+documentation
+ (package/inherit
+ binutils
+ (native-inputs
+ `(("texinfo" ,texinfo)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments binutils)
+ ((#:make-flags _ ''()) ''())))
+ (properties '())))
+
(define-public binutils-gold
(package
(inherit binutils)
--
2.25.0
M
M
Marius Bakke wrote on 6 Feb 2020 19:02
[PATCH 6/6] gnu: libfaketime: Fix build with glibc 2.31.
(address . 39456@debbugs.gnu.org)
20200206180245.12470-6-mbakke@fastmail.com
* gnu/packages/check.scm (libfaketime)[arguments]: Disable
"deprecated-declarations" warnings before running the test suite.
---
gnu/packages/check.scm | 4 ++++
1 file changed, 4 insertions(+)

Toggle diff (17 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 749bcc7831..a5cf6ea3ff 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -2411,6 +2411,10 @@ portable to just about any platform.")
(lambda _
(substitute* "test/functests/test_exclude_mono.sh"
(("/bin/bash") (which "bash")))
+
+ ;; Do not fail due to use of 'ftime', which was deprecated in
+ ;; glibc 2.31. Remove this for later versions of libfaketime.
+ (setenv "FAKETIME_COMPILE_CFLAGS" "-Wno-deprecated-declarations")
#t)))
#:test-target "test"))
(native-inputs
--
2.25.0
M
M
Marius Bakke wrote on 6 Feb 2020 19:02
[PATCH 5/6] gnu: glibc: Update to 2.31.
(address . 39456@debbugs.gnu.org)
20200206180245.12470-5-mbakke@fastmail.com
* gnu/packages/patches/glibc-supported-locales.patch: Adjust for upstream
changes.
* gnu/packages/patches/glibc-2.29-supported-locales.patch: New file, with
previous contents.
* gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch,
gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch: New files.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/gcc.scm (gcc-4.9, gcc-5, gcc-6, gcc-7, gcc-8,
gcc-9)[source](patches): Add the respective patch files.
* gnu/packages/base.scm (glibc): Update to 2.31.
[source](patches): Remove obsolete.
(glibc-2.30): New public variable.
(glibc-2.29)[source](patches): Adjust for renamed patch file.
---
gnu/local.mk | 6 ++
gnu/packages/base.scm | 25 ++++++--
gnu/packages/gcc.scm | 6 ++
.../gcc-4.9-libsanitizer-mode-size.patch | 52 +++++++++++++++++
.../gcc-6-libsanitizer-mode-size.patch | 53 +++++++++++++++++
.../gcc-7-libsanitizer-mode-size.patch | 53 +++++++++++++++++
.../gcc-8-libsanitizer-mode-size.patch | 56 ++++++++++++++++++
.../gcc-9-libsanitizer-mode-size.patch | 58 +++++++++++++++++++
.../glibc-2.29-supported-locales.patch | 33 +++++++++++
.../patches/glibc-supported-locales.patch | 11 ++--
10 files changed, 343 insertions(+), 10 deletions(-)
create mode 100644 gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch
create mode 100644 gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch
create mode 100644 gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch
create mode 100644 gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch
create mode 100644 gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch
create mode 100644 gnu/packages/patches/glibc-2.29-supported-locales.patch

Toggle diff (398 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 3c080bcd6e..4784e338d9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -886,6 +886,11 @@ dist_patch_DATA = \
%D%/packages/patches/gcc-4.9-libsanitizer-fix.patch \
%D%/packages/patches/gcc-4.9-libsanitizer-ustat.patch \
%D%/packages/patches/gcc-libsanitizer-ustat.patch \
+ %D%/packages/patches/gcc-4.9-libsanitizer-mode-size.patch \
+ %D%/packages/patches/gcc-6-libsanitizer-mode-size.patch \
+ %D%/packages/patches/gcc-7-libsanitizer-mode-size.patch \
+ %D%/packages/patches/gcc-8-libsanitizer-mode-size.patch \
+ %D%/packages/patches/gcc-9-libsanitizer-mode-size.patch \
%D%/packages/patches/gcc-libvtv-runpath.patch \
%D%/packages/patches/gcc-strmov-store-file-names.patch \
%D%/packages/patches/gcc-4-compile-with-gcc-5.patch \
@@ -957,6 +962,7 @@ dist_patch_DATA = \
%D%/packages/patches/glibc-2.29-git-updates.patch \
%D%/packages/patches/glibc-2.27-supported-locales.patch \
%D%/packages/patches/glibc-2.28-supported-locales.patch \
+ %D%/packages/patches/glibc-2.29-supported-locales.patch \
%D%/packages/patches/glibc-supported-locales.patch \
%D%/packages/patches/glm-restore-install-target.patch \
%D%/packages/patches/gmp-arm-asm-nothumb.patch \
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index a37b10153e..2f93bfd638 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -574,13 +574,13 @@ the store.")
;; version 2.28, GNU/Hurd used a different glibc branch.
(package
(name "glibc")
- (version "2.30")
+ (version "2.31")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
(sha256
(base32
- "1bxqpg91d02qnaz837a5kamm0f43pr1il4r9pknygywsar713i72"))
+ "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj"))
(snippet
;; Disable 'ldconfig' and /etc/ld.so.cache. The latter is
;; required on LFS distros to avoid loading the distro's libc.so
@@ -592,7 +592,6 @@ the store.")
#t))
(modules '((guix build utils)))
(patches (search-patches "glibc-ldd-x86_64.patch"
- "glibc-CVE-2019-19126.patch"
"glibc-hidden-visibility-ldconfig.patch"
"glibc-versioned-locpath.patch"
"glibc-allow-kernel-2.6.32.patch"
@@ -824,6 +823,24 @@ with the Linux kernel.")
;; Below are old libc versions, which we use mostly to build locale data in
;; the old format (which the new libc cannot cope with.)
+(define-public glibc-2.30
+ (package
+ (inherit glibc)
+ (version "2.30")
+ (source (origin
+ (inherit (package-source glibc))
+ (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1bxqpg91d02qnaz837a5kamm0f43pr1il4r9pknygywsar713i72"))
+ (patches (search-patches "glibc-ldd-x86_64.patch"
+ "glibc-CVE-2019-19126.patch"
+ "glibc-hidden-visibility-ldconfig.patch"
+ "glibc-versioned-locpath.patch"
+ "glibc-allow-kernel-2.6.32.patch"
+ "glibc-reinstate-prlimit64-fallback.patch"
+ "glibc-2.29-supported-locales.patch"))))))
+
(define-public glibc-2.29
(package
(inherit glibc)
@@ -842,7 +859,7 @@ with the Linux kernel.")
"glibc-versioned-locpath.patch"
"glibc-allow-kernel-2.6.32.patch"
"glibc-reinstate-prlimit64-fallback.patch"
- "glibc-supported-locales.patch"))))))
+ "glibc-2.29-supported-locales.patch"))))))
(define-public glibc-2.28
(package
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 94f7e15382..2eaca38dfb 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -400,6 +400,7 @@ Go. It also includes runtime support libraries for these languages.")
"14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc"))
(patches (search-patches "gcc-4.9-libsanitizer-fix.patch"
"gcc-4.9-libsanitizer-ustat.patch"
+ "gcc-4.9-libsanitizer-mode-size.patch"
"gcc-arm-bug-71399.patch"
"gcc-asan-missing-include.patch"
"gcc-libvtv-runpath.patch"
@@ -439,6 +440,7 @@ Go. It also includes runtime support libraries for these languages.")
"gcc-5.0-libvtv-runpath.patch"
"gcc-5-source-date-epoch-1.patch"
"gcc-5-source-date-epoch-2.patch"
+ "gcc-6-libsanitizer-mode-size.patch"
"gcc-fix-texi2pod.patch"))
(modules '((guix build utils)))
(snippet
@@ -471,6 +473,7 @@ Go. It also includes runtime support libraries for these languages.")
(base32
"0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby"))
(patches (search-patches "gcc-strmov-store-file-names.patch"
+ "gcc-6-libsanitizer-mode-size.patch"
"gcc-6-source-date-epoch-1.patch"
"gcc-6-source-date-epoch-2.patch"
"gcc-5.0-libvtv-runpath.patch"))))
@@ -500,6 +503,7 @@ Go. It also includes runtime support libraries for these languages.")
(base32
"0qg6kqc5l72hpnj4vr6l0p69qav0rh4anlkk3y55540zy3klc6dq"))
(patches (search-patches "gcc-strmov-store-file-names.patch"
+ "gcc-7-libsanitizer-mode-size.patch"
"gcc-5.0-libvtv-runpath.patch"))))
(description
"GCC is the GNU Compiler Collection. It provides compiler front-ends
@@ -518,6 +522,7 @@ It also includes runtime support libraries for these languages.")))
(base32
"0b3xv411xhlnjmin2979nxcbnidgvzqdf4nbhix99x60dkzavfk4"))
(patches (search-patches "gcc-8-strmov-store-file-names.patch"
+ "gcc-8-libsanitizer-mode-size.patch"
"gcc-5.0-libvtv-runpath.patch"))))))
(define-public gcc-9
@@ -532,6 +537,7 @@ It also includes runtime support libraries for these languages.")))
(base32
"01mj3yk7z49i49168hg2cg7qs4bsccrrnv7pjmbdlf8j2a7z0vpa"))
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
+ "gcc-9-libsanitizer-mode-size.patch"
"gcc-9-asan-fix-limits-include.patch"
"gcc-5.0-libvtv-runpath.patch"))))))
diff --git a/gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch b/gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch
new file mode 100644
index 0000000000..7df22c21aa
--- /dev/null
+++ b/gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch
@@ -0,0 +1,52 @@
+Fix assertion failure in libsanitizer when using glibc 2.31 and later.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92154
+https://reviews.llvm.org/D69104
+
+Adapted from these upstream revision:
+
+https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=277981
+https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=279653
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+index 196eb3b3c64..b588e07e5ab 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+@@ -928,7 +928,11 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
++ on many architectures. */
+ CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
++#endif
+ CHECK_SIZE_AND_OFFSET(ipc_perm, __seq);
+
+ CHECK_TYPE_SIZE(shmid_ds);
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+index aec950454b3..6d94fc65c28 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -154,20 +154,13 @@ namespace __sanitizer {
+ u64 __unused1;
+ u64 __unused2;
+ #elif defined(__sparc__)
+-# if defined(__arch64__)
+ unsigned mode;
+- unsigned short __pad1;
+-# else
+- unsigned short __pad1;
+- unsigned short mode;
+ unsigned short __pad2;
+-# endif
+ unsigned short __seq;
+ unsigned long long __unused1;
+ unsigned long long __unused2;
+ #else
+- unsigned short mode;
+- unsigned short __pad1;
++ unsigned int mode;
+ unsigned short __seq;
+ unsigned short __pad2;
+ #if defined(__x86_64__) && !defined(_LP64)
diff --git a/gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch b/gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch
new file mode 100644
index 0000000000..005e3c4079
--- /dev/null
+++ b/gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch
@@ -0,0 +1,53 @@
+Fix assertion failure in libsanitizer when using glibc 2.31 and later.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92154
+https://reviews.llvm.org/D69104
+
+Adapted from these upstream revision:
+
+https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=277981
+https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=279653
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+index 069d8d557de..c49c28c6e07 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+@@ -1130,8 +1130,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
+ #ifndef __GLIBC_PREREQ
+ #define __GLIBC_PREREQ(x, y) 0
+ #endif
+-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
+-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
++ on many architectures. */
+ CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
+ #endif
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+index 304d04e3935..6dee89c97e1 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -207,20 +207,13 @@ namespace __sanitizer {
+ unsigned long __unused1;
+ unsigned long __unused2;
+ #elif defined(__sparc__)
+-# if defined(__arch64__)
+ unsigned mode;
+- unsigned short __pad1;
+-# else
+- unsigned short __pad1;
+- unsigned short mode;
+ unsigned short __pad2;
+-# endif
+ unsigned short __seq;
+ unsigned long long __unused1;
+ unsigned long long __unused2;
+ #else
+- unsigned short mode;
+- unsigned short __pad1;
++ unsigned int mode;
+ unsigned short __seq;
+ unsigned short __pad2;
+ #if defined(__x86_64__) && !defined(_LP64)
+
diff --git a/gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch b/gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch
new file mode 100644
index 0000000000..41b4a4cac6
--- /dev/null
+++ b/gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch
@@ -0,0 +1,53 @@
+Fix assertion failure in libsanitizer when using glibc 2.31 and later.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92154
+https://reviews.llvm.org/D69104
+
+Adapted from these upstream revision:
+
+https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=277981
+https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=279653
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+index 97eae3fc7bc..4089d4695e2 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+@@ -1145,8 +1145,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
+-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
+-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
++ on many architectures. */
+ CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
+ #endif
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+index c139322839a..7c3c2d866e5 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -211,20 +211,13 @@ namespace __sanitizer {
+ unsigned long __unused1;
+ unsigned long __unused2;
+ #elif defined(__sparc__)
+-# if defined(__arch64__)
+ unsigned mode;
+- unsigned short __pad1;
+-# else
+- unsigned short __pad1;
+- unsigned short mode;
+ unsigned short __pad2;
+-# endif
+ unsigned short __seq;
+ unsigned long long __unused1;
+ unsigned long long __unused2;
+ #else
+- unsigned short mode;
+- unsigned short __pad1;
++ unsigned int mode;
+ unsigned short __seq;
+ unsigned short __pad2;
+ #if defined(__x86_64__) && !defined(_LP64)
+
diff --git a/gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch b/gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch
new file mode 100644
index 0000000000..e343034991
--- /dev/null
+++ b/gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch
@@ -0,0 +1,56 @@
+Fix assertion failure in libsanitizer when using glibc 2.31 and later.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92154
+https://reviews.llvm.org/D69104
+
+Adapted from these upstream revision:
+
+https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=277981
+https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=279653
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+index a915d37cdfe..5c720b2e700 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+@@ -1147,8 +1147,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
+-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
+-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
++ on many architectures. */
+ CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
+ #endif
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+index 4d11d071776..eda75a7cd84 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -210,14 +210,8 @@ namespace __sanitizer {
+ u64 __unused1;
+ u64 __unused2;
+ #elif defined(__sparc__)
+-#if defined(__arch64__)
+ unsigned mode;
+- unsigned short __pad1;
+-#else
+- unsigned short __pad1;
+- unsigned short mode;
+ unsigned short __pad2;
+-#endif
+ unsigned short __seq;
+ unsigned long long __unused1;
+ unsigned long long __unused2;
+@@ -228,8 +222,7 @@ namespace __sanitizer {
+ unsigned long __unused1;
+ unsigned long __unused2;
+ #else
+- unsigned short mode;
+- unsigned short __pad1;
++ unsigned int mode;
+ unsigned short __seq;
+ unsigned short __pad2;
+ #if defined(__x86_64__) && !defined(_LP64)
+
diff --git a/gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch b/gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch
new file mode 100644
index 0000000000..9e99a3d198
--- /dev/null
+++ b/gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch
@@ -0,0 +1,58 @@
+Fix assertion failure in libsanitizer when using glibc 2.31 and later.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92154
+https://reviews.llvm.org/D69104
+
+This is a combination of these upstream revisions:
+
+https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=277981
+https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=279653
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+index 6cd4a5bac8b..d823a12190c 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+@@ -1156,8 +1156,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
+ CHECK_SIZE_AND_OFFSET(ipc_pe
This message was truncated. Download the full message here.
M
M
Marius Bakke wrote on 15 Feb 2020 22:18
Re: [bug#39456] [PATCH core-updates 0/6] glibc & binutils update
(address . 39456-done@debbugs.gnu.org)
87d0af7dn2.fsf@devup.no
Marius Bakke <mbakke@fastmail.com> writes:

Toggle quote (8 lines)
> Marius Bakke (6):
> gnu: linux-libre-headers: Update to 5.4.16.
> gnu: dnsmasq: Fix build with linux-libre-headers >= 5.2.
> gnu: binutils: Update to 2.34.
> gnu: cross-binutils: Fix xtensa build with Binutils 2.34.
> gnu: glibc: Update to 2.31.
> gnu: libfaketime: Fix build with glibc 2.31.

I dropped the huge cross-binutils patch in favor of a simpler one that
keeps using Binutils 2.33.1 for the ath9k xtensa-elf target.

Pushed in 87d3e94d82..fedce7b2b4.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl5IYDEACgkQoqBt8qM6
VPr2rAgAqTgLfRC5vptrAd80Fv9sOqmlwQSQlHPe6dAIhBWbsQxBs3FQIBTUSxqE
/f+ugCRc6nz4+KUwZZ3PPy3K4p7qnyLeOjy+4kDzrj5uL7quKtkFpCDJUL0fDn5M
hzYtYNIG9Dj15xCWtUavTeXq4TV4C00T2LTOsO3OnW0+Esy/xVNB7t+GJVNsK3qL
Oi91gGYL5Xj7agZ8wxZ3sWF/4GfN4EE59bh7FqktD5UA9JPRSfWbUunbfnsPe7es
+TK9M5Y0hE2BXmBBxKJe0V3o9tMI8745ce+ExrLQOoX9lfamtQKfVSzDd8uHd8x+
x3aXsV0fFVjgH/ZKJhy07G9Zq+4thA==
=tQEZ
-----END PGP SIGNATURE-----

Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 39456@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 39456
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch