[ocaml-cmigrep] Rebuild against OCaml 3.12.1.
Richard W.M. Jones
rjones at fedoraproject.org
Mon Jan 16 13:51:35 UTC 2012
commit 6c4ec1ab1b1190e313e016de0e74ffc7d7fac40c
Author: Richard W.M. Jones <rjones at redhat.com>
Date: Mon Jan 16 13:43:37 2012 +0000
Rebuild against OCaml 3.12.1.
.gitignore | 1 +
ocaml-3.11.0-rpath.patch | 12 -
ocaml-3.11.0-string-index-from.patch | 47 --
ocaml-3.12.0-rpath.patch | 13 +
ocaml-cmigrep.spec | 20 +-
ocaml-3.11.0-ppc64.patch => ocaml-ppc64.patch | 628 ++++++++++++------------
sources | 2 +-
7 files changed, 340 insertions(+), 383 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 3a0346b..f743f3e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ ocaml-3.11.0+beta1.tar.bz2
ocaml-3.11.0.tar.bz2
ocaml-3.11.1+rc0.tar.gz
ocaml-3.11.2+rc1.tar.bz2
+/ocaml-3.12.1.tar.gz
diff --git a/ocaml-3.12.0-rpath.patch b/ocaml-3.12.0-rpath.patch
new file mode 100644
index 0000000..71e8984
--- /dev/null
+++ b/ocaml-3.12.0-rpath.patch
@@ -0,0 +1,13 @@
+diff -ur ocaml-3.12.0.old/tools/Makefile.shared ocaml-3.12.0/tools/Makefile.shared
+--- ocaml-3.12.0.old/tools/Makefile.shared 2010-06-07 07:58:41.000000000 +0100
++++ ocaml-3.12.0/tools/Makefile.shared 2011-01-04 21:56:13.023974253 +0000
+@@ -108,9 +108,6 @@
+ sed -e "s|%%BINDIR%%|$(BINDIR)|" \
+ -e "s|%%SUPPORTS_SHARED_LIBRARIES%%|$(SUPPORTS_SHARED_LIBRARIES)|" \
+ -e "s|%%MKSHAREDLIB%%|$(MKSHAREDLIB)|" \
+- -e "s|%%BYTECCRPATH%%|$(BYTECCRPATH)|" \
+- -e "s|%%NATIVECCRPATH%%|$(NATIVECCRPATH)|" \
+- -e "s|%%MKSHAREDLIBRPATH%%|$(MKSHAREDLIBRPATH)|" \
+ -e "s|%%RANLIB%%|$(RANLIB)|" \
+ ocamlmklib.mlp >> ocamlmklib.ml
+
diff --git a/ocaml-cmigrep.spec b/ocaml-cmigrep.spec
index 9a329f2..bd60eb2 100644
--- a/ocaml-cmigrep.spec
+++ b/ocaml-cmigrep.spec
@@ -1,29 +1,28 @@
%define opt %(test -x %{_bindir}/ocamlopt && echo 1 || echo 0)
%define debug_package %{nil}
-%define ocaml_major 3.11
-%define ocaml_minor 2
+%define ocaml_major 3.12
+%define ocaml_minor 1
%define _default_patch_fuzz 2
Name: ocaml-cmigrep
Version: 1.5
-Release: 18%{?dist}
+Release: 19%{?dist}
Summary: Search OCaml compiled interface (cmi) files
Group: Development/Libraries
License: GPLv2+
URL: http://homepage.mac.com/letaris/
Source0: http://homepage.mac.com/letaris/cmigrep-%{version}.tar.bz2
-#Source1: http://caml.inria.fr/distrib/ocaml-%{ocaml_major}/ocaml-%{ocaml_major}.%{ocaml_minor}.tar.gz
-Source1: ftp://ftp.inria.fr/INRIA/Projects/cristal/ocaml/ocaml-3.11/ocaml-3.11.2+rc1.tar.bz2
+Source1: http://caml.inria.fr/distrib/ocaml-%{ocaml_major}/ocaml-%{ocaml_major}.%{ocaml_minor}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
ExcludeArch: sparc64 s390 s390x
Patch0: cmigrep-make-without-godi-debian.patch
-Patch1: ocaml-3.11.0-rpath.patch
+Patch1: ocaml-3.12.0-rpath.patch
Patch2: ocaml-user-cflags.patch
-Patch3: ocaml-3.11.0-ppc64.patch
+Patch3: ocaml-ppc64.patch
# Sent upstream on 2008-11-20.
Patch10: ocaml-cmigrep-3.11.0-updated-types.patch
@@ -52,8 +51,8 @@ elisp that allows emacs to use cmigrep for completion.
# +compiler-libs directory. It would be good to copy this,
# however in Debian the only packages which actually use
# compiler-libs are camlp5 & cmigrep.
-bzcat %{SOURCE1} | tar xf -
-mv ocaml-%{ocaml_major}.%{ocaml_minor}+rc1 compiler
+zcat %{SOURCE1} | tar xf -
+mv ocaml-%{ocaml_major}.%{ocaml_minor} compiler
pushd compiler
%patch1 -p1
%patch2 -p1
@@ -104,6 +103,9 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* Mon Jan 16 2012 Richard W.M. Jones <rjones at redhat.com> - 1.5-19
+- Rebuild against OCaml 3.12.1.
+
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.5-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
diff --git a/ocaml-3.11.0-ppc64.patch b/ocaml-ppc64.patch
similarity index 77%
rename from ocaml-3.11.0-ppc64.patch
rename to ocaml-ppc64.patch
index 7cb7e4c..88eff4b 100644
--- a/ocaml-3.11.0-ppc64.patch
+++ b/ocaml-ppc64.patch
@@ -1,6 +1,6 @@
diff -uNr ocaml-3.10.1/asmcomp/power64/arch.ml ocaml-3.10.1.ppc64/asmcomp/power64/arch.ml
---- ocaml-3.10.1/asmcomp/power64/arch.ml 1969-12-31 19:00:00.000000000 -0500
-+++ ocaml-3.10.1.ppc64/asmcomp/power64/arch.ml 2008-02-29 08:37:45.000000000 -0500
+--- ocaml-3.10.1/asmcomp/power64/arch.ml 1969-12-31 19:00:00.000000000 -0500
++++ ocaml-3.10.1.ppc64/asmcomp/power64/arch.ml 2008-02-29 08:37:45.000000000 -0500
@@ -0,0 +1,84 @@
+(***********************************************************************)
+(* *)
@@ -14,7 +14,7 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/arch.ml ocaml-3.10.1.ppc64/asmcomp/power6
+(* *)
+(***********************************************************************)
+
-+(* $Id: arch.ml,v 1.11 2004/06/19 16:13:32 xleroy Exp $ *)
++(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *)
+
+(* Specific operations for the PowerPC processor *)
+
@@ -87,8 +87,8 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/arch.ml ocaml-3.10.1.ppc64/asmcomp/power6
+ fprintf ppf "alloc_far %d" n
+
diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power64/emit.mlp
---- ocaml-3.10.1/asmcomp/power64/emit.mlp 1969-12-31 19:00:00.000000000 -0500
-+++ ocaml-3.10.1.ppc64/asmcomp/power64/emit.mlp 2008-02-29 08:37:45.000000000 -0500
+--- ocaml-3.10.1/asmcomp/power64/emit.mlp 1969-12-31 19:00:00.000000000 -0500
++++ ocaml-3.10.1.ppc64/asmcomp/power64/emit.mlp 2008-02-29 08:37:45.000000000 -0500
@@ -0,0 +1,989 @@
+(***********************************************************************)
+(* *)
@@ -102,7 +102,7 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+(* *)
+(***********************************************************************)
+
-+(* $Id: emit.mlp,v 1.21 2004/06/19 17:39:34 xleroy Exp $ *)
++(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *)
+
+(* Emission of PowerPC assembly code *)
+
@@ -169,26 +169,26 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+
+let toc_space =
+ match Config.system with
-+ | "elf" | "bsd" -> " .section \".toc\",\"aw\"\n"
-+ | "rhapsody" -> " .toc\n"
++ | "elf" | "bsd" -> " .section \".toc\",\"aw\"\n"
++ | "rhapsody" -> " .toc\n"
+ | _ -> assert false
+
+let data_space =
+ match Config.system with
-+ | "elf" | "bsd" -> " .section \".data\"\n"
-+ | "rhapsody" -> " .data\n"
++ | "elf" | "bsd" -> " .section \".data\"\n"
++ | "rhapsody" -> " .data\n"
+ | _ -> assert false
+
+let code_space =
+ match Config.system with
-+ | "elf" | "bsd" -> " .section \".text\"\n"
-+ | "rhapsody" -> " .text\n"
++ | "elf" | "bsd" -> " .section \".text\"\n"
++ | "rhapsody" -> " .text\n"
+ | _ -> assert false
+
+let rodata_space =
+ match Config.system with
-+ | "elf" | "bsd" -> " .section \".rodata\"\n"
-+ | "rhapsody" -> " .const\n"
++ | "elf" | "bsd" -> " .section \".rodata\"\n"
++ | "rhapsody" -> " .const\n"
+ | _ -> assert false
+
+(* Output a pseudo-register *)
@@ -220,8 +220,8 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ Stack s ->
+ let lbl, ofs = slot_offset s (register_class r) in
+ if lbl > 0 then
-+ `{emit_label lbl}+`;
-+ `{emit_int ofs}({emit_gpr 1})`
++ `{emit_label lbl}+`;
++ `{emit_int ofs}({emit_gpr 1})`
+ | _ -> fatal_error "Emit.emit_stack"
+
+(* Split a 32-bit integer constants in two 16-bit halves *)
@@ -289,32 +289,32 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ let dd = (d + 0x8000) in (* We can only offset by -0x8000 .. +0x7fff *)
+ let a = (dd land -0x10000) in
+ let b = (dd land 0xffff) - 0x8000 in
-+ ` ld {emit_gpr 11}, {emit_tocref (TocSymOfs (s,a))}\n`;
-+ ` {emit_string instr} {emit_reg arg}, {emit_int b}({emit_gpr 11})\n`
++ ` ld {emit_gpr 11}, {emit_tocref (TocSymOfs (s,a))}\n`;
++ ` {emit_string instr} {emit_reg arg}, {emit_int b}({emit_gpr 11})\n`
+ | Iindexed ofs ->
+ if is_immediate ofs && valid_offset instr ofs then
-+ ` {emit_string instr} {emit_reg arg}, {emit_int ofs}({emit_reg addr.(n)})\n`
++ ` {emit_string instr} {emit_reg arg}, {emit_int ofs}({emit_reg addr.(n)})\n`
+ else begin
-+ ` lis {emit_gpr 0}, {emit_int(high ofs)}\n`;
++ ` lis {emit_gpr 0}, {emit_int(high ofs)}\n`;
+ if low ofs <> 0 then
-+ ` ori {emit_gpr 0}, {emit_gpr 0}, {emit_int(low ofs)}\n`;
-+ ` {emit_string instr}x {emit_reg arg}, {emit_reg addr.(n)}, {emit_gpr 0}\n`
++ ` ori {emit_gpr 0}, {emit_gpr 0}, {emit_int(low ofs)}\n`;
++ ` {emit_string instr}x {emit_reg arg}, {emit_reg addr.(n)}, {emit_gpr 0}\n`
+ end
+ | Iindexed2 ->
-+ ` {emit_string instr}x {emit_reg arg}, {emit_reg addr.(n)}, {emit_reg addr.(n+1)}\n`
++ ` {emit_string instr}x {emit_reg arg}, {emit_reg addr.(n)}, {emit_reg addr.(n+1)}\n`
+
+(* After a comparison, extract the result as 0 or 1 *)
+
+let emit_set_comp cmp res =
-+ ` mfcr {emit_gpr 0}\n`;
++ ` mfcr {emit_gpr 0}\n`;
+ let bitnum =
+ match cmp with
+ Ceq | Cne -> 2
+ | Cgt | Cle -> 1
+ | Clt | Cge -> 0 in
-+` rlwinm {emit_reg res}, {emit_gpr 0}, {emit_int(bitnum+1)}, 31, 31\n`;
++` rlwinm {emit_reg res}, {emit_gpr 0}, {emit_int(bitnum+1)}, 31, 31\n`;
+ begin match cmp with
-+ Cne | Cle | Cge -> ` xori {emit_reg res}, {emit_reg res}, 1\n`
++ Cne | Cle | Cge -> ` xori {emit_reg res}, {emit_reg res}, 1\n`
+ | _ -> ()
+ end
+
@@ -345,16 +345,16 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ `{emit_label lbl}:\n`
+
+let emit_frame fd =
-+ ` .quad {emit_label fd.fd_lbl} + 4\n`;
-+ ` .short {emit_label fd.fd_frame_size_lbl}\n`;
-+ ` .short {emit_int (List.length fd.fd_live_offset)}\n`;
++ ` .quad {emit_label fd.fd_lbl} + 4\n`;
++ ` .short {emit_label fd.fd_frame_size_lbl}\n`;
++ ` .short {emit_int (List.length fd.fd_live_offset)}\n`;
+ List.iter
+ (fun (lbl,n) ->
-+ ` .short `;
++ ` .short `;
+ if lbl > 0 then `{emit_label lbl}+`;
+ `{emit_int n}\n`)
+ fd.fd_live_offset;
-+ ` .align 3\n`
++ ` .align 3\n`
+
+(* Record external C functions to be called in a position-independent way
+ (for MacOSX) *)
@@ -364,10 +364,10 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+let external_functions = ref StringSet.empty
+
+let emit_external s =
-+ ` .non_lazy_symbol_pointer\n`;
++ ` .non_lazy_symbol_pointer\n`;
+ `L{emit_symbol s}$non_lazy_ptr:\n`;
-+ ` .indirect_symbol {emit_symbol s}\n`;
-+ ` .quad 0\n`
++ ` .indirect_symbol {emit_symbol s}\n`;
++ ` .quad 0\n`
+
+(* Names for conditional branches after comparisons *)
+
@@ -455,7 +455,7 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ | Lop(Itailcall_ind) -> if !contains_calls then 7 else if has_stack_frame() then 5 else 4
+ | Lop(Itailcall_imm s) -> if s = !function_name then 1 else
+ if !contains_calls then 8 else
-+ if has_stack_frame() then 6 else 5
++ if has_stack_frame() then 6 else 5
+ | Lop(Iextcall(s, true)) -> 8
+ | Lop(Iextcall(s, false)) -> 7
+ | Lop(Istackoffset n) -> 0
@@ -571,94 +571,94 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ if src.loc <> dst.loc then begin
+ match (src, dst) with
+ {loc = Reg rs; typ = (Int | Addr)}, {loc = Reg rd} ->
-+ ` mr {emit_reg dst}, {emit_reg src}\n`
++ ` mr {emit_reg dst}, {emit_reg src}\n`
+ | {loc = Reg rs; typ = Float}, {loc = Reg rd; typ = Float} ->
-+ ` fmr {emit_reg dst}, {emit_reg src}\n`
++ ` fmr {emit_reg dst}, {emit_reg src}\n`
+ | {loc = Reg rs; typ = (Int | Addr)}, {loc = Stack sd} ->
-+ ` std {emit_reg src}, {emit_stack dst}\n`
++ ` std {emit_reg src}, {emit_stack dst}\n`
+ | {loc = Reg rs; typ = Float}, {loc = Stack sd} ->
-+ ` stfd {emit_reg src}, {emit_stack dst}\n`
++ ` stfd {emit_reg src}, {emit_stack dst}\n`
+ | {loc = Stack ss; typ = (Int | Addr)}, {loc = Reg rd} ->
-+ ` ld {emit_reg dst}, {emit_stack src}\n`
++ ` ld {emit_reg dst}, {emit_stack src}\n`
+ | {loc = Stack ss; typ = Float}, {loc = Reg rd} ->
-+ ` lfd {emit_reg dst}, {emit_stack src}\n`
++ ` lfd {emit_reg dst}, {emit_stack src}\n`
+ | (_, _) ->
+ fatal_error "Emit: Imove"
+ end
+ | Lop(Iconst_int n) ->
+ if is_native_immediate n then
-+ ` li {emit_reg i.res.(0)}, {emit_nativeint n}\n`
++ ` li {emit_reg i.res.(0)}, {emit_nativeint n}\n`
+ else if n >= -0x8000_0000n && n <= 0x7FFF_FFFFn then begin
-+ ` lis {emit_reg i.res.(0)}, {emit_int(nativehigh n)}\n`;
++ ` lis {emit_reg i.res.(0)}, {emit_int(nativehigh n)}\n`;
+ if nativelow n <> 0 then
-+ ` ori {emit_reg i.res.(0)}, {emit_reg i.res.(0)}, {emit_int(nativelow n)}\n`
++ ` ori {emit_reg i.res.(0)}, {emit_reg i.res.(0)}, {emit_int(nativelow n)}\n`
+ end else begin
-+ ` ld {emit_reg i.res.(0)}, {emit_tocref (TocInt n)}\n`
++ ` ld {emit_reg i.res.(0)}, {emit_tocref (TocInt n)}\n`
+ end
+ | Lop(Iconst_float s) ->
-+ ` lfd {emit_reg i.res.(0)}, {emit_tocref (TocFloat s)}\n`
++ ` lfd {emit_reg i.res.(0)}, {emit_tocref (TocFloat s)}\n`
+ | Lop(Iconst_symbol s) ->
-+ ` ld {emit_reg i.res.(0)}, {emit_tocref (TocSymOfs (s,0))}\n`
++ ` ld {emit_reg i.res.(0)}, {emit_tocref (TocSymOfs (s,0))}\n`
+ | Lop(Icall_ind) ->
-+ ` std {emit_gpr 2},40({emit_gpr 1})\n`;
-+ ` ld {emit_gpr 2}, 8({emit_reg i.arg.(0)})\n`;
-+ ` ld {emit_reg i.arg.(0)}, 0({emit_reg i.arg.(0)})\n`;
-+ ` mtctr {emit_reg i.arg.(0)}\n`;
++ ` std {emit_gpr 2},40({emit_gpr 1})\n`;
++ ` ld {emit_gpr 2}, 8({emit_reg i.arg.(0)})\n`;
++ ` ld {emit_reg i.arg.(0)}, 0({emit_reg i.arg.(0)})\n`;
++ ` mtctr {emit_reg i.arg.(0)}\n`;
+ record_frame i.live;
-+ ` bctrl\n`;
-+ ` ld {emit_gpr 2},40({emit_gpr 1})\n`
++ ` bctrl\n`;
++ ` ld {emit_gpr 2},40({emit_gpr 1})\n`
+ | Lop(Icall_imm s) ->
-+ ` ld {emit_gpr 11}, {emit_tocref (TocSymOfs (s,0))}\n`;
-+ ` std {emit_gpr 2},40({emit_gpr 1})\n`;
-+ ` ld {emit_gpr 2}, 8({emit_gpr 11})\n`;
-+ ` ld {emit_gpr 11}, 0({emit_gpr 11})\n`;
-+ ` mtctr {emit_gpr 11}\n`;
-+ record_frame i.live;
-+ ` bctrl\n`;
-+ ` ld {emit_gpr 2},40({emit_gpr 1})\n`
++ ` ld {emit_gpr 11}, {emit_tocref (TocSymOfs (s,0))}\n`;
++ ` std {emit_gpr 2},40({emit_gpr 1})\n`;
++ ` ld {emit_gpr 2}, 8({emit_gpr 11})\n`;
++ ` ld {emit_gpr 11}, 0({emit_gpr 11})\n`;
++ ` mtctr {emit_gpr 11}\n`;
++ record_frame i.live;
++ ` bctrl\n`;
++ ` ld {emit_gpr 2},40({emit_gpr 1})\n`
+ | Lop(Itailcall_ind) ->
-+ ` ld {emit_gpr 2}, 8({emit_reg i.arg.(0)})\n`;
-+ ` ld {emit_reg i.arg.(0)}, 0({emit_reg i.arg.(0)})\n`;
-+ ` mtctr {emit_reg i.arg.(0)}\n`;
++ ` ld {emit_gpr 2}, 8({emit_reg i.arg.(0)})\n`;
++ ` ld {emit_reg i.arg.(0)}, 0({emit_reg i.arg.(0)})\n`;
++ ` mtctr {emit_reg i.arg.(0)}\n`;
+ if has_stack_frame() then
-+ ` ld {emit_gpr 1}, 0({emit_gpr 1})\n`;
++ ` ld {emit_gpr 1}, 0({emit_gpr 1})\n`;
+ if !contains_calls then begin
-+ ` ld {emit_gpr 11}, 16({emit_gpr 1})\n`;
-+ ` mtlr {emit_gpr 11}\n`
++ ` ld {emit_gpr 11}, 16({emit_gpr 1})\n`;
++ ` mtlr {emit_gpr 11}\n`
+ end;
-+ ` bctr\n`
++ ` bctr\n`
+ | Lop(Itailcall_imm s) ->
+ if s = !function_name then
-+ ` b {emit_label !tailrec_entry_point}\n`
++ ` b {emit_label !tailrec_entry_point}\n`
+ else begin
+ if has_stack_frame() then
-+ ` ld {emit_gpr 1}, 0({emit_gpr 1})\n`;
++ ` ld {emit_gpr 1}, 0({emit_gpr 1})\n`;
+ if !contains_calls then begin
-+ ` ld {emit_gpr 11}, 16({emit_gpr 1})\n`;
-+ ` mtlr {emit_gpr 11}\n`
++ ` ld {emit_gpr 11}, 16({emit_gpr 1})\n`;
++ ` mtlr {emit_gpr 11}\n`
+ end;
-+ ` ld {emit_gpr 11}, {emit_tocref (TocSymOfs (s,0))}\n`;
-+ ` ld {emit_gpr 2}, 8({emit_gpr 11})\n`;
-+ ` ld {emit_gpr 11}, 0({emit_gpr 11})\n`;
-+ ` mtctr {emit_gpr 11}\n`;
-+ ` bctr\n`
++ ` ld {emit_gpr 11}, {emit_tocref (TocSymOfs (s,0))}\n`;
++ ` ld {emit_gpr 2}, 8({emit_gpr 11})\n`;
++ ` ld {emit_gpr 11}, 0({emit_gpr 11})\n`;
++ ` mtctr {emit_gpr 11}\n`;
++ ` bctr\n`
+ end
+ | Lop(Iextcall(s, alloc)) ->
+ if alloc then begin
-+ ` ld {emit_gpr 11}, {emit_tocref (TocSymOfs (s,0))}\n`;
-+ ` ld {emit_gpr 12}, {emit_tocref (TocSymOfs ("caml_c_call",0))}\n`;
++ ` ld {emit_gpr 11}, {emit_tocref (TocSymOfs (s,0))}\n`;
++ ` ld {emit_gpr 12}, {emit_tocref (TocSymOfs ("caml_c_call",0))}\n`;
+ end else
-+ ` ld {emit_gpr 12}, {emit_tocref (TocSymOfs (s,0))}\n`;
-+ ` std {emit_gpr 2}, 40({emit_gpr 1})\n`;
-+ ` ld {emit_gpr 2}, 8({emit_gpr 12})\n`;
-+ ` ld {emit_gpr 12}, 0({emit_gpr 12})\n`;
-+ ` mtctr {emit_gpr 12}\n`;
++ ` ld {emit_gpr 12}, {emit_tocref (TocSymOfs (s,0))}\n`;
++ ` std {emit_gpr 2}, 40({emit_gpr 1})\n`;
++ ` ld {emit_gpr 2}, 8({emit_gpr 12})\n`;
++ ` ld {emit_gpr 12}, 0({emit_gpr 12})\n`;
++ ` mtctr {emit_gpr 12}\n`;
+ if alloc then record_frame i.live;
-+ ` bctrl\n`;
-+ ` ld {emit_gpr 2}, 40({emit_gpr 1})\n`
++ ` bctrl\n`;
++ ` ld {emit_gpr 2}, 40({emit_gpr 1})\n`
+ | Lop(Istackoffset n) ->
-+ if n > !stack_args_size then
-+ stack_args_size := n
++ if n > !stack_args_size then
++ stack_args_size := n
+ | Lop(Iload(chunk, addr)) ->
+ let loadinstr =
+ match chunk with
@@ -673,7 +673,7 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ | Double | Double_u -> "lfd" in
+ emit_load_store loadinstr addr i.arg 0 i.res.(0);
+ if chunk = Byte_signed then
-+ ` extsb {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
++ ` extsb {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
+ | Lop(Istore(chunk, addr)) ->
+ let storeinstr =
+ match chunk with
@@ -686,192 +686,192 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ emit_load_store storeinstr addr i.arg 1 i.arg.(0)
+ | Lop(Ialloc n) ->
+ if !call_gc_label = 0 then call_gc_label := new_label();
-+ ` addi {emit_gpr 31}, {emit_gpr 31}, {emit_int(-n)}\n`;
-+ ` cmpld {emit_gpr 31}, {emit_gpr 30}\n`;
-+ ` addi {emit_reg i.res.(0)}, {emit_gpr 31}, 8\n`;
++ ` addi {emit_gpr 31}, {emit_gpr 31}, {emit_int(-n)}\n`;
++ ` cmpld {emit_gpr 31}, {emit_gpr 30}\n`;
++ ` addi {emit_reg i.res.(0)}, {emit_gpr 31}, 8\n`;
+ record_frame i.live;
-+ ` bltl {emit_label !call_gc_label}\n` (* Must be 4 insns to restart *)
++ ` bltl {emit_label !call_gc_label}\n` (* Must be 4 insns to restart *)
+ | Lop(Ispecific(Ialloc_far n)) ->
+ if !call_gc_label = 0 then call_gc_label := new_label();
+ let lbl = new_label() in
-+ ` addi {emit_gpr 31}, {emit_gpr 31}, {emit_int(-n)}\n`;
-+ ` cmpld {emit_gpr 31}, {emit_gpr 30}\n`;
-+ ` bge {emit_label lbl}\n`;
++ ` addi {emit_gpr 31}, {emit_gpr 31}, {emit_int(-n)}\n`;
++ ` cmpld {emit_gpr 31}, {emit_gpr 30}\n`;
++ ` bge {emit_label lbl}\n`;
+ record_frame i.live;
-+ ` bl {emit_label !call_gc_label}\n`; (* Must be 4 insns to restart *)
-+ `{emit_label lbl}: addi {emit_reg i.res.(0)}, {emit_gpr 31}, 4\n`
++ ` bl {emit_label !call_gc_label}\n`; (* Must be 4 insns to restart *)
++ `{emit_label lbl}: addi {emit_reg i.res.(0)}, {emit_gpr 31}, 4\n`
+ | Lop(Iintop Isub) -> (* subfc has swapped arguments *)
-+ ` subfc {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`
++ ` subfc {emit_reg i.res.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`
+ | Lop(Iintop Imod) ->
-+ ` divd {emit_gpr 0}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
-+ ` mulld {emit_gpr 0}, {emit_gpr 0}, {emit_reg i.arg.(1)}\n`;
-+ ` subfc {emit_reg i.res.(0)}, {emit_gpr 0}, {emit_reg i.arg.(0)}\n`
++ ` divd {emit_gpr 0}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
++ ` mulld {emit_gpr 0}, {emit_gpr 0}, {emit_reg i.arg.(1)}\n`;
++ ` subfc {emit_reg i.res.(0)}, {emit_gpr 0}, {emit_reg i.arg.(0)}\n`
+ | Lop(Iintop(Icomp cmp)) ->
+ begin match cmp with
+ Isigned c ->
-+ ` cmpd {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
++ ` cmpd {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
+ emit_set_comp c i.res.(0)
+ | Iunsigned c ->
-+ ` cmpld {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
++ ` cmpld {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
+ emit_set_comp c i.res.(0)
+ end
+ | Lop(Iintop Icheckbound) ->
-+ ` tdlle {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
++ ` tdlle {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
+ | Lop(Iintop op) ->
+ let instr = name_for_intop op in
-+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
++ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
+ | Lop(Iintop_imm(Isub, n)) ->
-+ ` addi {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_int(-n)}\n`
++ ` addi {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_int(-n)}\n`
+ | Lop(Iintop_imm(Idiv, n)) -> (* n is guaranteed to be a power of 2 *)
+ let l = Misc.log2 n in
-+ ` sradi {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_int l}\n`;
-+ ` addze {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
++ ` sradi {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_int l}\n`;
++ ` addze {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
+ | Lop(Iintop_imm(Imod, n)) -> (* n is guaranteed to be a power of 2 *)
+ let l = Misc.log2 n in
-+ ` sradi {emit_gpr 0}, {emit_reg i.arg.(0)}, {emit_int l}\n`;
-+ ` addze {emit_gpr 0}, {emit_gpr 0}\n`;
-+ ` sldi {emit_gpr 0}, {emit_gpr 0}, {emit_int l}\n`;
-+ ` subfc {emit_reg i.res.(0)}, {emit_gpr 0}, {emit_reg i.arg.(0)}\n`
++ ` sradi {emit_gpr 0}, {emit_reg i.arg.(0)}, {emit_int l}\n`;
++ ` addze {emit_gpr 0}, {emit_gpr 0}\n`;
++ ` sldi {emit_gpr 0}, {emit_gpr 0}, {emit_int l}\n`;
++ ` subfc {emit_reg i.res.(0)}, {emit_gpr 0}, {emit_reg i.arg.(0)}\n`
+ | Lop(Iintop_imm(Icomp cmp, n)) ->
+ begin match cmp with
+ Isigned c ->
-+ ` cmpdi {emit_reg i.arg.(0)}, {emit_int n}\n`;
++ ` cmpdi {emit_reg i.arg.(0)}, {emit_int n}\n`;
+ emit_set_comp c i.res.(0)
+ | Iunsigned c ->
-+ ` cmpldi {emit_reg i.arg.(0)}, {emit_int n}\n`;
++ ` cmpldi {emit_reg i.arg.(0)}, {emit_int n}\n`;
+ emit_set_comp c i.res.(0)
+ end
+ | Lop(Iintop_imm(Icheckbound, n)) ->
-+ ` tdllei {emit_reg i.arg.(0)}, {emit_int n}\n`
++ ` tdllei {emit_reg i.arg.(0)}, {emit_int n}\n`
+ | Lop(Iintop_imm(op, n)) ->
+ let instr = name_for_intop_imm op in
-+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_int n}\n`
++ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_int n}\n`
+ | Lop(Inegf | Iabsf as op) ->
+ let instr = name_for_floatop1 op in
-+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n`
++ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}\n`
+ | Lop(Iaddf | Isubf | Imulf | Idivf as op) ->
+ let instr = name_for_floatop2 op in
-+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
++ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
+ | Lop(Ifloatofint) ->
-+ let ofs = if has_stack_frame() then 16 else 8 * (2 + num_stack_slots.(0) + num_stack_slots.(1)) in
-+ ` std {emit_reg i.arg.(0)}, -{emit_int ofs}({emit_gpr 1})\n`;
-+ ` lfd {emit_reg i.res.(0)}, -{emit_int ofs}({emit_gpr 1})\n`;
-+ ` fcfid {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
++ let ofs = if has_stack_frame() then 16 else 8 * (2 + num_stack_slots.(0) + num_stack_slots.(1)) in
++ ` std {emit_reg i.arg.(0)}, -{emit_int ofs}({emit_gpr 1})\n`;
++ ` lfd {emit_reg i.res.(0)}, -{emit_int ofs}({emit_gpr 1})\n`;
++ ` fcfid {emit_reg i.res.(0)}, {emit_reg i.res.(0)}\n`
+ | Lop(Iintoffloat) ->
-+ let ofs = if has_stack_frame() then 16 else 8 * (2 + num_stack_slots.(0) + num_stack_slots.(1)) in
-+ ` fctidz {emit_fpr 0}, {emit_reg i.arg.(0)}\n`;
-+ ` stfd {emit_fpr 0}, -{emit_int ofs}({emit_gpr 1})\n`;
-+ ` ld {emit_reg i.res.(0)}, -{emit_int ofs}({emit_gpr 1})\n`
++ let ofs = if has_stack_frame() then 16 else 8 * (2 + num_stack_slots.(0) + num_stack_slots.(1)) in
++ ` fctidz {emit_fpr 0}, {emit_reg i.arg.(0)}\n`;
++ ` stfd {emit_fpr 0}, -{emit_int ofs}({emit_gpr 1})\n`;
++ ` ld {emit_reg i.res.(0)}, -{emit_int ofs}({emit_gpr 1})\n`
+ | Lop(Ispecific sop) ->
+ let instr = name_for_specific sop in
-+ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(2)}\n`
++ ` {emit_string instr} {emit_reg i.res.(0)}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(2)}\n`
+ | Lreloadretaddr ->
-+ if has_stack_frame() then begin
-+ ` ld {emit_gpr 11}, {emit_label !stack_size_lbl}+16({emit_gpr 1})\n`;
-+ ` mtlr {emit_gpr 11}\n`
++ if has_stack_frame() then begin
++ ` ld {emit_gpr 11}, {emit_label !stack_size_lbl}+16({emit_gpr 1})\n`;
++ ` mtlr {emit_gpr 11}\n`
+ end
+ | Lreturn ->
-+ if has_stack_frame() then
-+ ` ld {emit_gpr 1}, 0({emit_gpr 1})\n`;
-+ ` blr\n`
++ if has_stack_frame() then
++ ` ld {emit_gpr 1}, 0({emit_gpr 1})\n`;
++ ` blr\n`
+ | Llabel lbl ->
+ `{emit_label lbl}:\n`
+ | Lbranch lbl ->
-+ ` b {emit_label lbl}\n`
++ ` b {emit_label lbl}\n`
+ | Lcondbranch(tst, lbl) ->
+ begin match tst with
+ Itruetest ->
-+ ` cmpdi {emit_reg i.arg.(0)}, 0\n`;
++ ` cmpdi {emit_reg i.arg.(0)}, 0\n`;
+ emit_delay dslot;
-+ ` bne {emit_label lbl}\n`
++ ` bne {emit_label lbl}\n`
+ | Ifalsetest ->
-+ ` cmpdi {emit_reg i.arg.(0)}, 0\n`;
++ ` cmpdi {emit_reg i.arg.(0)}, 0\n`;
+ emit_delay dslot;
-+ ` beq {emit_label lbl}\n`
++ ` beq {emit_label lbl}\n`
+ | Iinttest cmp ->
+ let (comp, branch) = name_for_int_comparison cmp in
-+ ` {emit_string comp} {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
++ ` {emit_string comp} {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
+ emit_delay dslot;
-+ ` {emit_string branch} {emit_label lbl}\n`
++ ` {emit_string branch} {emit_label lbl}\n`
+ | Iinttest_imm(cmp, n) ->
+ let (comp, branch) = name_for_int_comparison cmp in
-+ ` {emit_string comp}i {emit_reg i.arg.(0)}, {emit_int n}\n`;
++ ` {emit_string comp}i {emit_reg i.arg.(0)}, {emit_int n}\n`;
+ emit_delay dslot;
-+ ` {emit_string branch} {emit_label lbl}\n`
++ ` {emit_string branch} {emit_label lbl}\n`
+ | Ifloattest(cmp, neg) ->
-+ ` fcmpu {emit_ccr 0}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
++ ` fcmpu {emit_ccr 0}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`;
+ (* bit 0 = lt, bit 1 = gt, bit 2 = eq *)
+ let (bitnum, negtst) =
+ match cmp with
+ Ceq -> (2, neg)
+ | Cne -> (2, not neg)
-+ | Cle -> ` cror 3, 0, 2\n`; (* lt or eq *)
++ | Cle -> ` cror 3, 0, 2\n`; (* lt or eq *)
+ (3, neg)
+ | Cgt -> (1, neg)
-+ | Cge -> ` cror 3, 1, 2\n`; (* gt or eq *)
++ | Cge -> ` cror 3, 1, 2\n`; (* gt or eq *)
+ (3, neg)
+ | Clt -> (0, neg) in
+ emit_delay dslot;
+ if negtst
-+ then ` bf {emit_int bitnum}, {emit_label lbl}\n`
-+ else ` bt {emit_int bitnum}, {emit_label lbl}\n`
++ then ` bf {emit_int bitnum}, {emit_label lbl}\n`
++ else ` bt {emit_int bitnum}, {emit_label lbl}\n`
+ | Ioddtest ->
-+ ` andi. {emit_gpr 0}, {emit_reg i.arg.(0)}, 1\n`;
++ ` andi. {emit_gpr 0}, {emit_reg i.arg.(0)}, 1\n`;
+ emit_delay dslot;
-+ ` bne {emit_label lbl}\n`
++ ` bne {emit_label lbl}\n`
+ | Ieventest ->
-+ ` andi. {emit_gpr 0}, {emit_reg i.arg.(0)}, 1\n`;
++ ` andi. {emit_gpr 0}, {emit_reg i.arg.(0)}, 1\n`;
+ emit_delay dslot;
-+ ` beq {emit_label lbl}\n`
++ ` beq {emit_label lbl}\n`
+ end
+ | Lcondbranch3(lbl0, lbl1, lbl2) ->
-+ ` cmpdi {emit_reg i.arg.(0)}, 1\n`;
++ ` cmpdi {emit_reg i.arg.(0)}, 1\n`;
+ emit_delay dslot;
+ begin match lbl0 with
+ None -> ()
-+ | Some lbl -> ` blt {emit_label lbl}\n`
++ | Some lbl -> ` blt {emit_label lbl}\n`
+ end;
+ begin match lbl1 with
+ None -> ()
-+ | Some lbl -> ` beq {emit_label lbl}\n`
++ | Some lbl -> ` beq {emit_label lbl}\n`
+ end;
+ begin match lbl2 with
+ None -> ()
-+ | Some lbl -> ` bgt {emit_label lbl}\n`
++ | Some lbl -> ` bgt {emit_label lbl}\n`
+ end
+ | Lswitch jumptbl ->
+ if !lbl_jumptbl = 0 then lbl_jumptbl := new_label();
-+ ` ld {emit_gpr 11}, {emit_tocref (TocLabel !lbl_jumptbl)}\n`;
-+ ` addi {emit_gpr 0}, {emit_reg i.arg.(0)}, {emit_int !num_jumptbl_entries}\n`;
-+ ` sldi {emit_gpr 0}, {emit_gpr 0}, 2\n`;
-+ ` lwax {emit_gpr 0}, {emit_gpr 11}, {emit_gpr 0}\n`;
-+ ` add {emit_gpr 0}, {emit_gpr 11}, {emit_gpr 0}\n`;
-+ ` mtctr {emit_gpr 0}\n`;
-+ ` bctr\n`;
++ ` ld {emit_gpr 11}, {emit_tocref (TocLabel !lbl_jumptbl)}\n`;
++ ` addi {emit_gpr 0}, {emit_reg i.arg.(0)}, {emit_int !num_jumptbl_entries}\n`;
++ ` sldi {emit_gpr 0}, {emit_gpr 0}, 2\n`;
++ ` lwax {emit_gpr 0}, {emit_gpr 11}, {emit_gpr 0}\n`;
++ ` add {emit_gpr 0}, {emit_gpr 11}, {emit_gpr 0}\n`;
++ ` mtctr {emit_gpr 0}\n`;
++ ` bctr\n`;
+ for i = 0 to Array.length jumptbl - 1 do
+ jumptbl_entries := jumptbl.(i) :: !jumptbl_entries;
+ incr num_jumptbl_entries
+ done
+ | Lsetuptrap lbl ->
-+ ` bl {emit_label lbl}\n`;
++ ` bl {emit_label lbl}\n`;
+ | Lpushtrap ->
-+ stack_traps_size := !stack_traps_size + 32;
-+ ` addi {emit_gpr 11}, {emit_gpr 1}, {emit_label !stack_size_lbl}-{emit_int !stack_traps_size}\n`;
-+ ` mflr {emit_gpr 0}\n`;
-+ ` std {emit_gpr 29}, 0({emit_gpr 11})\n`;
-+ ` std {emit_gpr 0}, 8({emit_gpr 11})\n`;
-+ ` std {emit_gpr 1}, 16({emit_gpr 11})\n`;
-+ ` std {emit_gpr 2}, 24({emit_gpr 11})\n`;
-+ ` mr {emit_gpr 29}, {emit_gpr 11}\n`
++ stack_traps_size := !stack_traps_size + 32;
++ ` addi {emit_gpr 11}, {emit_gpr 1}, {emit_label !stack_size_lbl}-{emit_int !stack_traps_size}\n`;
++ ` mflr {emit_gpr 0}\n`;
++ ` std {emit_gpr 29}, 0({emit_gpr 11})\n`;
++ ` std {emit_gpr 0}, 8({emit_gpr 11})\n`;
++ ` std {emit_gpr 1}, 16({emit_gpr 11})\n`;
++ ` std {emit_gpr 2}, 24({emit_gpr 11})\n`;
++ ` mr {emit_gpr 29}, {emit_gpr 11}\n`
+ | Lpoptrap ->
-+ ` ld {emit_gpr 29}, 0({emit_gpr 29})\n`
++ ` ld {emit_gpr 29}, 0({emit_gpr 29})\n`
+ | Lraise ->
-+ ` ld {emit_gpr 0}, 8({emit_gpr 29})\n`;
-+ ` ld {emit_gpr 1}, 16({emit_gpr 29})\n`;
-+ ` ld {emit_gpr 2}, 24({emit_gpr 29})\n`;
-+ ` mtlr {emit_gpr 0}\n`;
-+ ` ld {emit_gpr 29}, 0({emit_gpr 29})\n`;
-+ ` blr\n`
++ ` ld {emit_gpr 0}, 8({emit_gpr 29})\n`;
++ ` ld {emit_gpr 1}, 16({emit_gpr 29})\n`;
++ ` ld {emit_gpr 2}, 24({emit_gpr 29})\n`;
++ ` mtlr {emit_gpr 0}\n`;
++ ` ld {emit_gpr 29}, 0({emit_gpr 29})\n`;
++ ` blr\n`
+
+and emit_delay = function
+ None -> ()
@@ -931,54 +931,54 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ stack_args_size := 0;
+ stack_traps_size := 0;
+ call_gc_label := 0;
-+ ` .globl {emit_symbol fundecl.fun_name}\n`;
++ ` .globl {emit_symbol fundecl.fun_name}\n`;
+ begin match Config.system with
+ | "elf" | "bsd" ->
-+ ` .section \".opd\",\"aw\"\n`;
-+ ` .align 3\n`;
-+ ` .type {emit_symbol fundecl.fun_name}, @function\n`;
++ ` .section \".opd\",\"aw\"\n`;
++ ` .align 3\n`;
++ ` .type {emit_symbol fundecl.fun_name}, @function\n`;
+ `{emit_symbol fundecl.fun_name}:\n`;
-+ ` .quad .L.{emit_symbol fundecl.fun_name},.TOC. at tocbase\n`;
-+ ` .previous\n`;
-+ ` .align 2\n`;
++ ` .quad .L.{emit_symbol fundecl.fun_name},.TOC. at tocbase\n`;
++ ` .previous\n`;
++ ` .align 2\n`;
+ emit_string code_space;
+ `.L.{emit_symbol fundecl.fun_name}:\n`
+ | _ ->
-+ ` .align 2\n`;
++ ` .align 2\n`;
+ emit_string code_space;
+ `{emit_symbol fundecl.fun_name}:\n`
+ end;
+ if !contains_calls then begin
-+ ` mflr {emit_gpr 0}\n`;
-+ ` std {emit_gpr 0}, 16({emit_gpr 1})\n`
++ ` mflr {emit_gpr 0}\n`;
++ ` std {emit_gpr 0}, 16({emit_gpr 1})\n`
+ end;
+ if has_stack_frame() then
-+ ` stdu {emit_gpr 1}, -{emit_label !stack_size_lbl}({emit_gpr 1})\n`;
++ ` stdu {emit_gpr 1}, -{emit_label !stack_size_lbl}({emit_gpr 1})\n`;
+ `{emit_label !tailrec_entry_point}:\n`;
+ branch_normalization fundecl.fun_body;
+ emit_all fundecl.fun_body;
-+ ` .size .L.{emit_symbol fundecl.fun_name}, . - .L.{emit_symbol fundecl.fun_name}\n`;
++ ` .size .L.{emit_symbol fundecl.fun_name}, . - .L.{emit_symbol fundecl.fun_name}\n`;
+ if has_stack_frame() then begin
+ ` .set {emit_label !stack_size_lbl},{emit_int (frame_size_sans_args() + !stack_args_size + !stack_traps_size)} # stack size including traps\n`;
+ ` .set {emit_label !stack_slot_lbl},{emit_int (48 + !stack_args_size)} # stack slot offset\n`
+ end else (* leave 8 bytes for float <-> conversions *)
+ ` .set {emit_label !stack_slot_lbl},{emit_int (40-frame_size_sans_args())} # stack slot offset (negative)\n`;
-+
++
+ (* Emit the glue code to call the GC *)
+ if !call_gc_label > 0 then begin
+ `{emit_label !call_gc_label}:\n`;
-+ ` ld {emit_gpr 12}, {emit_tocref (TocSymOfs ("caml_call_gc",0))}\n`;
-+ ` ld {emit_gpr 12}, 0({emit_gpr 12})\n`;
-+ ` mtctr {emit_gpr 12}\n`;
-+ ` bctr\n`;
++ ` ld {emit_gpr 12}, {emit_tocref (TocSymOfs ("caml_call_gc",0))}\n`;
++ ` ld {emit_gpr 12}, 0({emit_gpr 12})\n`;
++ ` mtctr {emit_gpr 12}\n`;
++ ` bctr\n`;
+ end
+
+(* Emission of data *)
+
+let declare_global_data s =
-+ ` .globl {emit_symbol s}\n`;
++ ` .globl {emit_symbol s}\n`;
+ if Config.system = "elf" || Config.system = "bsd" then
-+ ` .type {emit_symbol s}, @object\n`
++ ` .type {emit_symbol s}, @object\n`
+
+let emit_item = function
+ Cglobal_symbol s ->
@@ -988,27 +988,27 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ | Cdefine_label lbl ->
+ `{emit_label (lbl + 100000)}:\n`
+ | Cint8 n ->
-+ ` .byte {emit_int n}\n`
++ ` .byte {emit_int n}\n`
+ | Cint16 n ->
-+ ` .short {emit_int n}\n`
++ ` .short {emit_int n}\n`
+ | Cint32 n ->
-+ ` .long {emit_nativeint n}\n`
++ ` .long {emit_nativeint n}\n`
+ | Cint n ->
-+ ` .quad {emit_nativeint n}\n`
++ ` .quad {emit_nativeint n}\n`
+ | Csingle f ->
-+ ` .float 0d{emit_string f}\n`
++ ` .float 0d{emit_string f}\n`
+ | Cdouble f ->
-+ ` .double 0d{emit_string f}\n`
++ ` .double 0d{emit_string f}\n`
+ | Csymbol_address s ->
-+ ` .quad {emit_symbol s}\n`
++ ` .quad {emit_symbol s}\n`
+ | Clabel_address lbl ->
-+ ` .quad {emit_label (lbl + 100000)}\n`
++ ` .quad {emit_label (lbl + 100000)}\n`
+ | Cstring s ->
-+ emit_bytes_directive " .byte " s
++ emit_bytes_directive " .byte " s
+ | Cskip n ->
-+ if n > 0 then ` .space {emit_int n}\n`
++ if n > 0 then ` .space {emit_int n}\n`
+ | Calign n ->
-+ ` .align {emit_int (Misc.log2 n)}\n`
++ ` .align {emit_int (Misc.log2 n)}\n`
+
+let data l =
+ emit_string data_space;
@@ -1039,7 +1039,7 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ emit_string code_space;
+ `{emit_label !lbl_jumptbl}:\n`;
+ List.iter
-+ (fun lbl -> ` .long {emit_label lbl} - {emit_label !lbl_jumptbl}\n`)
++ (fun lbl -> ` .long {emit_label lbl} - {emit_label !lbl_jumptbl}\n`)
+ (List.rev !jumptbl_entries);
+ jumptbl_entries := []
+ end;
@@ -1048,11 +1048,11 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ List.iter
+ (fun (lbl, entry) ->
+ `{emit_label lbl}:\n`;
-+ match entry with
++ match entry with
+ TocFloat f ->
-+ ` .double {emit_tocentry entry}\n`
-+ | _ ->
-+ ` .tc {emit_label lbl}[TC],{emit_tocentry entry}\n`
++ ` .double {emit_tocentry entry}\n`
++ | _ ->
++ ` .tc {emit_label lbl}[TC],{emit_tocentry entry}\n`
+ )
+ !tocref_entries;
+ tocref_entries := []
@@ -1065,23 +1065,23 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
+ let lbl_end = Compilenv.make_symbol (Some "code_end") in
+ declare_global_data lbl_end;
+ `{emit_symbol lbl_end}:\n`;
-+ ` .long 0\n`;
++ ` .long 0\n`;
+ emit_string data_space;
+ let lbl_end = Compilenv.make_symbol (Some "data_end") in
+ declare_global_data lbl_end;
+ `{emit_symbol lbl_end}:\n`;
-+ ` .quad 0\n`;
++ ` .quad 0\n`;
+ (* Emit the frame descriptors *)
+ emit_string rodata_space;
+ let lbl = Compilenv.make_symbol (Some "frametable") in
+ declare_global_data lbl;
+ `{emit_symbol lbl}:\n`;
-+ ` .quad {emit_int (List.length !frame_descriptors)}\n`;
++ ` .quad {emit_int (List.length !frame_descriptors)}\n`;
+ List.iter emit_frame !frame_descriptors;
+ frame_descriptors := []
diff -uNr ocaml-3.10.1/asmcomp/power64/proc.ml ocaml-3.10.1.ppc64/asmcomp/power64/proc.ml
---- ocaml-3.10.1/asmcomp/power64/proc.ml 1969-12-31 19:00:00.000000000 -0500
-+++ ocaml-3.10.1.ppc64/asmcomp/power64/proc.ml 2008-02-29 08:37:45.000000000 -0500
+--- ocaml-3.10.1/asmcomp/power64/proc.ml 1969-12-31 19:00:00.000000000 -0500
++++ ocaml-3.10.1.ppc64/asmcomp/power64/proc.ml 2008-02-29 08:37:45.000000000 -0500
@@ -0,0 +1,245 @@
+(***********************************************************************)
+(* *)
@@ -1095,7 +1095,7 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/proc.ml ocaml-3.10.1.ppc64/asmcomp/power6
+(* *)
+(***********************************************************************)
+
-+(* $Id: proc.ml,v 1.12 2004/06/19 17:39:35 xleroy Exp $ *)
++(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *)
+
+(* Description of the Power PC *)
+
@@ -1329,8 +1329,8 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/proc.ml ocaml-3.10.1.ppc64/asmcomp/power6
+open Clflags;;
+open Config;;
diff -uNr ocaml-3.10.1/asmcomp/power64/reload.ml ocaml-3.10.1.ppc64/asmcomp/power64/reload.ml
---- ocaml-3.10.1/asmcomp/power64/reload.ml 1969-12-31 19:00:00.000000000 -0500
-+++ ocaml-3.10.1.ppc64/asmcomp/power64/reload.ml 2008-02-29 08:37:45.000000000 -0500
+--- ocaml-3.10.1/asmcomp/power64/reload.ml 1969-12-31 19:00:00.000000000 -0500
++++ ocaml-3.10.1.ppc64/asmcomp/power64/reload.ml 2008-02-29 08:37:45.000000000 -0500
@@ -0,0 +1,18 @@
+(***********************************************************************)
+(* *)
@@ -1344,15 +1344,15 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/reload.ml ocaml-3.10.1.ppc64/asmcomp/powe
+(* *)
+(***********************************************************************)
+
-+(* $Id: reload.ml,v 1.3 1999/11/17 18:56:46 xleroy Exp $ *)
++(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *)
+
+(* Reloading for the PowerPC *)
+
+let fundecl f =
+ (new Reloadgen.reload_generic)#fundecl f
diff -uNr ocaml-3.10.1/asmcomp/power64/scheduling.ml ocaml-3.10.1.ppc64/asmcomp/power64/scheduling.ml
---- ocaml-3.10.1/asmcomp/power64/scheduling.ml 1969-12-31 19:00:00.000000000 -0500
-+++ ocaml-3.10.1.ppc64/asmcomp/power64/scheduling.ml 2008-02-29 08:37:45.000000000 -0500
+--- ocaml-3.10.1/asmcomp/power64/scheduling.ml 1969-12-31 19:00:00.000000000 -0500
++++ ocaml-3.10.1.ppc64/asmcomp/power64/scheduling.ml 2008-02-29 08:37:45.000000000 -0500
@@ -0,0 +1,66 @@
+(***********************************************************************)
+(* *)
@@ -1366,7 +1366,7 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/scheduling.ml ocaml-3.10.1.ppc64/asmcomp/
+(* *)
+(***********************************************************************)
+
-+(* $Id: scheduling.ml,v 1.6 2004/06/19 16:13:33 xleroy Exp $ *)
++(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *)
+
+(* Instruction scheduling for the Power PC *)
+
@@ -1421,8 +1421,8 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/scheduling.ml ocaml-3.10.1.ppc64/asmcomp/
+let fundecl f = (new scheduler)#schedule_fundecl f
+
diff -uNr ocaml-3.10.1/asmcomp/power64/selection.ml ocaml-3.10.1.ppc64/asmcomp/power64/selection.ml
---- ocaml-3.10.1/asmcomp/power64/selection.ml 1969-12-31 19:00:00.000000000 -0500
-+++ ocaml-3.10.1.ppc64/asmcomp/power64/selection.ml 2008-02-29 08:37:45.000000000 -0500
+--- ocaml-3.10.1/asmcomp/power64/selection.ml 1969-12-31 19:00:00.000000000 -0500
++++ ocaml-3.10.1.ppc64/asmcomp/power64/selection.ml 2008-02-29 08:37:45.000000000 -0500
@@ -0,0 +1,103 @@
+(***********************************************************************)
+(* *)
@@ -1436,7 +1436,7 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/selection.ml ocaml-3.10.1.ppc64/asmcomp/p
+(* *)
+(***********************************************************************)
+
-+(* $Id: selection.ml,v 1.6 2004/06/19 16:13:33 xleroy Exp $ *)
++(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *)
+
+(* Instruction selection for the Power PC processor *)
+
@@ -1528,11 +1528,11 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/selection.ml ocaml-3.10.1.ppc64/asmcomp/p
+
+let fundecl f = (new selector)#emit_fundecl f
diff -uNr ocaml-3.10.1/asmrun/Makefile ocaml-3.10.1.ppc64/asmrun/Makefile
---- ocaml-3.10.1/asmrun/Makefile 2007-02-23 04:29:45.000000000 -0500
-+++ ocaml-3.10.1.ppc64/asmrun/Makefile 2008-02-29 08:37:45.000000000 -0500
+--- ocaml-3.10.1/asmrun/Makefile 2007-02-23 04:29:45.000000000 -0500
++++ ocaml-3.10.1.ppc64/asmrun/Makefile 2008-02-29 08:37:45.000000000 -0500
@@ -74,6 +74,12 @@
power.p.o: power-$(SYSTEM).o
- cp power-$(SYSTEM).o power.p.o
+ cp power-$(SYSTEM).o power.p.o
+power64.o: power64-$(SYSTEM).o
+ cp power64-$(SYSTEM).o power64.o
@@ -1541,11 +1541,11 @@ diff -uNr ocaml-3.10.1/asmrun/Makefile ocaml-3.10.1.ppc64/asmrun/Makefile
+ cp power64-$(SYSTEM).o power64.p.o
+
main.c: ../byterun/main.c
- ln -s ../byterun/main.c main.c
+ ln -s ../byterun/main.c main.c
misc.c: ../byterun/misc.c
diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-elf.S
---- ocaml-3.10.1/asmrun/power64-elf.S 1969-12-31 19:00:00.000000000 -0500
-+++ ocaml-3.10.1.ppc64/asmrun/power64-elf.S 2008-02-29 08:37:45.000000000 -0500
+--- ocaml-3.10.1/asmrun/power64-elf.S 1969-12-31 19:00:00.000000000 -0500
++++ ocaml-3.10.1.ppc64/asmrun/power64-elf.S 2008-02-29 08:37:45.000000000 -0500
@@ -0,0 +1,486 @@
+/*********************************************************************/
+/* */
@@ -1560,7 +1560,7 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+/* */
+/*********************************************************************/
+
-+/* $Id: power-elf.S,v 1.18 2004/01/03 12:51:19 doligez Exp $ */
++/* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ */
+
+#define Addrglobal(reg,glob) \
+ addis reg, 0, glob at ha; \
@@ -1578,16 +1578,16 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+
+ .globl caml_call_gc
+ .type caml_call_gc, @function
-+ .section ".opd","aw"
-+ .align 3
++ .section ".opd","aw"
++ .align 3
+caml_call_gc:
-+ .quad .L.caml_call_gc,.TOC. at tocbase
-+ .previous
-+ .align 2
++ .quad .L.caml_call_gc,.TOC. at tocbase
++ .previous
++ .align 2
+.L.caml_call_gc:
+ /* Set up stack frame */
+ mflr 0
-+ std 0, 16(1)
++ std 0, 16(1)
+ /* Record return address into Caml code */
+ Storeglobal(0, caml_last_return_address, 11)
+ /* Record lowest stack address */
@@ -1659,13 +1659,13 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+ stfdu 30, 8(11)
+ stfdu 31, 8(11)
+ /* Call the GC */
-+ std 2,40(1)
++ std 2,40(1)
+ Addrglobal(11, caml_garbage_collection)
-+ ld 2,8(11)
-+ ld 11,0(11)
-+ mtlr 11
++ ld 2,8(11)
++ ld 11,0(11)
++ mtlr 11
+ blrl
-+ ld 2,40(1)
++ ld 2,40(1)
+ /* Reload new allocation pointer and allocation limit */
+ Loadglobal(31, caml_young_ptr, 11)
+ Loadglobal(30, caml_young_limit, 11)
@@ -1734,29 +1734,29 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+ li 12, 0
+ Storeglobal(12, caml_last_return_address, 11)
+ /* Deallocate stack frame */
-+ ld 1, 0(1)
++ ld 1, 0(1)
+ /* Return */
+ blr
-+ .size .L.caml_call_gc,.-.L.caml_call_gc
-+
++ .size .L.caml_call_gc,.-.L.caml_call_gc
++
+/* Call a C function from Caml */
+
+ .globl caml_c_call
+ .type caml_c_call, @function
-+ .section ".opd","aw"
-+ .align 3
++ .section ".opd","aw"
++ .align 3
+caml_c_call:
-+ .quad .L.caml_c_call,.TOC. at tocbase
-+ .previous
-+ .align 2
++ .quad .L.caml_c_call,.TOC. at tocbase
++ .previous
++ .align 2
+.L.caml_c_call:
-+ .cfi_startproc
++ .cfi_startproc
+ /* Save return address */
+ mflr 25
-+ .cfi_register lr,25
++ .cfi_register lr,25
+ /* Get ready to call C function (address in 11) */
-+ ld 2, 8(11)
-+ ld 11,0(11)
++ ld 2, 8(11)
++ ld 11,0(11)
+ mtlr 11
+ /* Record lowest stack address and return address */
+ Storeglobal(1, caml_bottom_of_stack, 12)
@@ -1777,18 +1777,18 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+ /* Return to caller */
+ blr
+ .cfi_endproc
-+ .size .L.caml_c_call,.-.L.caml_c_call
-+
++ .size .L.caml_c_call,.-.L.caml_c_call
++
+/* Raise an exception from C */
+
+ .globl caml_raise_exception
+ .type caml_raise_exception, @function
-+ .section ".opd","aw"
-+ .align 3
++ .section ".opd","aw"
++ .align 3
+caml_raise_exception:
-+ .quad .L.caml_raise_exception,.TOC. at tocbase
-+ .previous
-+ .align 2
++ .quad .L.caml_raise_exception,.TOC. at tocbase
++ .previous
++ .align 2
+.L.caml_raise_exception:
+ /* Reload Caml global registers */
+ Loadglobal(29, caml_exception_pointer, 11)
@@ -1798,25 +1798,25 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+ li 0, 0
+ Storeglobal(0, caml_last_return_address, 11)
+ /* Pop trap frame */
-+ ld 0, 8(29)
-+ ld 1, 16(29)
++ ld 0, 8(29)
++ ld 1, 16(29)
+ mtlr 0
-+ ld 2, 24(29)
-+ ld 29, 0(29)
++ ld 2, 24(29)
++ ld 29, 0(29)
+ /* Branch to handler */
+ blr
-+ .size .L.caml_raise_exception,.-.L.caml_raise_exception
-+
++ .size .L.caml_raise_exception,.-.L.caml_raise_exception
++
+/* Start the Caml program */
+
+ .globl caml_start_program
+ .type caml_start_program, @function
-+ .section ".opd","aw"
-+ .align 3
++ .section ".opd","aw"
++ .align 3
+caml_start_program:
-+ .quad .L.caml_start_program,.TOC. at tocbase
-+ .previous
-+ .align 2
++ .quad .L.caml_start_program,.TOC. at tocbase
++ .previous
++ .align 2
+.L.caml_start_program:
+ Addrglobal(12, caml_program)
+
@@ -1879,9 +1879,9 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+.L103:
+ mflr 0
+ addi 29, 1, 0x170 /* Alignment */
-+ std 0, 8(29)
-+ std 1, 16(29)
-+ std 2, 24(29)
++ std 0, 8(29)
++ std 1, 16(29)
++ std 2, 24(29)
+ Loadglobal(11, caml_exception_pointer, 11)
+ std 11, 0(29)
+ /* Reload allocation pointers */
@@ -1891,15 +1891,15 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+ li 0, 0
+ Storeglobal(0, caml_last_return_address, 11)
+ /* Call the Caml code */
-+ std 2,40(1)
-+ ld 2,8(12)
-+ ld 12,0(12)
++ std 2,40(1)
++ ld 2,8(12)
++ ld 12,0(12)
+ mtlr 12
+.L105:
+ blrl
-+ ld 2,40(1)
++ ld 2,40(1)
+ /* Pop the trap frame, restoring caml_exception_pointer */
-+ ld 9, 0x170(1)
++ ld 9, 0x170(1)
+ Storeglobal(9, caml_exception_pointer, 11)
+ /* Pop the callback link, restoring the global variables */
+.L106:
@@ -1950,7 +1950,7 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+ lfdu 30, 8(11)
+ lfdu 31, 8(11)
+ /* Return */
-+ ld 1,0(1)
++ ld 1,0(1)
+ /* Reload return address */
+ ld 0, 16(1)
+ mtlr 0
@@ -1963,18 +1963,18 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+ /* Encode exception bucket as an exception result and return it */
+ ori 3, 3, 2
+ b .L106
-+ .size .L.caml_start_program,.-.L.caml_start_program
-+
++ .size .L.caml_start_program,.-.L.caml_start_program
++
+/* Callback from C to Caml */
+
+ .globl caml_callback_exn
+ .type caml_callback_exn, @function
-+ .section ".opd","aw"
-+ .align 3
++ .section ".opd","aw"
++ .align 3
+caml_callback_exn:
-+ .quad .L.caml_callback_exn,.TOC. at tocbase
-+ .previous
-+ .align 2
++ .quad .L.caml_callback_exn,.TOC. at tocbase
++ .previous
++ .align 2
+.L.caml_callback_exn:
+ /* Initial shuffling of arguments */
+ mr 0, 3 /* Closure */
@@ -1982,17 +1982,17 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+ mr 4, 0
+ ld 12, 0(4) /* Code pointer */
+ b .L102
-+ .size .L.caml_callback_exn,.-.L.caml_callback_exn
++ .size .L.caml_callback_exn,.-.L.caml_callback_exn
+
-+
++
+ .globl caml_callback2_exn
+ .type caml_callback2_exn, @function
-+ .section ".opd","aw"
-+ .align 3
++ .section ".opd","aw"
++ .align 3
+caml_callback2_exn:
-+ .quad .L.caml_callback2_exn,.TOC. at tocbase
-+ .previous
-+ .align 2
++ .quad .L.caml_callback2_exn,.TOC. at tocbase
++ .previous
++ .align 2
+.L.caml_callback2_exn:
+ mr 0, 3 /* Closure */
+ mr 3, 4 /* First argument */
@@ -2000,17 +2000,17 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+ mr 5, 0
+ Addrglobal(12, caml_apply2)
+ b .L102
-+ .size .L.caml_callback2_exn,.-.L.caml_callback2_exn
++ .size .L.caml_callback2_exn,.-.L.caml_callback2_exn
+
-+
++
+ .globl caml_callback3_exn
+ .type caml_callback3_exn, @function
-+ .section ".opd","aw"
-+ .align 3
++ .section ".opd","aw"
++ .align 3
+caml_callback3_exn:
-+ .quad .L.caml_callback3_exn,.TOC. at tocbase
-+ .previous
-+ .align 2
++ .quad .L.caml_callback3_exn,.TOC. at tocbase
++ .previous
++ .align 2
+.L.caml_callback3_exn:
+ mr 0, 3 /* Closure */
+ mr 3, 4 /* First argument */
@@ -2019,8 +2019,8 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+ mr 6, 0
+ Addrglobal(12, caml_apply3)
+ b .L102
-+ .size .L.caml_callback3_exn,.-.L.caml_callback3_exn
-+
++ .size .L.caml_callback3_exn,.-.L.caml_callback3_exn
++
+/* Frame table */
+
+ .section ".data"
@@ -2034,8 +2034,8 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
+ .align 3
+
diff -uNr ocaml-3.10.1/asmrun/stack.h ocaml-3.10.1.ppc64/asmrun/stack.h
---- ocaml-3.10.1/asmrun/stack.h 2007-02-15 13:35:20.000000000 -0500
-+++ ocaml-3.10.1.ppc64/asmrun/stack.h 2008-02-29 08:37:45.000000000 -0500
+--- ocaml-3.10.1/asmrun/stack.h 2007-02-15 13:35:20.000000000 -0500
++++ ocaml-3.10.1.ppc64/asmrun/stack.h 2008-02-29 08:37:45.000000000 -0500
@@ -65,6 +65,15 @@
#define Callback_link(sp) ((struct caml_context *)((sp) + Trap_frame_size))
#endif
@@ -2053,8 +2053,8 @@ diff -uNr ocaml-3.10.1/asmrun/stack.h ocaml-3.10.1.ppc64/asmrun/stack.h
#define Saved_return_address(sp) *((intnat *)((sp) - 4))
#define Callback_link(sp) ((struct caml_context *)((sp) + 8))
diff -uNr ocaml-3.11.0+beta1/configure ocaml-3.11.0+beta1.ppc64/configure
---- ocaml-3.11.0+beta1/configure.ppc64 2008-11-18 15:46:57.000000000 +0000
-+++ ocaml-3.11.0+beta1/configure 2008-11-18 15:49:19.000000000 +0000
+--- ocaml-3.11.0+beta1/configure.ppc64 2008-11-18 15:46:57.000000000 +0000
++++ ocaml-3.11.0+beta1/configure 2008-11-18 15:49:19.000000000 +0000
@@ -632,6 +632,7 @@
hppa2.0*-*-hpux*) arch=hppa; system=hpux;;
hppa*-*-linux*) arch=hppa; system=linux;;
@@ -2077,7 +2077,7 @@ diff -uNr ocaml-3.11.0+beta1/configure ocaml-3.11.0+beta1.ppc64/configure
power,*,elf) as='as -u -m ppc'
aspp='gcc -c';;
+ power64,*,elf) as='as -u -m ppc64'
-+ aspp='gcc -c';;
++ aspp='gcc -c';;
power,*,bsd) as='as'
aspp='gcc -c';;
power,*,rhapsody) as="as -arch $model"
diff --git a/sources b/sources
index f89eb5c..6fa5ccc 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
869ba6758a773c4218461f14f6ebcb4e cmigrep-1.5.tar.bz2
-121dd62a03bbb1dfb3fb56e3a4bda874 ocaml-3.11.2+rc1.tar.bz2
+814a047085f0f901ab7d8e3a4b7a9e65 ocaml-3.12.1.tar.gz
More information about the scm-commits
mailing list