ocamlopt/arm: add .type directive for code symbols (LP: #810402)
authorStephane Glondu <steph@glondu.net>
Fri, 12 Aug 2011 19:17:37 +0000 (21:17 +0200)
committerStephane Glondu <steph@glondu.net>
Fri, 12 Aug 2011 19:17:37 +0000 (21:17 +0200)
debian/patches/0013-ocamlopt-arm-add-.type-directive-for-code-symbols.patch [new file with mode: 0644]
debian/patches/series

diff --git a/debian/patches/0013-ocamlopt-arm-add-.type-directive-for-code-symbols.patch b/debian/patches/0013-ocamlopt-arm-add-.type-directive-for-code-symbols.patch
new file mode 100644 (file)
index 0000000..fca359a
--- /dev/null
@@ -0,0 +1,124 @@
+From: Stephane Glondu <steph@glondu.net>
+Date: Fri, 12 Aug 2011 21:13:17 +0200
+Subject: ocamlopt/arm: add .type directive for code symbols
+
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/810402
+Signed-off-by: Stephane Glondu <steph@glondu.net>
+---
+ asmcomp/arm/emit.mlp |    1 +
+ asmrun/arm.S         |   12 ++++++++++++
+ 2 files changed, 13 insertions(+), 0 deletions(-)
+
+diff --git a/asmcomp/arm/emit.mlp b/asmcomp/arm/emit.mlp
+index 2003313..a4b2241 100644
+--- a/asmcomp/arm/emit.mlp
++++ b/asmcomp/arm/emit.mlp
+@@ -556,6 +556,7 @@ let fundecl fundecl =
+   `   .text\n`;
+   `   .align  2\n`;
+   `   .global {emit_symbol fundecl.fun_name}\n`;
++  `   .type   {emit_symbol fundecl.fun_name}, %function\n`;
+   `{emit_symbol fundecl.fun_name}:\n`;
+   let n = frame_size() in
+   ignore(emit_stack_adjustment "sub" n);
+diff --git a/asmrun/arm.S b/asmrun/arm.S
+index 164f731..1313e9c 100644
+--- a/asmrun/arm.S
++++ b/asmrun/arm.S
+@@ -24,6 +24,7 @@ alloc_limit     .req    r10
+ /* Allocation functions and GC interface */
+         .globl caml_call_gc
++        .type caml_call_gc, %function
+ caml_call_gc:
+     /* Record return address and desired size */
+     /* Can use alloc_limit as a temporary since it will be reloaded by
+@@ -41,6 +42,7 @@ caml_call_gc:
+         bx      lr
+         .globl caml_alloc1
++        .type caml_alloc1, %function
+ caml_alloc1:
+         sub     alloc_ptr, alloc_ptr, #8
+         cmp     alloc_ptr, alloc_limit
+@@ -54,6 +56,7 @@ caml_alloc1:
+         b       caml_alloc1
+         .globl caml_alloc2
++        .type caml_alloc2, %function
+ caml_alloc2:
+         sub     alloc_ptr, alloc_ptr, #12
+         cmp     alloc_ptr, alloc_limit
+@@ -67,6 +70,7 @@ caml_alloc2:
+         b       caml_alloc2
+         .globl caml_alloc3
++        .type caml_alloc3, %function
+ caml_alloc3:
+         sub     alloc_ptr, alloc_ptr, #16
+         cmp     alloc_ptr, alloc_limit
+@@ -80,6 +84,7 @@ caml_alloc3:
+         b       caml_alloc3
+         .globl caml_allocN
++        .type caml_allocN, %function
+ caml_allocN:
+         sub     alloc_ptr, alloc_ptr, r12
+         cmp     alloc_ptr, alloc_limit
+@@ -134,6 +139,7 @@ caml_allocN:
+ /* Function to call is in r12 */
+         .globl caml_c_call
++        .type caml_c_call, %function
+ caml_c_call:
+     /* Preserve return address in callee-save register r4 */
+         mov     r4, lr
+@@ -160,6 +166,7 @@ caml_c_call:
+ /* Start the Caml program */
+         .globl caml_start_program
++        .type caml_start_program, %function
+ caml_start_program:
+         ldr     r12, .Lcaml_program
+@@ -235,6 +242,7 @@ caml_start_program:
+ /* Raise an exception from C */
+         .globl caml_raise_exception
++        .type caml_raise_exception, %function
+ caml_raise_exception:
+     /* Reload Caml allocation pointers */
+         ldr     r12, .Lcaml_young_ptr
+@@ -250,6 +258,7 @@ caml_raise_exception:
+ /* Callback from C to Caml */
+         .globl caml_callback_exn
++        .type caml_callback_exn, %function
+ caml_callback_exn:
+     /* Initial shuffling of arguments (r0 = closure, r1 = first arg) */
+         mov     r12, r0
+@@ -259,6 +268,7 @@ caml_callback_exn:
+         b       .Ljump_to_caml
+         .globl caml_callback2_exn
++        .type caml_callback2_exn, %function
+ caml_callback2_exn:
+     /* Initial shuffling of arguments (r0 = closure, r1 = arg1, r2 = arg2) */
+         mov     r12, r0
+@@ -269,6 +279,7 @@ caml_callback2_exn:
+         b       .Ljump_to_caml
+         .globl caml_callback3_exn
++        .type caml_callback3_exn, %function
+ caml_callback3_exn:
+     /* Initial shuffling of arguments */
+     /* (r0 = closure, r1 = arg1, r2 = arg2, r3 = arg3) */
+@@ -281,6 +292,7 @@ caml_callback3_exn:
+         b       .Ljump_to_caml
+         .globl caml_ml_array_bound_error
++        .type caml_ml_array_bound_error, %function
+ caml_ml_array_bound_error:
+     /* Load address of [caml_array_bound_error] in r12 */
+         ldr     r12, .Lcaml_array_bound_error
+-- 
index c321cdf4fd9656f485cfea14440e606747a8646f..8b210e3f65f8504844fda275390bdc7a42c46db5 100644 (file)
@@ -10,3 +10,4 @@
 0010-Properly-initialize-executable-name-in-caml_startup_.patch
 0011-Embed-bytecode-in-C-object-when-using-custom.patch
 0012-Make-objinfo-show-force_link-and-ccobjs-ccopts-when-.patch
+0013-ocamlopt-arm-add-.type-directive-for-code-symbols.patch