From e3b5b13c53b62b99c4d6764b52a7269a6fe5b983 Mon Sep 17 00:00:00 2001 From: Stephane Glondu Date: Tue, 29 May 2012 20:45:32 +0100 Subject: [PATCH 5/7] ocamlopt/arm: add .type directive for code symbols Bug: http://caml.inria.fr/mantis/view.php?id=5336 Bug-Ubuntu: https://bugs.launchpad.net/bugs/810402 Signed-off-by: Stephane Glondu --- 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 -- 1.7.7.6