diff options
author | Benjamin Saunders <ben.e.saunders@gmail.com> | 2018-05-24 14:43:31 -0700 |
---|---|---|
committer | Benjamin Saunders <ben.e.saunders@gmail.com> | 2018-05-24 15:04:30 -0700 |
commit | b0d0b1adfe917f2fadd49fc4931fbfb61f762c60 (patch) | |
tree | 808a50ffec84cd4505abd0cdca7b9608bdfdc1ab /pkgs | |
parent | 11d26c797fb4010f5cae07848902e7fad8a9d3a9 (diff) | |
download | nixpkgs-b0d0b1adfe917f2fadd49fc4931fbfb61f762c60.tar nixpkgs-b0d0b1adfe917f2fadd49fc4931fbfb61f762c60.tar.gz nixpkgs-b0d0b1adfe917f2fadd49fc4931fbfb61f762c60.tar.bz2 nixpkgs-b0d0b1adfe917f2fadd49fc4931fbfb61f762c60.tar.lz nixpkgs-b0d0b1adfe917f2fadd49fc4931fbfb61f762c60.tar.xz nixpkgs-b0d0b1adfe917f2fadd49fc4931fbfb61f762c60.tar.zst nixpkgs-b0d0b1adfe917f2fadd49fc4931fbfb61f762c60.zip |
clang_6: fix sanitizers under libstdc++
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/build-support/cc-wrapper/default.nix | 4 | ||||
-rw-r--r-- | pkgs/development/compilers/llvm/6/default.nix | 13 | ||||
-rw-r--r-- | pkgs/test/cc-wrapper/default.nix | 2 |
3 files changed, 11 insertions, 8 deletions
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index a0955088eb7..7a18993d607 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -9,7 +9,7 @@ , stdenvNoCC, nativeTools, propagateDoc ? !nativeTools, noLibc ? false, nativeLibc, nativePrefix ? "" , cc ? null, libc ? null, bintools, coreutils ? null, shell ? stdenvNoCC.shell , extraPackages ? [], extraBuildCommands ? "" -, isGNU ? false, isClang ? cc.isClang or false, isCompilerRT ? false, gnugrep ? null +, isGNU ? false, isClang ? cc.isClang or false, gnugrep ? null , buildPackages ? {} }: @@ -90,7 +90,7 @@ stdenv.mkDerivation { # Binutils, and Apple's "cctools"; "bintools" as an attempt to find an # unused middle-ground name that evokes both. inherit bintools; - inherit libc nativeTools nativeLibc nativePrefix isGNU isClang isCompilerRT default_cxx_stdlib_compile; + inherit libc nativeTools nativeLibc nativePrefix isGNU isClang default_cxx_stdlib_compile; emacsBufferSetup = pkgs: '' ; We should handle propagation here too diff --git a/pkgs/development/compilers/llvm/6/default.nix b/pkgs/development/compilers/llvm/6/default.nix index da5a97a9bba..17c743c0408 100644 --- a/pkgs/development/compilers/llvm/6/default.nix +++ b/pkgs/development/compilers/llvm/6/default.nix @@ -38,10 +38,16 @@ let clang = if stdenv.cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; - libstdcxxClang = wrapCCWith { + libstdcxxClang = wrapCCWith rec { cc = tools.clang-unwrapped; - extraPackages = [ libstdcxxHook ]; - extraBuildCommands = stdenv.lib.optionalString stdenv.targetPlatform.isLinux '' + extraPackages = [ libstdcxxHook targetLlvmLibraries.compiler-rt ]; + extraBuildCommands = '' + rsrc="$out/resource-root" + mkdir "$rsrc" + ln -s "${cc}/lib/clang/${release_version}/include" "$rsrc" + ln -s "${targetLlvmLibraries.compiler-rt.out}/lib" "$rsrc/lib" + echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags + '' + stdenv.lib.optionalString stdenv.targetPlatform.isLinux '' echo "--gcc-toolchain=${tools.clang-unwrapped.gcc}" >> $out/nix-support/cc-cflags ''; }; @@ -53,7 +59,6 @@ let targetLlvmLibraries.libcxxabi targetLlvmLibraries.compiler-rt ]; - isCompilerRT = true; extraBuildCommands = '' rsrc="$out/resource-root" mkdir "$rsrc" diff --git a/pkgs/test/cc-wrapper/default.nix b/pkgs/test/cc-wrapper/default.nix index 06113e40561..87d070f5616 100644 --- a/pkgs/test/cc-wrapper/default.nix +++ b/pkgs/test/cc-wrapper/default.nix @@ -38,11 +38,9 @@ stdenv.mkDerivation { NIX_LDFLAGS="-L$NIX_BUILD_TOP/foo/lib -rpath $NIX_BUILD_TOP/foo/lib" $CC -lfoo -o ldflags-check ${./ldflags-main.c} ./ldflags-check - '' + stdenv.lib.optionalString (stdenv.cc.isCompilerRT or false) '' $CC -o sanitizers -fsanitize=address,undefined ${./sanitizers.c} ./sanitizers - '' + '' touch $out ''; |