Fix aarch64 relocation problems again.

Earlier patch was dropped accidentally.
This commit is contained in:
Richard W.M. Jones 2014-04-14 21:25:10 +01:00
parent 880ea30949
commit 31bf86cfb0
6 changed files with 51 additions and 65 deletions

View File

@ -1,38 +0,0 @@
From 0ebe44d283e56056fec1691bdc052c92d70c892d Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 30 Dec 2013 20:32:03 +0000
Subject: [PATCH 10/13] Disable ocamldoc and camlp4opt (aarch64 only)
---
Makefile | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/Makefile b/Makefile
index 10c80d2..e0a7d9e 100644
--- a/Makefile
+++ b/Makefile
@@ -686,8 +686,8 @@ alldepend::
ocamldoc: ocamlc ocamlyacc ocamllex otherlibraries
cd ocamldoc && $(MAKE) all
-ocamldoc.opt: ocamlc.opt ocamlyacc ocamllex
- cd ocamldoc && $(MAKE) opt.opt
+#ocamldoc.opt: ocamlc.opt ocamlyacc ocamllex
+# cd ocamldoc && $(MAKE) opt.opt
partialclean::
cd ocamldoc && $(MAKE) clean
@@ -734,8 +734,8 @@ alldepend::
camlp4out: ocamlc ocamlbuild.byte
./build/camlp4-byte-only.sh
-camlp4opt: ocamlopt otherlibrariesopt ocamlbuild-mixed-boot ocamlbuild.native
- ./build/camlp4-native-only.sh
+#camlp4opt: ocamlopt otherlibrariesopt ocamlbuild-mixed-boot ocamlbuild.native
+# ./build/camlp4-native-only.sh
# Ocamlbuild
#ifeq ($(OCAMLBUILD_NOBOOT),"yes")
--
1.8.5.3

View File

@ -0,0 +1,41 @@
From 848ca220af9224a5cc7abb64f32b89ed54c21121 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Mon, 24 Mar 2014 05:50:28 -0500
Subject: [PATCH 10/13] arm64: Align code and data to 8 bytes.
Insufficient alignment seems to be the cause of relocation errors when
linking large native code OCaml programs:
(.text+0xc): relocation truncated to fit: R_AARCH64_LDST64_ABS_LO12_NC against symbol `camlOdoc_type' defined in .data section in odoc_type.o
../stdlib/stdlib.a(listLabels.o): In function `camlListLabels__entry':
(.text+0x10): relocation truncated to fit: R_AARCH64_LDST64_ABS_LO12_NC against symbol `camlListLabels' defined in .data section in ../stdlib/stdlib.a(listLabels.o)
PR#6283 http://caml.inria.fr/mantis/view.php?id=6283
---
asmcomp/arm64/emit.mlp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/asmcomp/arm64/emit.mlp b/asmcomp/arm64/emit.mlp
index fc9649c..4e7c4b0 100644
--- a/asmcomp/arm64/emit.mlp
+++ b/asmcomp/arm64/emit.mlp
@@ -651,7 +651,7 @@ let fundecl fundecl =
call_gc_sites := [];
bound_error_sites := [];
` .text\n`;
- ` .align 2\n`;
+ ` .align 3\n`;
` .globl {emit_symbol fundecl.fun_name}\n`;
` .type {emit_symbol fundecl.fun_name}, %function\n`;
`{emit_symbol fundecl.fun_name}:\n`;
@@ -692,6 +692,7 @@ let emit_item = function
let data l =
` .data\n`;
+ ` .align 3\n`;
List.iter emit_item l
(* Beginning / end of an assembly file *)
--
1.8.5.3

View File

@ -1,4 +1,4 @@
From 6a342793f40250c78931afa32961646f20bc5ba4 Mon Sep 17 00:00:00 2001
From 251d3447bb10550320f43512d8886561c1298f74 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 1 Apr 2014 11:17:07 +0100
Subject: [PATCH 11/13] arg: Add no_arg and get_arg helper functions.

View File

@ -1,4 +1,4 @@
From 0d0204c395b4015804d12bcd871b74dd0cb38bdb Mon Sep 17 00:00:00 2001
From 57955b8a4d4cf7732cb87964f5e124ab713e084b Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 1 Apr 2014 11:21:40 +0100
Subject: [PATCH 12/13] arg: Allow flags such as --flag=arg as well as --flag

View File

@ -1,4 +1,4 @@
From 6099b2f59acea92e0d39fd1fb4c280812223d341 Mon Sep 17 00:00:00 2001
From d9ec3ac29493999687b0f7daa23f4888bc57c7be Mon Sep 17 00:00:00 2001
From: Michel Normand <normand@linux.vnet.ibm.com>
Date: Tue, 18 Mar 2014 09:15:47 -0400
Subject: [PATCH 13/13] Add support for ppc64le.

View File

@ -1,6 +1,6 @@
Name: ocaml
Version: 4.01.0
Release: 12%{?dist}
Release: 13%{?dist}
Summary: OCaml compiler and programming environment
@ -37,7 +37,7 @@ Patch0007: 0007-yacc-Use-mkstemp-instead-of-mktemp.patch
# Aarch64 patches.
Patch0008: 0008-Port-to-the-ARM-64-bits-AArch64-architecture-experim.patch
Patch0009: 0009-Updated-with-latest-versions-from-FSF.patch
Patch0010: 0010-Disable-ocamldoc-and-camlp4opt-aarch64-only.patch
Patch0010: 0010-arm64-Align-code-and-data-to-8-bytes.patch
# NON-upstream patch to allow '--flag=arg' as an alternative to '--flag arg'.
Patch0011: 0011-arg-Add-no_arg-and-get_arg-helper-functions.patch
@ -247,28 +247,7 @@ git config user.email "noone@example.com"
git config user.name "no one"
git add .
git commit -a -q -m "%{version} baseline"
# Should use:
#git am %{patches} </dev/null
# However temporarily we don't want to apply certain patches on
# non-aarch64 so we have to do this. We can fix this when there is a
# released version of OCaml that has ARM64 support upstream.
git am %{_sourcedir}/0001-Add-.gitignore-file-to-ignore-generated-files.patch </dev/null
git am %{_sourcedir}/0002-Ensure-empty-compilerlibs-directory-is-created-by-gi.patch </dev/null
git am %{_sourcedir}/0003-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch </dev/null
git am %{_sourcedir}/0004-Don-t-add-rpaths-to-libraries.patch </dev/null
git am %{_sourcedir}/0005-configure-Allow-user-defined-C-compiler-flags.patch </dev/null
git am %{_sourcedir}/0006-Add-support-for-ppc64.patch </dev/null
git am %{_sourcedir}/0007-yacc-Use-mkstemp-instead-of-mktemp.patch </dev/null
%ifarch aarch64
git am %{_sourcedir}/0008-Port-to-the-ARM-64-bits-AArch64-architecture-experim.patch
%endif
git am %{_sourcedir}/0009-Updated-with-latest-versions-from-FSF.patch
%ifarch aarch64
git am %{_sourcedir}/0010-Disable-ocamldoc-and-camlp4opt-aarch64-only.patch
%endif
git am %{_sourcedir}/0011-arg-Add-no_arg-and-get_arg-helper-functions.patch
git am %{_sourcedir}/0012-arg-Allow-flags-such-as-flag-arg-as-well-as-flag-arg.patch
git am %{_sourcedir}/0013-Add-support-for-ppc64le.patch
git am %{patches} </dev/null
%build
@ -565,6 +544,10 @@ fi
%changelog
* Mon Apr 14 2014 Richard W.M. Jones <rjones@redhat.com> - 4.01.0-13
- Fix aarch64 relocation problems again.
Earlier patch was dropped accidentally.
* Wed Apr 9 2014 Richard W.M. Jones <rjones@redhat.com> - 4.01.0-12
- Add ppc64le support (thanks: Michel Normand) (RHBZ#1077767).