diff options
| author | Maximilian Bosch <maximilian@mbosch.me> | 2020-02-20 15:09:22 +0100 |
|---|---|---|
| committer | Maximilian Bosch <maximilian@mbosch.me> | 2020-06-11 01:15:04 +0200 |
| commit | 6a0595560ee69c28635fa78cc4a6352f4093dafb (patch) | |
| tree | fc6f80a72ee25dbecc92f40553fdb208672a6d1f | |
| parent | gcc7: fix build w/glibc-2.31 (diff) | |
| download | nixpkgs-origin/glibc231.tar.gz | |
gcc6: fix build w/glibc-2.31origin/glibc231
| -rw-r--r-- | pkgs/development/compilers/gcc/6/0001-Fix-build-for-glibc-2.31.patch | 62 | ||||
| -rw-r--r-- | pkgs/development/compilers/gcc/6/default.nix | 2 |
2 files changed, 63 insertions, 1 deletions
diff --git a/pkgs/development/compilers/gcc/6/0001-Fix-build-for-glibc-2.31.patch b/pkgs/development/compilers/gcc/6/0001-Fix-build-for-glibc-2.31.patch new file mode 100644 index 000000000000..0cd04e218caf --- /dev/null +++ b/pkgs/development/compilers/gcc/6/0001-Fix-build-for-glibc-2.31.patch @@ -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 + diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index f3b15eac55d2..f1bc490bd772 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -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 |
