diff options
author | Anil Madhavapeddy <anil@recoil.org> | 2016-12-01 18:23:02 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2016-12-02 21:20:45 +0000 |
commit | 801ace687ae3930b8c1bc3cc722aac05e0910f37 (patch) | |
tree | ccbcb858313b3533963883f7413aac04e50f8fcd /community/ocaml/010_all_execstacks.patch | |
parent | cf560a843119e90bb2950edc50c7e30c86e970fb (diff) | |
download | aports-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.patch | 40 |
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`; |