mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
gnu: glibc: Update to 2.31.
* 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.
This commit is contained in:
parent
a493a52646
commit
a33eac038a
10 changed files with 343 additions and 10 deletions
|
@ -883,6 +883,11 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/gcc-4.9-libsanitizer-fix.patch \
|
%D%/packages/patches/gcc-4.9-libsanitizer-fix.patch \
|
||||||
%D%/packages/patches/gcc-4.9-libsanitizer-ustat.patch \
|
%D%/packages/patches/gcc-4.9-libsanitizer-ustat.patch \
|
||||||
%D%/packages/patches/gcc-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-libvtv-runpath.patch \
|
||||||
%D%/packages/patches/gcc-strmov-store-file-names.patch \
|
%D%/packages/patches/gcc-strmov-store-file-names.patch \
|
||||||
%D%/packages/patches/gcc-4-compile-with-gcc-5.patch \
|
%D%/packages/patches/gcc-4-compile-with-gcc-5.patch \
|
||||||
|
@ -954,6 +959,7 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/glibc-2.29-git-updates.patch \
|
%D%/packages/patches/glibc-2.29-git-updates.patch \
|
||||||
%D%/packages/patches/glibc-2.27-supported-locales.patch \
|
%D%/packages/patches/glibc-2.27-supported-locales.patch \
|
||||||
%D%/packages/patches/glibc-2.28-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/glibc-supported-locales.patch \
|
||||||
%D%/packages/patches/glm-restore-install-target.patch \
|
%D%/packages/patches/glm-restore-install-target.patch \
|
||||||
%D%/packages/patches/gmp-arm-asm-nothumb.patch \
|
%D%/packages/patches/gmp-arm-asm-nothumb.patch \
|
||||||
|
|
|
@ -593,13 +593,13 @@ (define-public glibc
|
||||||
;; version 2.28, GNU/Hurd used a different glibc branch.
|
;; version 2.28, GNU/Hurd used a different glibc branch.
|
||||||
(package
|
(package
|
||||||
(name "glibc")
|
(name "glibc")
|
||||||
(version "2.30")
|
(version "2.31")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
|
(uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1bxqpg91d02qnaz837a5kamm0f43pr1il4r9pknygywsar713i72"))
|
"05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj"))
|
||||||
(snippet
|
(snippet
|
||||||
;; Disable 'ldconfig' and /etc/ld.so.cache. The latter is
|
;; Disable 'ldconfig' and /etc/ld.so.cache. The latter is
|
||||||
;; required on LFS distros to avoid loading the distro's libc.so
|
;; required on LFS distros to avoid loading the distro's libc.so
|
||||||
|
@ -611,7 +611,6 @@ (define-public glibc
|
||||||
#t))
|
#t))
|
||||||
(modules '((guix build utils)))
|
(modules '((guix build utils)))
|
||||||
(patches (search-patches "glibc-ldd-x86_64.patch"
|
(patches (search-patches "glibc-ldd-x86_64.patch"
|
||||||
"glibc-CVE-2019-19126.patch"
|
|
||||||
"glibc-hidden-visibility-ldconfig.patch"
|
"glibc-hidden-visibility-ldconfig.patch"
|
||||||
"glibc-versioned-locpath.patch"
|
"glibc-versioned-locpath.patch"
|
||||||
"glibc-allow-kernel-2.6.32.patch"
|
"glibc-allow-kernel-2.6.32.patch"
|
||||||
|
@ -843,6 +842,24 @@ (define (linker-script? file)
|
||||||
;; Below are old libc versions, which we use mostly to build locale data in
|
;; Below are old libc versions, which we use mostly to build locale data in
|
||||||
;; the old format (which the new libc cannot cope with.)
|
;; 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
|
(define-public glibc-2.29
|
||||||
(package
|
(package
|
||||||
(inherit glibc)
|
(inherit glibc)
|
||||||
|
@ -861,7 +878,7 @@ (define-public glibc-2.29
|
||||||
"glibc-versioned-locpath.patch"
|
"glibc-versioned-locpath.patch"
|
||||||
"glibc-allow-kernel-2.6.32.patch"
|
"glibc-allow-kernel-2.6.32.patch"
|
||||||
"glibc-reinstate-prlimit64-fallback.patch"
|
"glibc-reinstate-prlimit64-fallback.patch"
|
||||||
"glibc-supported-locales.patch"))))))
|
"glibc-2.29-supported-locales.patch"))))))
|
||||||
|
|
||||||
(define-public glibc-2.28
|
(define-public glibc-2.28
|
||||||
(package
|
(package
|
||||||
|
|
|
@ -402,6 +402,7 @@ (define-public gcc-4.9
|
||||||
"14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc"))
|
"14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc"))
|
||||||
(patches (search-patches "gcc-4.9-libsanitizer-fix.patch"
|
(patches (search-patches "gcc-4.9-libsanitizer-fix.patch"
|
||||||
"gcc-4.9-libsanitizer-ustat.patch"
|
"gcc-4.9-libsanitizer-ustat.patch"
|
||||||
|
"gcc-4.9-libsanitizer-mode-size.patch"
|
||||||
"gcc-arm-bug-71399.patch"
|
"gcc-arm-bug-71399.patch"
|
||||||
"gcc-asan-missing-include.patch"
|
"gcc-asan-missing-include.patch"
|
||||||
"gcc-libvtv-runpath.patch"
|
"gcc-libvtv-runpath.patch"
|
||||||
|
@ -441,6 +442,7 @@ (define-public gcc-5
|
||||||
"gcc-5.0-libvtv-runpath.patch"
|
"gcc-5.0-libvtv-runpath.patch"
|
||||||
"gcc-5-source-date-epoch-1.patch"
|
"gcc-5-source-date-epoch-1.patch"
|
||||||
"gcc-5-source-date-epoch-2.patch"
|
"gcc-5-source-date-epoch-2.patch"
|
||||||
|
"gcc-6-libsanitizer-mode-size.patch"
|
||||||
"gcc-fix-texi2pod.patch"))
|
"gcc-fix-texi2pod.patch"))
|
||||||
(modules '((guix build utils)))
|
(modules '((guix build utils)))
|
||||||
(snippet
|
(snippet
|
||||||
|
@ -473,6 +475,7 @@ (define-public gcc-6
|
||||||
(base32
|
(base32
|
||||||
"0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby"))
|
"0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby"))
|
||||||
(patches (search-patches "gcc-strmov-store-file-names.patch"
|
(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-1.patch"
|
||||||
"gcc-6-source-date-epoch-2.patch"
|
"gcc-6-source-date-epoch-2.patch"
|
||||||
"gcc-5.0-libvtv-runpath.patch"))))
|
"gcc-5.0-libvtv-runpath.patch"))))
|
||||||
|
@ -492,6 +495,7 @@ (define-public gcc-7
|
||||||
(base32
|
(base32
|
||||||
"0qg6kqc5l72hpnj4vr6l0p69qav0rh4anlkk3y55540zy3klc6dq"))
|
"0qg6kqc5l72hpnj4vr6l0p69qav0rh4anlkk3y55540zy3klc6dq"))
|
||||||
(patches (search-patches "gcc-strmov-store-file-names.patch"
|
(patches (search-patches "gcc-strmov-store-file-names.patch"
|
||||||
|
"gcc-7-libsanitizer-mode-size.patch"
|
||||||
"gcc-5.0-libvtv-runpath.patch"))))
|
"gcc-5.0-libvtv-runpath.patch"))))
|
||||||
(description
|
(description
|
||||||
"GCC is the GNU Compiler Collection. It provides compiler front-ends
|
"GCC is the GNU Compiler Collection. It provides compiler front-ends
|
||||||
|
@ -510,6 +514,7 @@ (define-public gcc-8
|
||||||
(base32
|
(base32
|
||||||
"0b3xv411xhlnjmin2979nxcbnidgvzqdf4nbhix99x60dkzavfk4"))
|
"0b3xv411xhlnjmin2979nxcbnidgvzqdf4nbhix99x60dkzavfk4"))
|
||||||
(patches (search-patches "gcc-8-strmov-store-file-names.patch"
|
(patches (search-patches "gcc-8-strmov-store-file-names.patch"
|
||||||
|
"gcc-8-libsanitizer-mode-size.patch"
|
||||||
"gcc-5.0-libvtv-runpath.patch"))))))
|
"gcc-5.0-libvtv-runpath.patch"))))))
|
||||||
|
|
||||||
(define-public gcc-9
|
(define-public gcc-9
|
||||||
|
@ -524,6 +529,7 @@ (define-public gcc-9
|
||||||
(base32
|
(base32
|
||||||
"01mj3yk7z49i49168hg2cg7qs4bsccrrnv7pjmbdlf8j2a7z0vpa"))
|
"01mj3yk7z49i49168hg2cg7qs4bsccrrnv7pjmbdlf8j2a7z0vpa"))
|
||||||
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
|
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
|
||||||
|
"gcc-9-libsanitizer-mode-size.patch"
|
||||||
"gcc-9-asan-fix-limits-include.patch"
|
"gcc-9-asan-fix-limits-include.patch"
|
||||||
"gcc-5.0-libvtv-runpath.patch"))))))
|
"gcc-5.0-libvtv-runpath.patch"))))))
|
||||||
|
|
||||||
|
|
52
gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch
Normal file
52
gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch
Normal file
|
@ -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)
|
53
gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch
Normal file
53
gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch
Normal file
|
@ -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)
|
||||||
|
|
53
gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch
Normal file
53
gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch
Normal file
|
@ -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)
|
||||||
|
|
56
gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch
Normal file
56
gnu/packages/patches/gcc-8-libsanitizer-mode-size.patch
Normal file
|
@ -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)
|
||||||
|
|
58
gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch
Normal file
58
gnu/packages/patches/gcc-9-libsanitizer-mode-size.patch
Normal file
|
@ -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_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 73af92af1e8..6a673a7c995 100644
|
||||||
|
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||||
|
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||||
|
@@ -211,26 +211,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)
|
33
gnu/packages/patches/glibc-2.29-supported-locales.patch
Normal file
33
gnu/packages/patches/glibc-2.29-supported-locales.patch
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
This patch is taken from debian's glibc package (generate-supported.mk).
|
||||||
|
It install the localedata/SUPPORTED file of the glibc. This file lists
|
||||||
|
all the supported locales of the glibc.
|
||||||
|
|
||||||
|
diff --git a/localedata/Makefile b/localedata/Makefile
|
||||||
|
index 65079f9eb8..14818f84e0 100644
|
||||||
|
--- a/localedata/Makefile
|
||||||
|
+++ b/localedata/Makefile
|
||||||
|
@@ -169,7 +169,8 @@ endif
|
||||||
|
# Files to install.
|
||||||
|
install-others := $(addprefix $(inst_i18ndir)/, \
|
||||||
|
$(addsuffix .gz, $(charmaps)) \
|
||||||
|
- $(locales))
|
||||||
|
+ $(locales)) \
|
||||||
|
+ $(inst_i18ndir)/SUPPORTED
|
||||||
|
|
||||||
|
tests: $(objdir)/iconvdata/gconv-modules
|
||||||
|
|
||||||
|
@@ -380,6 +381,14 @@ endif
|
||||||
|
|
||||||
|
include SUPPORTED
|
||||||
|
|
||||||
|
+$(inst_i18ndir)/SUPPORTED: SUPPORTED $(+force)
|
||||||
|
+ for locale in $(SUPPORTED-LOCALES); do \
|
||||||
|
+ [ $$locale = true ] && continue; \
|
||||||
|
+ echo $$locale | sed 's,/, ,' >> LOCALES; \
|
||||||
|
+ done
|
||||||
|
+ $(make-target-directory)
|
||||||
|
+ $(INSTALL_DATA) LOCALES $@
|
||||||
|
+
|
||||||
|
INSTALL-SUPPORTED-LOCALE-ARCHIVE=$(addprefix install-archive-, $(SUPPORTED-LOCALES))
|
||||||
|
INSTALL-SUPPORTED-LOCALE-FILES=$(addprefix install-files-, $(SUPPORTED-LOCALES))
|
||||||
|
|
|
@ -3,20 +3,19 @@ It install the localedata/SUPPORTED file of the glibc. This file lists
|
||||||
all the supported locales of the glibc.
|
all the supported locales of the glibc.
|
||||||
|
|
||||||
diff --git a/localedata/Makefile b/localedata/Makefile
|
diff --git a/localedata/Makefile b/localedata/Makefile
|
||||||
index 65079f9eb8..14818f84e0 100644
|
|
||||||
--- a/localedata/Makefile
|
--- a/localedata/Makefile
|
||||||
+++ b/localedata/Makefile
|
+++ b/localedata/Makefile
|
||||||
@@ -169,7 +169,8 @@ endif
|
@@ -176,7 +176,8 @@
|
||||||
# Files to install.
|
else
|
||||||
install-others := $(addprefix $(inst_i18ndir)/, \
|
install-others := $(addprefix $(inst_i18ndir)/, \
|
||||||
$(addsuffix .gz, $(charmaps)) \
|
$(addsuffix .gz, $(charmaps)) \
|
||||||
- $(locales))
|
- $(locales))
|
||||||
+ $(locales)) \
|
+ $(locales)) \
|
||||||
+ $(inst_i18ndir)/SUPPORTED
|
+ $(inst_i18ndir)/SUPPORTED
|
||||||
|
endif
|
||||||
|
|
||||||
tests: $(objdir)/iconvdata/gconv-modules
|
tests: $(objdir)/iconvdata/gconv-modules
|
||||||
|
@@ -401,6 +402,14 @@
|
||||||
@@ -380,6 +381,14 @@ endif
|
|
||||||
|
|
||||||
include SUPPORTED
|
include SUPPORTED
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue