diff options
author | Franz Pletz <fpletz@fnordicwalking.de> | 2016-03-07 21:39:26 +0100 |
---|---|---|
committer | Franz Pletz <fpletz@fnordicwalking.de> | 2016-03-07 21:40:20 +0100 |
commit | baee91ec60ca724b00027033a8e0d7f97cf376a7 (patch) | |
tree | 8b8ead019823bf62dc2afc45fe77bef4b3f3f19f /pkgs/build-support/cc-wrapper | |
parent | b2b499e6c40a36ff8cdbfd8d27096592d0f394cb (diff) | |
download | nixlib-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-hardening | 7 | ||||
-rw-r--r-- | pkgs/build-support/cc-wrapper/cc-wrapper.sh | 1 | ||||
-rw-r--r-- | pkgs/build-support/cc-wrapper/ld-wrapper.sh | 1 |
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[@]}) |