gcc6: fix build w/glibc-2.31

+63 -1
+62
pkgs/development/compilers/gcc/6/0001-Fix-build-for-glibc-2.31.patch
··· 1 + From 8b55f1047cf3491429c1af607e5dac08a81db6e1 Mon Sep 17 00:00:00 2001 2 + From: Maximilian Bosch <maximilian@mbosch.me> 3 + Date: Thu, 20 Feb 2020 15:08:36 +0100 4 + Subject: [PATCH] Fix build for glibc 2.31 5 + 6 + --- 7 + .../sanitizer_platform_limits_posix.cc | 5 +++-- 8 + .../sanitizer_platform_limits_posix.h | 15 +-------------- 9 + 2 files changed, 4 insertions(+), 16 deletions(-) 10 + 11 + diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 12 + index 069d8d557..c49c28c6e 100644 13 + --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 14 + +++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 15 + @@ -1130,8 +1130,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid); 16 + #ifndef __GLIBC_PREREQ 17 + #define __GLIBC_PREREQ(x, y) 0 18 + #endif 19 + -#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21) 20 + -/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */ 21 + +#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31) 22 + +/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit 23 + + on many architectures. */ 24 + CHECK_SIZE_AND_OFFSET(ipc_perm, mode); 25 + #endif 26 + 27 + diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h 28 + index 304d04e39..568081a79 100644 29 + --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h 30 + +++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h 31 + @@ -200,27 +200,14 @@ namespace __sanitizer { 32 + unsigned __seq; 33 + u64 __unused1; 34 + u64 __unused2; 35 + -#elif defined(__mips__) || defined(__aarch64__) 36 + - unsigned int mode; 37 + - unsigned short __seq; 38 + - unsigned short __pad1; 39 + - unsigned long __unused1; 40 + - unsigned long __unused2; 41 + #elif defined(__sparc__) 42 + -# if defined(__arch64__) 43 + unsigned mode; 44 + - unsigned short __pad1; 45 + -# else 46 + - unsigned short __pad1; 47 + - unsigned short mode; 48 + unsigned short __pad2; 49 + -# endif 50 + unsigned short __seq; 51 + unsigned long long __unused1; 52 + unsigned long long __unused2; 53 + #else 54 + - unsigned short mode; 55 + - unsigned short __pad1; 56 + + unsigned int mode; 57 + unsigned short __seq; 58 + unsigned short __pad2; 59 + #if defined(__x86_64__) && !defined(_LP64) 60 + -- 61 + 2.25.0 62 +
+1 -1
pkgs/development/compilers/gcc/6/default.nix
··· 65 65 inherit (stdenv) buildPlatform hostPlatform targetPlatform; 66 66 67 67 patches = 68 - [ ../use-source-date-epoch.patch ] 68 + [ ../use-source-date-epoch.patch ./0001-Fix-build-for-glibc-2.31.patch ] 69 69 ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch 70 70 ++ optional noSysDirs ../no-sys-dirs.patch 71 71 ++ optional langAda ../gnat-cflags.patch