Merge #79391: glibc: 2.30 -> 2.31
This commit is contained in:
commit
e640908b92
@ -13,8 +13,8 @@ let
|
||||
else throw "ImageMagick is not supported on this platform.";
|
||||
|
||||
cfg = {
|
||||
version = "7.0.10-17";
|
||||
sha256 = "15cj9qkikx13j6gfqaawi4nh09lnzg3asf5mdcswx6z6yhbf90zx";
|
||||
version = "7.0.10-19";
|
||||
sha256 = "12ilfdbxllkaa3bs9z86d2nkklqz5c0l57kqj91l2ixjlvra64w0";
|
||||
patches = [];
|
||||
};
|
||||
in
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ stdenv, fetchurl, fontconfig, libjpeg, libcap, freetype, fribidi, pkgconfig
|
||||
, gettext, systemd, perl, lib
|
||||
, gettext, systemd, perl, lib, fetchpatch
|
||||
, enableSystemd ? true
|
||||
, enableBidi ? true
|
||||
}: stdenv.mkDerivation rec {
|
||||
@ -12,6 +12,11 @@
|
||||
sha256 = "1p51b14aqzncx3xpfg0rjplc48pg7520035i5p6r5zzkqhszihr5";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Derived from http://git.tvdr.de/?p=vdr.git;a=commit;h=930c2cd2eb8947413e88404fa94c66e4e1db5ad6
|
||||
./glibc2.31-compat.patch
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
postPatch = "substituteInPlace Makefile --replace libsystemd-daemon libsystemd";
|
||||
|
15
pkgs/applications/video/vdr/glibc2.31-compat.patch
Normal file
15
pkgs/applications/video/vdr/glibc2.31-compat.patch
Normal file
@ -0,0 +1,15 @@
|
||||
diff --git a/eit.c b/eit.c
|
||||
index 50d8229..373dbca 100644
|
||||
--- a/eit.c
|
||||
+++ b/eit.c
|
||||
@@ -391,7 +391,9 @@ cTDT::cTDT(const u_char *Data)
|
||||
if (abs(diff) > MAX_TIME_DIFF) {
|
||||
mutex.Lock();
|
||||
if (abs(diff) > MAX_ADJ_DIFF) {
|
||||
- if (stime(&dvbtim) == 0)
|
||||
+ timespec ts = { 0 };
|
||||
+ ts.tv_sec = dvbtim;
|
||||
+ if (clock_settime(CLOCK_REALTIME, &ts) == 0)
|
||||
isyslog("system time changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(dvbtim), dvbtim);
|
||||
else
|
||||
esyslog("ERROR while setting system time: %m");
|
@ -63,6 +63,7 @@ let majorVersion = "4";
|
||||
|
||||
patches =
|
||||
[ ../use-source-date-epoch.patch ../parallel-bconfig.patch ./parallel-strsignal.patch
|
||||
./libsanitizer.patch
|
||||
(fetchpatch {
|
||||
name = "avoid-ustat-glibc-2.28.patch";
|
||||
url = "https://gitweb.gentoo.org/proj/gcc-patches.git/plain/4.9.4/gentoo/100_all_avoid-ustat-glibc-2.28.patch?id=55fcb515620a8f7d3bb77eba938aa0fcf0d67c96";
|
||||
|
24
pkgs/development/compilers/gcc/4.9/libsanitizer.patch
Normal file
24
pkgs/development/compilers/gcc/4.9/libsanitizer.patch
Normal file
@ -0,0 +1,24 @@
|
||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
index aec950454..5bda9b3a3 100644
|
||||
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
@@ -156,18 +156,13 @@ namespace __sanitizer {
|
||||
#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)
|
@ -0,0 +1,62 @@
|
||||
From 8b55f1047cf3491429c1af607e5dac08a81db6e1 Mon Sep 17 00:00:00 2001
|
||||
From: Maximilian Bosch <maximilian@mbosch.me>
|
||||
Date: Thu, 20 Feb 2020 15:08:36 +0100
|
||||
Subject: [PATCH] Fix build for glibc 2.31
|
||||
|
||||
---
|
||||
.../sanitizer_platform_limits_posix.cc | 5 +++--
|
||||
.../sanitizer_platform_limits_posix.h | 15 +--------------
|
||||
2 files changed, 4 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
|
||||
index 069d8d557..c49c28c6e 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 304d04e39..568081a79 100644
|
||||
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
@@ -200,27 +200,14 @@ namespace __sanitizer {
|
||||
unsigned __seq;
|
||||
u64 __unused1;
|
||||
u64 __unused2;
|
||||
-#elif defined(__mips__) || defined(__aarch64__)
|
||||
- unsigned int mode;
|
||||
- unsigned short __seq;
|
||||
- unsigned short __pad1;
|
||||
- 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)
|
||||
--
|
||||
2.25.0
|
||||
|
@ -65,7 +65,7 @@ let majorVersion = "6";
|
||||
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
|
||||
|
||||
patches =
|
||||
[ ../use-source-date-epoch.patch ]
|
||||
[ ../use-source-date-epoch.patch ./0001-Fix-build-for-glibc-2.31.patch ]
|
||||
++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
|
||||
++ optional noSysDirs ../no-sys-dirs.patch
|
||||
++ optional langAda ../gnat-cflags.patch
|
||||
|
@ -0,0 +1,62 @@
|
||||
From 2d03b6eaf823fc2db6a32b4a95e18f8a7474b47f Mon Sep 17 00:00:00 2001
|
||||
From: Maximilian Bosch <maximilian@mbosch.me>
|
||||
Date: Thu, 20 Feb 2020 01:56:42 +0100
|
||||
Subject: [PATCH] Fix build for glibc 2.31
|
||||
|
||||
---
|
||||
.../sanitizer_platform_limits_posix.cc | 5 +++--
|
||||
.../sanitizer_platform_limits_posix.h | 15 +--------------
|
||||
2 files changed, 4 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
|
||||
index 97eae3fc7..4089d4695 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 c13932283..3456fb2db 100644
|
||||
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
@@ -204,27 +204,14 @@ namespace __sanitizer {
|
||||
unsigned __seq;
|
||||
u64 __unused1;
|
||||
u64 __unused2;
|
||||
-#elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__)
|
||||
- unsigned int mode;
|
||||
- unsigned short __seq;
|
||||
- unsigned short __pad1;
|
||||
- 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)
|
||||
--
|
||||
2.25.0
|
||||
|
@ -53,6 +53,8 @@ let majorVersion = "7";
|
||||
./riscv-pthread-reentrant.patch
|
||||
# https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00297.html
|
||||
./riscv-no-relax.patch
|
||||
|
||||
./0001-Fix-build-for-glibc-2.31.patch
|
||||
]
|
||||
++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
|
||||
++ optionals targetPlatform.isNetBSD [
|
||||
|
@ -47,6 +47,7 @@ stdenv.mkDerivation {
|
||||
|
||||
patches = [
|
||||
./compiler-rt-codesign.patch # Revert compiler-rt commit that makes codesign mandatory
|
||||
../7/compiler-rt-glibc.patch
|
||||
] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch
|
||||
++ stdenv.lib.optional (stdenv.hostPlatform.libc == "glibc") ./compiler-rt-sys-ustat.patch
|
||||
++ stdenv.lib.optional stdenv.hostPlatform.isAarch32 ./compiler-rt-armv7l.patch;
|
||||
|
@ -47,6 +47,7 @@ stdenv.mkDerivation {
|
||||
|
||||
patches = [
|
||||
./compiler-rt-codesign.patch # Revert compiler-rt commit that makes codesign mandatory
|
||||
../7/compiler-rt-glibc.patch
|
||||
] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch
|
||||
++ stdenv.lib.optional stdenv.hostPlatform.isAarch32 ./compiler-rt-armv7l.patch;
|
||||
|
||||
|
48
pkgs/development/compilers/llvm/7/compiler-rt-glibc.patch
Normal file
48
pkgs/development/compilers/llvm/7/compiler-rt-glibc.patch
Normal file
@ -0,0 +1,48 @@
|
||||
diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
|
||||
index 54da635..c5dc1cd 100644
|
||||
--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
|
||||
+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
|
||||
@@ -1158,8 +1158,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/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/lib/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
index f89a113..f6f986f 100644
|
||||
--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
@@ -213,26 +213,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;
|
||||
-#elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__)
|
||||
- unsigned int mode;
|
||||
- unsigned short __seq;
|
||||
- unsigned short __pad1;
|
||||
- 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)
|
@ -46,6 +46,9 @@ stdenv.mkDerivation {
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
patches = [
|
||||
# https://github.com/llvm/llvm-project/commit/947f9692440836dcb8d88b74b69dd379d85974ce
|
||||
./compiler-rt-glibc.patch
|
||||
|
||||
./compiler-rt-codesign.patch # Revert compiler-rt commit that makes codesign mandatory
|
||||
] ++ stdenv.lib.optional (useLLVM) ./crtbegin-and-end.patch
|
||||
++ stdenv.lib.optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch
|
||||
|
@ -46,6 +46,7 @@ stdenv.mkDerivation {
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
patches = [
|
||||
../7/compiler-rt-glibc.patch
|
||||
./compiler-rt-codesign.patch # Revert compiler-rt commit that makes codesign mandatory
|
||||
]# ++ stdenv.lib.optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch
|
||||
++ stdenv.lib.optional (useLLVM) ./crtbegin-and-end.patch
|
||||
|
@ -46,6 +46,7 @@ stdenv.mkDerivation rec {
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
patches = [
|
||||
../7/compiler-rt-glibc.patch
|
||||
./compiler-rt-codesign.patch # Revert compiler-rt commit that makes codesign mandatory
|
||||
]# ++ stdenv.lib.optional stdenv.hostPlatform.isMusl ./sanitizers-nongnu.patch
|
||||
++ stdenv.lib.optional stdenv.hostPlatform.isAarch32 ./compiler-rt-armv7l.patch;
|
||||
|
@ -182,6 +182,9 @@ stdenv.mkDerivation {
|
||||
'';
|
||||
|
||||
patchPhase = ''
|
||||
# Glibc 2.31 fix
|
||||
patch -p1 -i ${./patches/swift-llvm.patch}
|
||||
|
||||
# Just patch all the things for now, we can focus this later
|
||||
patchShebangs $SWIFT_SOURCE_ROOT
|
||||
|
||||
|
48
pkgs/development/compilers/swift/patches/swift-llvm.patch
Normal file
48
pkgs/development/compilers/swift/patches/swift-llvm.patch
Normal file
@ -0,0 +1,48 @@
|
||||
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
|
||||
index bc6675bf4..2f3514b64 100644
|
||||
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
|
||||
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
|
||||
@@ -1129,8 +1129,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/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
index de69852d3..652d5cb3b 100644
|
||||
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
@@ -204,26 +204,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;
|
||||
-#elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__)
|
||||
- unsigned int mode;
|
||||
- unsigned short __seq;
|
||||
- unsigned short __pad1;
|
||||
- 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)
|
@ -1,18 +0,0 @@
|
||||
Adapted from https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=patch;h=4d5cfeb510125345cb41431afc9022492994cffa, omitting changes to NEWS
|
||||
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h b/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
|
||||
index 1943691..ac694c0 100644
|
||||
--- a/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
|
||||
+++ b/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
|
||||
@@ -31,7 +31,8 @@
|
||||
environment variable, LD_PREFER_MAP_32BIT_EXEC. */
|
||||
#define EXTRA_LD_ENVVARS \
|
||||
case 21: \
|
||||
- if (memcmp (envline, "PREFER_MAP_32BIT_EXEC", 21) == 0) \
|
||||
+ if (!__libc_enable_secure \
|
||||
+ && memcmp (envline, "PREFER_MAP_32BIT_EXEC", 21) == 0) \
|
||||
GLRO(dl_x86_cpu_features).feature[index_arch_Prefer_MAP_32BIT_EXEC] \
|
||||
|= bit_arch_Prefer_MAP_32BIT_EXEC; \
|
||||
break;
|
||||
--
|
||||
2.9.3
|
||||
|
79
pkgs/development/libraries/glibc/2.31-cve-2020-10029.patch
Normal file
79
pkgs/development/libraries/glibc/2.31-cve-2020-10029.patch
Normal file
@ -0,0 +1,79 @@
|
||||
diff --git a/sysdeps/ieee754/ldbl-96/Makefile b/sysdeps/ieee754/ldbl-96/Makefile
|
||||
index 995e90d6da..318628aed6 100644
|
||||
--- a/sysdeps/ieee754/ldbl-96/Makefile
|
||||
+++ b/sysdeps/ieee754/ldbl-96/Makefile
|
||||
@@ -17,5 +17,6 @@
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
|
||||
ifeq ($(subdir),math)
|
||||
-tests += test-canonical-ldbl-96 test-totalorderl-ldbl-96
|
||||
+tests += test-canonical-ldbl-96 test-totalorderl-ldbl-96 test-sinl-pseudo
|
||||
+CFLAGS-test-sinl-pseudo.c += -fstack-protector-all
|
||||
endif
|
||||
diff --git a/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c b/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c
|
||||
index 5f742321ae..bcdf20179f 100644
|
||||
--- a/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c
|
||||
+++ b/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c
|
||||
@@ -210,6 +210,18 @@ __ieee754_rem_pio2l (long double x, long double *y)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ if ((i0 & 0x80000000) == 0)
|
||||
+ {
|
||||
+ /* Pseudo-zero and unnormal representations are not valid
|
||||
+ representations of long double. We need to avoid stack
|
||||
+ corruption in __kernel_rem_pio2, which expects input in a
|
||||
+ particular normal form, but those representations do not need
|
||||
+ to be consistently handled like any particular floating-point
|
||||
+ value. */
|
||||
+ y[1] = y[0] = __builtin_nanl ("");
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
/* Split the 64 bits of the mantissa into three 24-bit integers
|
||||
stored in a double array. */
|
||||
exp = j0 - 23;
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/ieee754/ldbl-96/test-sinl-pseudo.c
|
||||
@@ -0,0 +1,41 @@
|
||||
+/* Test sinl for pseudo-zeros and unnormals for ldbl-96 (bug 25487).
|
||||
+ Copyright (C) 2020 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <https://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#include <math.h>
|
||||
+#include <math_ldbl.h>
|
||||
+#include <stdint.h>
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ for (int i = 0; i < 64; i++)
|
||||
+ {
|
||||
+ uint64_t sig = i == 63 ? 0 : 1ULL << i;
|
||||
+ long double ld;
|
||||
+ SET_LDOUBLE_WORDS (ld, 0x4141,
|
||||
+ sig >> 32, sig & 0xffffffffULL);
|
||||
+ /* The requirement is that no stack overflow occurs when the
|
||||
+ pseudo-zero or unnormal goes through range reduction. */
|
||||
+ volatile long double ldr;
|
||||
+ ldr = sinl (ld);
|
||||
+ (void) ldr;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#include <support/test-driver.c>
|
@ -36,9 +36,9 @@
|
||||
} @ args:
|
||||
|
||||
let
|
||||
version = "2.30";
|
||||
version = "2.31";
|
||||
patchSuffix = "";
|
||||
sha256 = "1bxqpg91d02qnaz837a5kamm0f43pr1il4r9pknygywsar713i72";
|
||||
sha256 = "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj";
|
||||
in
|
||||
|
||||
assert withLinuxHeaders -> linuxHeaders != null;
|
||||
@ -108,8 +108,8 @@ stdenv.mkDerivation ({
|
||||
})
|
||||
|
||||
./fix-x64-abi.patch
|
||||
./2.27-CVE-2019-19126.patch
|
||||
./2.30-cve-2020-1752.patch
|
||||
./2.31-cve-2020-10029.patch
|
||||
]
|
||||
++ lib.optional stdenv.hostPlatform.isMusl ./fix-rpc-types-musl-conflicts.patch
|
||||
++ lib.optional stdenv.buildPlatform.isDarwin ./darwin-cross-build.patch;
|
||||
|
@ -14,6 +14,13 @@ buildPythonPackage rec {
|
||||
sha256 = "64082ebedf6d36ff409ab2878f1aad5c9035f916c5f15a9a1ec7dffc6dfbbed8";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# SOMAXCONN limit of glibc-2.31 has been increased from 128 to 4096:
|
||||
# * https://sourceware.org/git/?p=glibc.git;a=commit;h=96958e2700f5b4f4d1183a0606b2b9848a53ea44
|
||||
# * https://github.com/Supervisor/supervisor/issues/1346
|
||||
./glibc-2.31.patch
|
||||
];
|
||||
|
||||
# wants to write to /tmp/foo which is likely already owned by another
|
||||
# nixbld user on hydra
|
||||
doCheck = !stdenv.isDarwin;
|
||||
|
13
pkgs/development/python-modules/supervisor/glibc-2.31.patch
Normal file
13
pkgs/development/python-modules/supervisor/glibc-2.31.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/supervisor/tests/base.py b/supervisor/tests/base.py
|
||||
index 643e609..8aa45e7 100644
|
||||
--- a/supervisor/tests/base.py
|
||||
+++ b/supervisor/tests/base.py
|
||||
@@ -358,7 +358,7 @@ class DummySocketConfig:
|
||||
return not self.__eq__(other)
|
||||
|
||||
def get_backlog(self):
|
||||
- return 128
|
||||
+ return 4096
|
||||
|
||||
def create_and_bind(self):
|
||||
return DummySocket(self.fd)
|
@ -11,7 +11,11 @@ stdenv.mkDerivation rec {
|
||||
preConfigure = ''configureFlags="--with-cupsbackenddir=$out/lib/cups/backend"'';
|
||||
|
||||
buildInputs = [cups];
|
||||
NIX_CFLAGS_COMPILE = [ "-include stdio.h" "-Wno-error=stringop-truncation" ];
|
||||
NIX_CFLAGS_COMPILE = [
|
||||
"-include stdio.h"
|
||||
"-Wno-error=stringop-truncation"
|
||||
"-Wno-error=deprecated-declarations"
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "CUPS back-end for Canon printers";
|
||||
|
@ -0,0 +1,71 @@
|
||||
From c29b637b55c93214993f40b1a223233d40b8a7d6 Mon Sep 17 00:00:00 2001
|
||||
From: Maximilian Bosch <maximilian@mbosch.me>
|
||||
Date: Wed, 19 Feb 2020 22:32:28 +0100
|
||||
Subject: [PATCH] Fix build with glibc 2.31
|
||||
|
||||
This is derived from the corresponding upstream patch[1], however this
|
||||
one doesn't apply cleanly on busybox-1.31.1, so I rebased the patch
|
||||
locally and added it directly to nixpkgs.
|
||||
|
||||
[1] https://git.busybox.net/busybox/patch/?id=d3539be8f27b8cbfdfee460fe08299158f08bcd9
|
||||
---
|
||||
coreutils/date.c | 2 +-
|
||||
libbb/missing_syscalls.c | 8 --------
|
||||
util-linux/rdate.c | 8 ++++++--
|
||||
3 files changed, 7 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/coreutils/date.c b/coreutils/date.c
|
||||
index 3414d38..931b7f9 100644
|
||||
--- a/coreutils/date.c
|
||||
+++ b/coreutils/date.c
|
||||
@@ -303,7 +303,7 @@ int date_main(int argc UNUSED_PARAM, char **argv)
|
||||
ts.tv_sec = validate_tm_time(date_str, &tm_time);
|
||||
|
||||
/* if setting time, set it */
|
||||
- if ((opt & OPT_SET) && stime(&ts.tv_sec) < 0) {
|
||||
+ if ((opt & OPT_SET) && clock_settime(CLOCK_REALTIME, &ts) < 0) {
|
||||
bb_perror_msg("can't set date");
|
||||
}
|
||||
}
|
||||
diff --git a/libbb/missing_syscalls.c b/libbb/missing_syscalls.c
|
||||
index 87cf59b..dc40d91 100644
|
||||
--- a/libbb/missing_syscalls.c
|
||||
+++ b/libbb/missing_syscalls.c
|
||||
@@ -15,14 +15,6 @@ pid_t getsid(pid_t pid)
|
||||
return syscall(__NR_getsid, pid);
|
||||
}
|
||||
|
||||
-int stime(const time_t *t)
|
||||
-{
|
||||
- struct timeval tv;
|
||||
- tv.tv_sec = *t;
|
||||
- tv.tv_usec = 0;
|
||||
- return settimeofday(&tv, NULL);
|
||||
-}
|
||||
-
|
||||
int sethostname(const char *name, size_t len)
|
||||
{
|
||||
return syscall(__NR_sethostname, name, len);
|
||||
diff --git a/util-linux/rdate.c b/util-linux/rdate.c
|
||||
index 70f829e..878375d 100644
|
||||
--- a/util-linux/rdate.c
|
||||
+++ b/util-linux/rdate.c
|
||||
@@ -95,9 +95,13 @@ int rdate_main(int argc UNUSED_PARAM, char **argv)
|
||||
if (!(flags & 2)) { /* no -p (-s may be present) */
|
||||
if (time(NULL) == remote_time)
|
||||
bb_error_msg("current time matches remote time");
|
||||
- else
|
||||
- if (stime(&remote_time) < 0)
|
||||
+ else {
|
||||
+ struct timespec ts;
|
||||
+ ts.tv_sec = remote_time;
|
||||
+ ts.tv_nsec = 0;
|
||||
+ if (clock_settime(CLOCK_REALTIME, &ts) < 0)
|
||||
bb_perror_msg_and_die("can't set time of day");
|
||||
+ }
|
||||
}
|
||||
|
||||
if (flags != 1) /* not lone -s */
|
||||
--
|
||||
2.25.0
|
||||
|
@ -49,6 +49,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
patches = [
|
||||
./busybox-in-store.patch
|
||||
./0001-Fix-build-with-glibc-2.31.patch
|
||||
] ++ stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) ./clang-cross.patch;
|
||||
|
||||
postPatch = "patchShebangs .";
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchgit }:
|
||||
{ stdenv, fetchgit, fetchpatch }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "datefudge";
|
||||
@ -10,15 +10,20 @@ stdenv.mkDerivation {
|
||||
sha256 = "0r9g8v9xnv60hq3j20wqy34kyig3sc2pisjxl4irn7jjx85f1spv";
|
||||
};
|
||||
|
||||
patchPhase = ''
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
url = "https://src.fedoraproject.org/rpms/datefudge/raw/master/f/datefudge_1.23-tz.patch";
|
||||
sha256 = "19c2fvhm06wnp3059b0rnd7dqdchkan8iycjh8jk8y25j870zkvn";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace Makefile \
|
||||
--replace "/usr" "/" \
|
||||
--replace "-o root -g root" ""
|
||||
substituteInPlace datefudge.sh \
|
||||
--replace "@LIBDIR@" "$out/lib/"
|
||||
'';
|
||||
|
||||
preInstallPhase = "mkdir -P $out/lib/datefudge";
|
||||
'';
|
||||
|
||||
installFlags = [ "DESTDIR=$(out)" ];
|
||||
|
||||
|
@ -703,23 +703,6 @@ mapAliases ({
|
||||
# added 2020-02-09
|
||||
dina-font-pcf = dina-font;
|
||||
|
||||
/* Cleanup before 20.09 */
|
||||
llvm_4 = throw ''
|
||||
The LLVM versions 3.5, 3.9 and 4.0 have been removed in NixOS 20.03
|
||||
due to a lack of compatibility with glibc 2.30!
|
||||
'';
|
||||
llvm_39 = llvm_4;
|
||||
llvm_35 = llvm_4;
|
||||
lld_4 = llvm_4;
|
||||
|
||||
llvmPackages_4 = llvm_4;
|
||||
llvmPackages_39 = llvm_4;
|
||||
llvmPackages_35 = llvm_4;
|
||||
|
||||
clang_39 = llvm_4;
|
||||
clang_35 = llvm_4;
|
||||
clang_4 = llvm_4;
|
||||
|
||||
# added 2019-04-13
|
||||
# *-polly pointed to llvmPackages_latest
|
||||
llvm-polly = throw "clang is now built with polly-plugin by default";
|
||||
|
Loading…
Reference in New Issue
Block a user