From 6cec03027a07162b1fe1d5bfd61c98e98eb5c316 Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Wed, 14 Jun 2023 19:40:25 +0100 Subject: [PATCH] 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/12/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/development/compilers/gcc/12/default.nix b/pkgs/development/compilers/gcc/12/default.nix index f0886f862c974fe..4eec58696c0c903 100644 --- a/pkgs/development/compilers/gcc/12/default.nix +++ b/pkgs/development/compilers/gcc/12/default.nix @@ -288,7 +288,10 @@ lib.pipe (stdenv.mkDerivation ({ configurePlatforms = [ "build" "host" "target" ]; - configureFlags = callFile ../common/configure-flags.nix { }; + configureFlags = callFile ../common/configure-flags.nix { } + # 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 [ "--disable-libsanitizer" ]; targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;