From a62c92ab9b205c999427d64ac2de3171229d0207 Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Wed, 14 Jun 2023 19:40:25 +0100 Subject: [PATCH 1/2] gcc12: disable libsanitizer for mips64 Without the change build on mips64-unknown-linux-gnu fails as: $ nix-build -A buildPackages.gcc12 --argstr crossSystem mips64-linux In file included from ...-glibc-mips64-unknown-linux-gnu-2.37-8-dev/include/bits/stat.h:25, from ...-glibc-mips64-unknown-linux-gnu-2.37-8-dev/include/fcntl.h:78, from ../../../../gcc-12.3.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp:55: ...-glibc-mips64-unknown-linux-gnu-2.37-8-dev/include/bits/struct_stat.h:190:8: error: redefinition of 'struct stat64' 190 | struct stat64 | ^~~~~~ --- pkgs/development/compilers/gcc/common/configure-flags.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/development/compilers/gcc/common/configure-flags.nix b/pkgs/development/compilers/gcc/common/configure-flags.nix index a60a3380ea25..523c82577355 100644 --- a/pkgs/development/compilers/gcc/common/configure-flags.nix +++ b/pkgs/development/compilers/gcc/common/configure-flags.nix @@ -244,6 +244,11 @@ let ++ lib.optionals (langD) [ "--with-target-system-zlib=yes" ] + # On mips64-unknown-linux-gnu libsanitizer defines collide with + # glibc's definitions and fail the build. It was fixed in gcc-13+. + ++ lib.optionals (targetPlatform.isMips && lib.versions.major version == "12") [ + "--disable-libsanitizer" + ] ; in configureFlags From 6c8b8bc2f1a24fd23d290dc26814c121d35fd367 Mon Sep 17 00:00:00 2001 From: Adam Joseph Date: Wed, 23 Aug 2023 14:31:45 -0700 Subject: [PATCH 2/2] gcc: limit gcc12 isMips `--disable-libsanitizer` to abi=="gnu" --- pkgs/development/compilers/gcc/common/configure-flags.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/compilers/gcc/common/configure-flags.nix b/pkgs/development/compilers/gcc/common/configure-flags.nix index 523c82577355..7d59eee55f25 100644 --- a/pkgs/development/compilers/gcc/common/configure-flags.nix +++ b/pkgs/development/compilers/gcc/common/configure-flags.nix @@ -246,7 +246,7 @@ let ] # On mips64-unknown-linux-gnu libsanitizer defines collide with # glibc's definitions and fail the build. It was fixed in gcc-13+. - ++ lib.optionals (targetPlatform.isMips && lib.versions.major version == "12") [ + ++ lib.optionals (targetPlatform.isMips && targetPlatform.parsed.abi.name == "gnu" && lib.versions.major version == "12") [ "--disable-libsanitizer" ] ;