summary refs log tree commit diff
path: root/pkgs/stdenv/adapters.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-10-10 14:01:38 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-10-10 14:55:17 +0200
commitffbdcbfe29ea1076e87a321f47df39cd1ddc4d6b (patch)
treea58007f97519e01d383d0c80a53ca8e2d8f761e4 /pkgs/stdenv/adapters.nix
parent3e0a3487287743dfe8020533bf7690e124a1748a (diff)
downloadnixlib-ffbdcbfe29ea1076e87a321f47df39cd1ddc4d6b.tar
nixlib-ffbdcbfe29ea1076e87a321f47df39cd1ddc4d6b.tar.gz
nixlib-ffbdcbfe29ea1076e87a321f47df39cd1ddc4d6b.tar.bz2
nixlib-ffbdcbfe29ea1076e87a321f47df39cd1ddc4d6b.tar.lz
nixlib-ffbdcbfe29ea1076e87a321f47df39cd1ddc4d6b.tar.xz
nixlib-ffbdcbfe29ea1076e87a321f47df39cd1ddc4d6b.tar.zst
nixlib-ffbdcbfe29ea1076e87a321f47df39cd1ddc4d6b.zip
gcc-wrapper: Wrap ld.gold
This ensures that gcc's ‘-fuse-ld=gold’ flag works.
Diffstat (limited to 'pkgs/stdenv/adapters.nix')
-rw-r--r--pkgs/stdenv/adapters.nix20
1 files changed, 7 insertions, 13 deletions
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix
index a90a00e6d4f3..9e82359865bf 100644
--- a/pkgs/stdenv/adapters.nix
+++ b/pkgs/stdenv/adapters.nix
@@ -285,19 +285,13 @@ rec {
     };
 
 
-  /* Modify a stdenv so that it uses the Gold linker. FIXME: should
-     use -fuse-ld=gold instead, but then the ld-wrapper won't be
-     invoked. */
-  useGoldLinker = stdenv:
-    let
-      binutils = stdenv.gcc.binutils;
-      binutils' = pkgs.runCommand "${binutils.name}-gold" { }
-        ''
-          mkdir -p $out/bin
-          ln -s ${binutils}/bin/* $out/bin/
-          ln -sfn ${binutils}/bin/ld.gold $out/bin/ld
-        ''; # */
-    in overrideGCC stdenv (stdenv.gcc.override { binutils = binutils'; });
+  /* Modify a stdenv so that it uses the Gold linker. */
+  useGoldLinker = stdenv: stdenv //
+    { mkDerivation = args: stdenv.mkDerivation (args // {
+        dontStrip = true;
+        NIX_CFLAGS_LINK = toString (args.NIX_CFLAGS_COMPILE or "") + " -fuse-ld=gold";
+      });
+    };
 
   dropCxx = drv: drv.override {
     stdenv = if pkgs.stdenv.isDarwin