summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorCharles Strahan <charles@cstrahan.com>2018-03-06 18:03:13 -0500
committerCharles Strahan <charles@cstrahan.com>2018-03-06 18:03:13 -0500
commit634c748050391b6f7c908d4716be026f839dceaf (patch)
tree31743ea7ae464a0312dfc7179babb7f28ca64a17 /pkgs/build-support
parentfc46895e86a33232abbcf8dcee9033d5c58d2f2d (diff)
downloadnixlib-634c748050391b6f7c908d4716be026f839dceaf.tar
nixlib-634c748050391b6f7c908d4716be026f839dceaf.tar.gz
nixlib-634c748050391b6f7c908d4716be026f839dceaf.tar.bz2
nixlib-634c748050391b6f7c908d4716be026f839dceaf.tar.lz
nixlib-634c748050391b6f7c908d4716be026f839dceaf.tar.xz
nixlib-634c748050391b6f7c908d4716be026f839dceaf.tar.zst
nixlib-634c748050391b6f7c908d4716be026f839dceaf.zip
hardening: initial cross support
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/bintools-wrapper/add-flags.sh4
-rw-r--r--pkgs/build-support/cc-wrapper/add-flags.sh5
-rw-r--r--pkgs/build-support/cc-wrapper/add-hardening.sh2
-rw-r--r--pkgs/build-support/cc-wrapper/cc-wrapper.sh3
4 files changed, 8 insertions, 6 deletions
diff --git a/pkgs/build-support/bintools-wrapper/add-flags.sh b/pkgs/build-support/bintools-wrapper/add-flags.sh
index ce213897ee3f..a97809258954 100644
--- a/pkgs/build-support/bintools-wrapper/add-flags.sh
+++ b/pkgs/build-support/bintools-wrapper/add-flags.sh
@@ -24,10 +24,10 @@ if [ "${NIX_BINTOOLS_WRAPPER_@infixSalt@_TARGET_TARGET:-}" ]; then
 fi
 
 for var in "${var_templates_list[@]}"; do
-    mangleVarList "$var" "${role_infixes[@]}"
+    mangleVarList "$var" ${role_infixes[@]+"${role_infixes[@]}"}
 done
 for var in "${var_templates_bool[@]}"; do
-    mangleVarBool "$var" "${role_infixes[@]}"
+    mangleVarBool "$var" ${role_infixes[@]+"${role_infixes[@]}"}
 done
 
 if [ -e @out@/nix-support/libc-ldflags ]; then
diff --git a/pkgs/build-support/cc-wrapper/add-flags.sh b/pkgs/build-support/cc-wrapper/add-flags.sh
index d8b42244607a..7dedacf52479 100644
--- a/pkgs/build-support/cc-wrapper/add-flags.sh
+++ b/pkgs/build-support/cc-wrapper/add-flags.sh
@@ -10,6 +10,7 @@ var_templates_list=(
     NIX+CXXSTDLIB_COMPILE
     NIX+CXXSTDLIB_LINK
     NIX+GNATFLAGS_COMPILE
+    NIX+HARDENING_ENABLE
 )
 var_templates_bool=(
     NIX+ENFORCE_NO_NATIVE
@@ -31,10 +32,10 @@ fi
 # We need to mangle names for hygiene, but also take parameters/overrides
 # from the environment.
 for var in "${var_templates_list[@]}"; do
-    mangleVarList "$var" "${role_infixes[@]}"
+    mangleVarList "$var" ${role_infixes[@]+"${role_infixes[@]}"}
 done
 for var in "${var_templates_bool[@]}"; do
-    mangleVarBool "$var" "${role_infixes[@]}"
+    mangleVarBool "$var" ${role_infixes[@]+"${role_infixes[@]}"}
 done
 
 # `-B@out@/bin' forces cc to use ld-wrapper.sh when calling ld.
diff --git a/pkgs/build-support/cc-wrapper/add-hardening.sh b/pkgs/build-support/cc-wrapper/add-hardening.sh
index 72221eaa28b0..de5eb2506a83 100644
--- a/pkgs/build-support/cc-wrapper/add-hardening.sh
+++ b/pkgs/build-support/cc-wrapper/add-hardening.sh
@@ -6,7 +6,7 @@ declare -A hardeningEnableMap=()
 # Intentionally word-split in case 'NIX_HARDENING_ENABLE' is defined in Nix. The
 # array expansion also prevents undefined variables from causing trouble with
 # `set -u`.
-for flag in ${NIX_HARDENING_ENABLE-}; do
+for flag in ${NIX_@infixSalt@_HARDENING_ENABLE-}; do
   hardeningEnableMap[$flag]=1
 done
 
diff --git a/pkgs/build-support/cc-wrapper/cc-wrapper.sh b/pkgs/build-support/cc-wrapper/cc-wrapper.sh
index d1018193e5ae..15118d99db72 100644
--- a/pkgs/build-support/cc-wrapper/cc-wrapper.sh
+++ b/pkgs/build-support/cc-wrapper/cc-wrapper.sh
@@ -135,7 +135,8 @@ source @out@/nix-support/add-hardening.sh
 
 # Add the flags for the C compiler proper.
 extraAfter=($NIX_@infixSalt@_CFLAGS_COMPILE)
-extraBefore=("${hardeningCFlags[@]}")
+
+extraBefore=(${hardeningCFlags[@]+"${hardeningCFlags[@]}"})
 
 if [ "$dontLink" != 1 ]; then