- Add arm type directive patch.
- Allow more arm arches. - Don't package *.cmxs on arm. (Added by RWMJ on behalf of DJ Delorie)
This commit is contained in:
parent
170eee21d4
commit
d31f3e67b8
@ -0,0 +1,125 @@
|
||||
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: http://caml.inria.fr/mantis/view.php?id=5336
|
||||
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
|
||||
--
|
15
ocaml.spec
15
ocaml.spec
@ -2,7 +2,7 @@
|
||||
|
||||
Name: ocaml
|
||||
Version: 3.12.0
|
||||
Release: 5%{?dist}
|
||||
Release: 6%{?dist}
|
||||
|
||||
Summary: Objective Caml compiler and programming environment
|
||||
|
||||
@ -27,6 +27,9 @@ Patch1: ocaml-user-cflags.patch
|
||||
# Fix for RHBZ#691896. This is upstream in 3.12.1.
|
||||
Patch2: 0007-Fix-ocamlopt-w.r.t.-binutils-2.21.patch
|
||||
|
||||
# Patch from Debian for ARM (sent upstream).
|
||||
Patch3: debian_patches_0013-ocamlopt-arm-add-.type-directive-for-code-symbols.patch
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
# Depend on previous version of OCaml so that ocamlobjinfo
|
||||
@ -58,7 +61,7 @@ Requires: ncurses-devel
|
||||
Requires: gdbm-devel
|
||||
Requires: rpm-build >= 4.8.0
|
||||
Provides: ocaml(compiler) = %{version}
|
||||
ExclusiveArch: alpha armv4l %{ix86} ia64 x86_64 ppc sparc sparcv9 ppc64
|
||||
ExclusiveArch: alpha %{arm} %{ix86} ia64 x86_64 ppc sparc sparcv9 ppc64
|
||||
|
||||
%global __ocaml_requires_opts -c -f %{buildroot}%{_bindir}/ocamlobjinfo
|
||||
%global __ocaml_provides_opts -f %{buildroot}%{_bindir}/ocamlobjinfo
|
||||
@ -204,6 +207,7 @@ man pages and info files.
|
||||
%patch0 -p1 -b .rpath
|
||||
%patch1 -p1 -b .cflags
|
||||
%patch2 -p1 -b .rhbz691896
|
||||
%patch3 -p1 -b .arm-type-dir
|
||||
|
||||
cp %{SOURCE2} refman.pdf
|
||||
|
||||
@ -310,7 +314,9 @@ fi
|
||||
%{_libdir}/ocaml/ld.conf
|
||||
%{_libdir}/ocaml/Makefile.config
|
||||
%{_libdir}/ocaml/*.a
|
||||
%ifnarch %{arm}
|
||||
%{_libdir}/ocaml/*.cmxs
|
||||
%endif
|
||||
%{_libdir}/ocaml/*.cmxa
|
||||
%{_libdir}/ocaml/*.cmx
|
||||
%{_libdir}/ocaml/*.mli
|
||||
@ -446,6 +452,11 @@ fi
|
||||
|
||||
|
||||
%changelog
|
||||
* Fri Sep 23 2011 DJ Delorie <dj@redhat.com> - 3.12.0-6
|
||||
- Add arm type directive patch.
|
||||
- Allow more arm arches.
|
||||
- Don't package *.cmxs on arm.
|
||||
|
||||
* Wed Mar 30 2011 Richard W.M. Jones <rjones@redhat.com> - 3.12.0-5
|
||||
- Fix for invalid assembler generation (RHBZ#691896).
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user