summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorVladimír Čunát <v@cunat.cz>2022-07-29 19:26:07 +0200
committerVladimír Čunát <v@cunat.cz>2022-07-29 19:27:34 +0200
commit5b5843e2b24fc81206e4080fc1706188230fedb9 (patch)
treea610d7b2a7225300931f45b5933c715d04516b7d /pkgs/build-support
parentef45bf389af10c34dac1769e9e83bc3f204449c4 (diff)
parent2cc754a7baa72659430ec961608f0fc1dbe128df (diff)
downloadnixpkgs-5b5843e2b24fc81206e4080fc1706188230fedb9.tar
nixpkgs-5b5843e2b24fc81206e4080fc1706188230fedb9.tar.gz
nixpkgs-5b5843e2b24fc81206e4080fc1706188230fedb9.tar.bz2
nixpkgs-5b5843e2b24fc81206e4080fc1706188230fedb9.tar.lz
nixpkgs-5b5843e2b24fc81206e4080fc1706188230fedb9.tar.xz
nixpkgs-5b5843e2b24fc81206e4080fc1706188230fedb9.tar.zst
nixpkgs-5b5843e2b24fc81206e4080fc1706188230fedb9.zip
Merge #151983: wrapper: Fortran: disable stackprotector
...hardening on darwin aarch64 (merge into staging)
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/cc-wrapper/default.nix9
-rw-r--r--pkgs/build-support/cc-wrapper/fortran-hook.sh2
2 files changed, 9 insertions, 2 deletions
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index d2af065cde2..f8e28c452c3 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -249,12 +249,19 @@ stdenv.mkDerivation {
       wrap ${targetPrefix}gdc $wrapper $ccPath/${targetPrefix}gdc
     ''
 
-    + optionalString cc.langFortran or false ''
+    + optionalString cc.langFortran or false (''
       wrap ${targetPrefix}gfortran $wrapper $ccPath/${targetPrefix}gfortran
       ln -sv ${targetPrefix}gfortran $out/bin/${targetPrefix}g77
       ln -sv ${targetPrefix}gfortran $out/bin/${targetPrefix}f77
       export named_fc=${targetPrefix}gfortran
     ''
+    # Darwin aarch64 fortran compilations seem to fail otherwise, see:
+    # https://github.com/NixOS/nixpkgs/issues/140041
+    + (if (stdenvNoCC.isDarwin && stdenvNoCC.isAarch64) then ''
+      export fortran_hardening="pic strictoverflow relro bindnow"
+    '' else ''
+      export fortran_hardening="pic strictoverflow relro bindnow stackprotector"
+    ''))
 
     + optionalString cc.langJava or false ''
       wrap ${targetPrefix}gcj $wrapper $ccPath/${targetPrefix}gcj
diff --git a/pkgs/build-support/cc-wrapper/fortran-hook.sh b/pkgs/build-support/cc-wrapper/fortran-hook.sh
index d72f314c01c..59e493e1836 100644
--- a/pkgs/build-support/cc-wrapper/fortran-hook.sh
+++ b/pkgs/build-support/cc-wrapper/fortran-hook.sh
@@ -5,7 +5,7 @@ export FC${role_post}=@named_fc@
 
 # If unset, assume the default hardening flags.
 # These are different for fortran.
-: ${NIX_HARDENING_ENABLE="stackprotector pic strictoverflow relro bindnow"}
+: ${NIX_HARDENING_ENABLE="@fortran_hardening@"}
 export NIX_HARDENING_ENABLE
 
 unset -v role_post