about summary refs log tree commit diff
path: root/pkgs/test/cc-wrapper
diff options
context:
space:
mode:
authorJohn Ericson <git@JohnEricson.me>2020-12-14 14:40:13 -0500
committerGitHub <noreply@github.com>2020-12-14 14:40:13 -0500
commit7a06f5dd59a0c05568621be3afb0f57df2f696f1 (patch)
treeee0c8fdacfa9bac50c1d21b2ce2ddcca1db69c16 /pkgs/test/cc-wrapper
parentce7773fcf77d36bcc27c58ba63650b4d0edd0351 (diff)
parentccfd26ef14ea213320f0b49db3fb347785b38f06 (diff)
Merge pull request #106908 from Mic92/fix-static-pie
bintools-wrapper: skip dynamic linker for static binaries
Diffstat (limited to 'pkgs/test/cc-wrapper')
-rw-r--r--pkgs/test/cc-wrapper/default.nix20
1 files changed, 16 insertions, 4 deletions
diff --git a/pkgs/test/cc-wrapper/default.nix b/pkgs/test/cc-wrapper/default.nix
index c0c89d63ffff0..141a5320ef531 100644
--- a/pkgs/test/cc-wrapper/default.nix
+++ b/pkgs/test/cc-wrapper/default.nix
@@ -1,11 +1,13 @@
-{ stdenv }:
+{ stdenv, glibc }:
 with stdenv.lib;
 let
   # Sanitizers are not supported on Darwin.
   # Sanitizer headers aren't available in older libc++ stdenvs due to a bug
-  sanitizersWorking =
-       (stdenv.cc.isClang && versionAtLeast (getVersion stdenv.cc.name) "5.0.0")
-    || (stdenv.cc.isGNU && stdenv.isLinux);
+  sanitizersWorking = !stdenv.hostPlatform.isMusl && (
+    (stdenv.cc.isClang && versionAtLeast (getVersion stdenv.cc.name) "5.0.0")
+    || (stdenv.cc.isGNU && stdenv.isLinux)
+  );
+  staticLibc = optionalString (stdenv.hostPlatform.libc == "glibc") "-L ${glibc.static}/lib";
 in stdenv.mkDerivation {
   name = "cc-wrapper-test";
 
@@ -28,6 +30,16 @@ in stdenv.mkDerivation {
       ./core-foundation-check
     ''}
 
+    printf "checking whether compiler builds valid static C binaries... " >&2
+    $CC ${staticLibc} -static -o cc-static ${./cc-main.c}
+    ./cc-static
+    # our glibc does not have pie enabled yet.
+    ${optionalString (stdenv.hostPlatform.isMusl && stdenv.cc.isGNU) ''
+      printf "checking whether compiler builds valid static pie C binaries... " >&2
+      $CC ${staticLibc} -static-pie -o cc-static-pie ${./cc-main.c}
+      ./cc-static-pie
+    ''}
+
     printf "checking whether compiler uses NIX_CFLAGS_COMPILE... " >&2
     mkdir -p foo/include
     cp ${./foo.c} foo/include/foo.h