summary refs log tree commit diff
path: root/pkgs/build-support/cc-wrapper
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2016-03-07 21:39:26 +0100
committerFranz Pletz <fpletz@fnordicwalking.de>2016-03-07 21:40:20 +0100
commitbaee91ec60ca724b00027033a8e0d7f97cf376a7 (patch)
tree8b8ead019823bf62dc2afc45fe77bef4b3f3f19f /pkgs/build-support/cc-wrapper
parentb2b499e6c40a36ff8cdbfd8d27096592d0f394cb (diff)
downloadnixlib-baee91ec60ca724b00027033a8e0d7f97cf376a7.tar
nixlib-baee91ec60ca724b00027033a8e0d7f97cf376a7.tar.gz
nixlib-baee91ec60ca724b00027033a8e0d7f97cf376a7.tar.bz2
nixlib-baee91ec60ca724b00027033a8e0d7f97cf376a7.tar.lz
nixlib-baee91ec60ca724b00027033a8e0d7f97cf376a7.tar.xz
nixlib-baee91ec60ca724b00027033a8e0d7f97cf376a7.tar.zst
nixlib-baee91ec60ca724b00027033a8e0d7f97cf376a7.zip
cc-wrapper: Check if ld supports -z, fixes darwin
Diffstat (limited to 'pkgs/build-support/cc-wrapper')
-rw-r--r--pkgs/build-support/cc-wrapper/add-hardening7
-rw-r--r--pkgs/build-support/cc-wrapper/cc-wrapper.sh1
-rw-r--r--pkgs/build-support/cc-wrapper/ld-wrapper.sh1
3 files changed, 8 insertions, 1 deletions
diff --git a/pkgs/build-support/cc-wrapper/add-hardening b/pkgs/build-support/cc-wrapper/add-hardening
index 966d68e1948e..ab8ce610e27a 100644
--- a/pkgs/build-support/cc-wrapper/add-hardening
+++ b/pkgs/build-support/cc-wrapper/add-hardening
@@ -2,11 +2,16 @@ hardeningFlags=(fortify stackprotector pic strictoverflow format relro bindnow)
 hardeningFlags+=("${hardeningEnable[@]}")
 hardeningCFlags=()
 hardeningLDFlags=()
+hardeningDisable=(${hardeningDisable[@]})
+
+if [[ "$($LD -z 2>&1)" =~ "unknown option" ]]; then
+  hardeningDisable+=(bindnow relro)
+fi
 
 if [[ ! $hardeningDisable == "all" ]]; then
   for flag in "${hardeningFlags[@]}"
   do
-    if [[ ! "$hardeningDisable" =~ "$flag" ]]; then
+    if [[ ! "${hardeningDisable[@]}" =~ "$flag" ]]; then
       case $flag in
         fortify)
           hardeningCFlags+=('-O2' '-D_FORTIFY_SOURCE=2')
diff --git a/pkgs/build-support/cc-wrapper/cc-wrapper.sh b/pkgs/build-support/cc-wrapper/cc-wrapper.sh
index a8a08e5e1443..e07eb8b41dca 100644
--- a/pkgs/build-support/cc-wrapper/cc-wrapper.sh
+++ b/pkgs/build-support/cc-wrapper/cc-wrapper.sh
@@ -89,6 +89,7 @@ if [[ "@prog@" = *++ ]]; then
     fi
 fi
 
+LD=@ldPath@/ld
 source @out@/nix-support/add-hardening.sh
 
 # Add the flags for the C compiler proper.
diff --git a/pkgs/build-support/cc-wrapper/ld-wrapper.sh b/pkgs/build-support/cc-wrapper/ld-wrapper.sh
index 12c0709570b0..09e87975437b 100644
--- a/pkgs/build-support/cc-wrapper/ld-wrapper.sh
+++ b/pkgs/build-support/cc-wrapper/ld-wrapper.sh
@@ -47,6 +47,7 @@ if [ "$NIX_ENFORCE_PURITY" = 1 -a -n "$NIX_STORE" \
     params=("${rest[@]}")
 fi
 
+LD=@prog@
 source @out@/nix-support/add-hardening.sh
 
 extra=(${hardeningLDFlags[@]})