diff --git a/pkgs/build-support/cc-wrapper/cc-wrapper.sh b/pkgs/build-support/cc-wrapper/cc-wrapper.sh index aacaf196f313..e4ffe53e2613 100644 --- a/pkgs/build-support/cc-wrapper/cc-wrapper.sh +++ b/pkgs/build-support/cc-wrapper/cc-wrapper.sh @@ -57,10 +57,6 @@ while (( "$n" < "$nParams" )); do cppInclude=0 elif [ "${p:0:1}" != - ]; then nonFlagArgs=1 - elif [ "$p" = -m32 ]; then - if [ -e @out@/nix-support/dynamic-linker-m32 ]; then - NIX_@infixSalt@_LDFLAGS+=" -dynamic-linker $(< @out@/nix-support/dynamic-linker-m32)" - fi fi n+=1 done diff --git a/pkgs/build-support/cc-wrapper/ld-wrapper.sh b/pkgs/build-support/cc-wrapper/ld-wrapper.sh index a9cc1e3f9e6f..a80f0a1e09b8 100644 --- a/pkgs/build-support/cc-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/cc-wrapper/ld-wrapper.sh @@ -63,6 +63,21 @@ fi extraAfter+=($NIX_@infixSalt@_LDFLAGS_AFTER) +# Choose 32-bit dynamic linker if needed +if [ -e @out@/nix-support/dynamic-linker-m32 ]; then + prev= + for p in ${params+"${params[@]}"}; do + if [[ "$prev" = "-m" && "$p" = "elf_i386" ]]; then + extraAfter+=( + '-dynamic-linker' + "$(< @out@/nix-support/dynamic-linker-m32)" + ) + break + fi + prev="$p" + done +fi + declare -a libDirs declare -A libs relocatable=