summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorBenjamin Saunders <ben.e.saunders@gmail.com>2018-05-24 14:43:31 -0700
committerBenjamin Saunders <ben.e.saunders@gmail.com>2018-05-24 15:04:30 -0700
commitb0d0b1adfe917f2fadd49fc4931fbfb61f762c60 (patch)
tree808a50ffec84cd4505abd0cdca7b9608bdfdc1ab /pkgs
parent11d26c797fb4010f5cae07848902e7fad8a9d3a9 (diff)
downloadnixpkgs-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.nix4
-rw-r--r--pkgs/development/compilers/llvm/6/default.nix13
-rw-r--r--pkgs/test/cc-wrapper/default.nix2
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
   '';