summary refs log tree commit diff
path: root/pkgs/development/compilers/swift/patches/build-script-pax.patch
blob: 1f47bf8ee04527c7a2295af14fd2861b3fd236bb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
--- swift/utils/build-script-impl	2017-01-23 12:47:20.401326309 -0600
+++ swift-pax/utils/build-script-impl	2017-01-23 13:24:10.339366996 -0600
@@ -1837,6 +1837,17 @@ function set_lldb_xcodebuild_options() {
     fi
 }
 
+## XXX: Taken from nixpkgs /pkgs/stdenv/generic/setup.sh
+isELF() {
+    local fn="$1"
+    local fd
+    local magic
+    exec {fd}< "$fn"
+    read -n 4 -u $fd magic
+    exec {fd}<&-
+    if [[ "$magic" =~ ELF ]]; then return 0; else return 1; fi
+}
+
 #
 # Configure and build each product
 #
@@ -2735,6 +2746,12 @@ for host in "${ALL_HOSTS[@]}"; do
             fi
 
             call "${CMAKE_BUILD[@]}" "${build_dir}" $(cmake_config_opt ${product}) -- "${BUILD_ARGS[@]}" ${build_targets[@]}
+            
+						while IFS= read -r -d $'\0' i; do
+								if ! isELF "$i"; then continue; fi
+								echo "setting pax flags on $i"
+								paxctl -czexm "$i" || true
+						done < <(find "${build_dir}" -executable -type f -wholename "*/bin/*" -print0)
         fi
     done
 done