aboutsummaryrefslogtreecommitdiffstats
path: root/community/ocaml/010_all_execstacks.patch
diff options
context:
space:
mode:
authorAnil Madhavapeddy <anil@recoil.org>2016-12-01 18:23:02 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2016-12-02 21:20:45 +0000
commit801ace687ae3930b8c1bc3cc722aac05e0910f37 (patch)
treeccbcb858313b3533963883f7413aac04e50f8fcd /community/ocaml/010_all_execstacks.patch
parentcf560a843119e90bb2950edc50c7e30c86e970fb (diff)
downloadaports-801ace687ae3930b8c1bc3cc722aac05e0910f37.tar.bz2
aports-801ace687ae3930b8c1bc3cc722aac05e0910f37.tar.xz
community/ocaml: move from testing to community
Diffstat (limited to 'community/ocaml/010_all_execstacks.patch')
-rw-r--r--community/ocaml/010_all_execstacks.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/community/ocaml/010_all_execstacks.patch b/community/ocaml/010_all_execstacks.patch
new file mode 100644
index 0000000000..30cf23ec61
--- /dev/null
+++ b/community/ocaml/010_all_execstacks.patch
@@ -0,0 +1,40 @@
+Fix the EXEC_STACK in ocaml compiled binaries (#153382)
+
+Index: ocaml-4.03.0+beta1/asmrun/sparc.S
+===================================================================
+--- ocaml-4.03.0+beta1.orig/asmrun/sparc.S
++++ ocaml-4.03.0+beta1/asmrun/sparc.S
+@@ -358,3 +358,8 @@ caml_system__frametable:
+ .type caml_raise_exception, #function
+ .type caml_system__frametable, #object
+ #endif
++
++#ifdef __ELF__
++.section .note.GNU-stack,"",%progbits
++#endif
++
+Index: ocaml-4.03.0+beta1/asmcomp/sparc/emit.mlp
+===================================================================
+--- ocaml-4.03.0+beta1.orig/asmcomp/sparc/emit.mlp
++++ ocaml-4.03.0+beta1/asmcomp/sparc/emit.mlp
+@@ -737,6 +737,12 @@ let data l =
+ ` .data\n`;
+ List.iter emit_item l
+
++(* Mark stack as non executable *)
++let nx_stack() =
++ if Config.system = "linux" then
++ ` .section .note.GNU-stack,\"\",%progbits\n`
++
++
+ (* Beginning / end of an assembly file *)
+
+ let begin_assembly() =
+@@ -750,6 +756,7 @@ let begin_assembly() =
+ `{emit_symbol lbl_begin}:\n`
+
+ let end_assembly() =
++ nx_stack();
+ ` .text\n`;
+ let lbl_end = Compilenv.make_symbol (Some "code_end") in
+ ` .global {emit_symbol lbl_end}\n`;