From f3cfaea67e0c750faf3bcd635a756c1a54329c29 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 30 May 2012 12:46:08 +0200 Subject: [PATCH] - Modify the ppc64 patch to reduce the delta between power64 and upstream power backends. Note there is no functional change. --- ...amlplugininfo-Useful-utilities-from-.patch | 4 +- ...ig.guess-and-config.sub-replacements.patch | 4 +- 0003-Don-t-add-rpaths-to-libraries.patch | 4 +- ...-Allow-user-defined-C-compiler-flags.patch | 4 +- ...add-.type-directive-for-code-symbols.patch | 4 +- 0006-Add-support-for-ppc64.patch | 66 +++++++++---------- ...d-written-by-Benedikt-Meurer-PR-5433.patch | 10 +-- ocaml.spec | 6 +- 8 files changed, 50 insertions(+), 52 deletions(-) diff --git a/0001-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch b/0001-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch index 8fa0e85..310f81c 100644 --- a/0001-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch +++ b/0001-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch @@ -9,7 +9,7 @@ http://git.debian.org/?p=pkg-ocaml-maint/packages/ocaml.git;a=tree;f=debian/ocam --- ocamlbyteinfo.ml | 101 ++++++++++++++++++++++++++++++++++++++++++++++++ ocamlplugininfo.ml | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 210 insertions(+) + 2 files changed, 210 insertions(+), 0 deletions(-) create mode 100644 ocamlbyteinfo.ml create mode 100644 ocamlplugininfo.ml @@ -236,5 +236,5 @@ index 0000000..e28800f + header.units + end -- -1.7.10 +1.7.7.6 diff --git a/0002-GNU-config.guess-and-config.sub-replacements.patch b/0002-GNU-config.guess-and-config.sub-replacements.patch index 318422f..2d54028 100644 --- a/0002-GNU-config.guess-and-config.sub-replacements.patch +++ b/0002-GNU-config.guess-and-config.sub-replacements.patch @@ -7,7 +7,7 @@ The ones supplied by upstream OCaml are 8 years old. These newer versions recognize arm properly. --- config/gnu/config.guess | 1037 +++++++++++++++++++++++++---------------------- - config/gnu/config.sub | 424 ++++++++++++++----- + config/gnu/config.sub | 424 +++++++++++++++----- 2 files changed, 876 insertions(+), 585 deletions(-) diff --git a/config/gnu/config.guess b/config/gnu/config.guess @@ -2579,5 +2579,5 @@ index d2e3557..e76eaf4 100755 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) -- -1.7.10 +1.7.7.6 diff --git a/0003-Don-t-add-rpaths-to-libraries.patch b/0003-Don-t-add-rpaths-to-libraries.patch index eedc190..7a94fb4 100644 --- a/0003-Don-t-add-rpaths-to-libraries.patch +++ b/0003-Don-t-add-rpaths-to-libraries.patch @@ -5,7 +5,7 @@ Subject: [PATCH 3/7] Don't add rpaths to libraries. --- tools/Makefile.shared | 3 --- - 1 file changed, 3 deletions(-) + 1 files changed, 0 insertions(+), 3 deletions(-) diff --git a/tools/Makefile.shared b/tools/Makefile.shared index 247575a..05de46c 100644 @@ -22,5 +22,5 @@ index 247575a..05de46c 100644 ocamlmklib.mlp >> ocamlmklib.ml -- -1.7.10 +1.7.7.6 diff --git a/0004-configure-Allow-user-defined-C-compiler-flags.patch b/0004-configure-Allow-user-defined-C-compiler-flags.patch index c209644..63ec5ad 100644 --- a/0004-configure-Allow-user-defined-C-compiler-flags.patch +++ b/0004-configure-Allow-user-defined-C-compiler-flags.patch @@ -5,7 +5,7 @@ Subject: [PATCH 4/7] configure: Allow user defined C compiler flags. --- configure | 4 ++++ - 1 file changed, 4 insertions(+) + 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/configure b/configure index 9be5199..d0a6b0f 100755 @@ -23,5 +23,5 @@ index 9be5199..d0a6b0f 100755 cclibs="$cclibs $mathlib" -- -1.7.10 +1.7.7.6 diff --git a/0005-ocamlopt-arm-add-.type-directive-for-code-symbols.patch b/0005-ocamlopt-arm-add-.type-directive-for-code-symbols.patch index 3493142..2d42545 100644 --- a/0005-ocamlopt-arm-add-.type-directive-for-code-symbols.patch +++ b/0005-ocamlopt-arm-add-.type-directive-for-code-symbols.patch @@ -9,7 +9,7 @@ Signed-off-by: Stephane Glondu --- asmcomp/arm/emit.mlp | 1 + asmrun/arm.S | 12 ++++++++++++ - 2 files changed, 13 insertions(+) + 2 files changed, 13 insertions(+), 0 deletions(-) diff --git a/asmcomp/arm/emit.mlp b/asmcomp/arm/emit.mlp index 2003313..a4b2241 100644 @@ -124,5 +124,5 @@ index 164f731..1313e9c 100644 /* Load address of [caml_array_bound_error] in r12 */ ldr r12, .Lcaml_array_bound_error -- -1.7.10 +1.7.7.6 diff --git a/0006-Add-support-for-ppc64.patch b/0006-Add-support-for-ppc64.patch index f9b0dde..37173b6 100644 --- a/0006-Add-support-for-ppc64.patch +++ b/0006-Add-support-for-ppc64.patch @@ -1,4 +1,4 @@ -From a9648ff01cea44e6892663e97c3c388686b4fcd7 Mon Sep 17 00:00:00 2001 +From 07d6360922923ddfa2fe7ff745bed5da27f98e05 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 29 May 2012 20:47:07 +0100 Subject: [PATCH 6/7] Add support for ppc64. @@ -9,20 +9,20 @@ appropriate hardware for testing. Note (2): Upstream powerpc directory has some support for ppc64, but only for Macs, and I couldn't get it to work at all with IBM hardware. -This patch was collaborated on by several people, most notably David -Woodhouse. +This patch was collaborated on by several people, most notably +David Woodhouse. --- - asmcomp/power64/arch.ml | 84 ++++ + asmcomp/power64/arch.ml | 83 ++++ asmcomp/power64/emit.mlp | 989 +++++++++++++++++++++++++++++++++++++++++ - asmcomp/power64/proc.ml | 245 ++++++++++ + asmcomp/power64/proc.ml | 241 ++++++++++ asmcomp/power64/reload.ml | 18 + - asmcomp/power64/scheduling.ml | 66 +++ + asmcomp/power64/scheduling.ml | 65 +++ asmcomp/power64/selection.ml | 103 +++++ asmrun/Makefile | 6 + asmrun/power64-elf.S | 486 ++++++++++++++++++++ asmrun/stack.h | 9 + configure | 5 +- - 10 files changed, 2010 insertions(+), 1 deletion(-) + 10 files changed, 2004 insertions(+), 1 deletions(-) create mode 100644 asmcomp/power64/arch.ml create mode 100644 asmcomp/power64/emit.mlp create mode 100644 asmcomp/power64/proc.ml @@ -33,10 +33,10 @@ Woodhouse. diff --git a/asmcomp/power64/arch.ml b/asmcomp/power64/arch.ml new file mode 100644 -index 0000000..93b5b18 +index 0000000..55dd593 --- /dev/null +++ b/asmcomp/power64/arch.ml -@@ -0,0 +1,84 @@ +@@ -0,0 +1,83 @@ +(***********************************************************************) +(* *) +(* Objective Caml *) @@ -49,7 +49,7 @@ index 0000000..93b5b18 +(* *) +(***********************************************************************) + -+(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *) ++(* $Id: arch.ml 9547 2010-01-22 12:48:24Z doligez $ *) + +(* Specific operations for the PowerPC processor *) + @@ -79,7 +79,7 @@ index 0000000..93b5b18 +let big_endian = true + +let size_addr = 8 -+let size_int = 8 ++let size_int = size_addr +let size_float = 8 + +(* Operations on addressing modes *) @@ -120,10 +120,9 @@ index 0000000..93b5b18 + printreg arg.(0) printreg arg.(1) printreg arg.(2) + | Ialloc_far n -> + fprintf ppf "alloc_far %d" n -+ diff --git a/asmcomp/power64/emit.mlp b/asmcomp/power64/emit.mlp new file mode 100644 -index 0000000..95eb193 +index 0000000..ba54e99 --- /dev/null +++ b/asmcomp/power64/emit.mlp @@ -0,0 +1,989 @@ @@ -139,7 +138,7 @@ index 0000000..95eb193 +(* *) +(***********************************************************************) + -+(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *) ++(* $Id: emit.mlp 9547 2010-01-22 12:48:24Z doligez $ *) + +(* Emission of PowerPC assembly code *) + @@ -1118,10 +1117,10 @@ index 0000000..95eb193 + frame_descriptors := [] diff --git a/asmcomp/power64/proc.ml b/asmcomp/power64/proc.ml new file mode 100644 -index 0000000..95bf6c4 +index 0000000..67f26ab --- /dev/null +++ b/asmcomp/power64/proc.ml -@@ -0,0 +1,245 @@ +@@ -0,0 +1,241 @@ +(***********************************************************************) +(* *) +(* Objective Caml *) @@ -1134,7 +1133,7 @@ index 0000000..95bf6c4 +(* *) +(***********************************************************************) + -+(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *) ++(* $Id: proc.ml 9547 2010-01-22 12:48:24Z doligez $ *) + +(* Description of the Power PC *) + @@ -1242,7 +1241,7 @@ index 0000000..95bf6c4 + end else begin + loc.(i) <- stack_slot (make_stack !ofs) ty; + end; -+ ofs := !ofs + 8 ++ ofs := !ofs + size_int + | Float -> + if !float <= last_float then begin + loc.(i) <- phys_reg !float; @@ -1250,7 +1249,7 @@ index 0000000..95bf6c4 + end else begin + loc.(i) <- stack_slot (make_stack !ofs) Float; + end; -+ ofs := !ofs + 8 ++ ofs := !ofs + size_float + done; + (loc, Misc.align !ofs 16) + (* Keep stack 16-aligned. *) @@ -1286,7 +1285,7 @@ index 0000000..95bf6c4 + let loc = Array.create (Array.length arg) Reg.dummy in + let int = ref first_int in + let float = ref first_float in -+ let ofs = ref 112 in ++ let ofs = ref (14 * size_addr) in + for i = 0 to Array.length arg - 1 do + match arg.(i).typ with + Int | Addr as ty -> @@ -1358,18 +1357,14 @@ index 0000000..95bf6c4 +(* Calling the assembler *) + +let assemble_file infile outfile = -+ let infile = Filename.quote infile -+ and outfile = Filename.quote outfile in -+ match Config.system with -+ | "elf" -> -+ Ccomp.command ("as -u -m ppc64 -o " ^ outfile ^ " " ^ infile) -+ | _ -> assert false ++ Ccomp.command (Config.asm ^ " -o " ^ ++ Filename.quote outfile ^ " " ^ Filename.quote infile) + +open Clflags;; +open Config;; diff --git a/asmcomp/power64/reload.ml b/asmcomp/power64/reload.ml new file mode 100644 -index 0000000..42d5d4d +index 0000000..abcac6c --- /dev/null +++ b/asmcomp/power64/reload.ml @@ -0,0 +1,18 @@ @@ -1385,7 +1380,7 @@ index 0000000..42d5d4d +(* *) +(***********************************************************************) + -+(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *) ++(* $Id: reload.ml 2553 1999-11-17 18:59:06Z xleroy $ *) + +(* Reloading for the PowerPC *) + @@ -1393,10 +1388,10 @@ index 0000000..42d5d4d + (new Reloadgen.reload_generic)#fundecl f diff --git a/asmcomp/power64/scheduling.ml b/asmcomp/power64/scheduling.ml new file mode 100644 -index 0000000..d73e333 +index 0000000..b7bba9b --- /dev/null +++ b/asmcomp/power64/scheduling.ml -@@ -0,0 +1,66 @@ +@@ -0,0 +1,65 @@ +(***********************************************************************) +(* *) +(* Objective Caml *) @@ -1409,7 +1404,7 @@ index 0000000..d73e333 +(* *) +(***********************************************************************) + -+(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *) ++(* $Id: scheduling.ml 9547 2010-01-22 12:48:24Z doligez $ *) + +(* Instruction scheduling for the Power PC *) + @@ -1462,10 +1457,9 @@ index 0000000..d73e333 +end + +let fundecl f = (new scheduler)#schedule_fundecl f -+ diff --git a/asmcomp/power64/selection.ml b/asmcomp/power64/selection.ml new file mode 100644 -index 0000000..afc7649 +index 0000000..7b8e2a4 --- /dev/null +++ b/asmcomp/power64/selection.ml @@ -0,0 +1,103 @@ @@ -1481,7 +1475,7 @@ index 0000000..afc7649 +(* *) +(***********************************************************************) + -+(* $Id: ocaml-3.11.0-ppc64.patch,v 1.1 2008/11/20 15:30:55 rjones Exp $ *) ++(* $Id: selection.ml 10296 2010-04-22 12:51:06Z xleroy $ *) + +(* Instruction selection for the Power PC processor *) + @@ -1534,7 +1528,7 @@ index 0000000..afc7649 + then (Iindexed2, Ctuple[e1; e2]) + else (Iindexed d, Cop(Cadda, [e1; e2])) + -+method select_operation op args = ++method! select_operation op args = + match (op, args) with + (* Prevent the recognition of (x / cst) and (x % cst) when cst is not + a power of 2, which do not correspond to an instruction. *) @@ -2132,5 +2126,5 @@ index d0a6b0f..6ed0a9c 100755 aspp='gcc -c';; power,*,rhapsody) as="as -arch $model" -- -1.7.10 +1.7.7.6 diff --git a/0007-New-ARM-backend-written-by-Benedikt-Meurer-PR-5433.patch b/0007-New-ARM-backend-written-by-Benedikt-Meurer-PR-5433.patch index 852579a..b826f11 100644 --- a/0007-New-ARM-backend-written-by-Benedikt-Meurer-PR-5433.patch +++ b/0007-New-ARM-backend-written-by-Benedikt-Meurer-PR-5433.patch @@ -1,4 +1,4 @@ -From 03318d9e7ef402f137dd100fe31bd01c37c1b94f Mon Sep 17 00:00:00 2001 +From 5017142a41b2ea9b81d41ff7d513847b9df7bae9 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 29 May 2012 20:50:42 +0100 Subject: [PATCH 7/7] New ARM backend, written by Benedikt Meurer (PR#5433). @@ -8,9 +8,9 @@ Backported from upstream sources to 3.12.1 by RWMJ. asmcomp/amd64/selection.ml | 14 +- asmcomp/arm/arch.ml | 152 +++++++- asmcomp/arm/emit.mlp | 850 ++++++++++++++++++++++++++++-------------- - asmcomp/arm/proc.ml | 185 ++++++--- + asmcomp/arm/proc.ml | 185 +++++++--- asmcomp/arm/reload.ml | 4 +- - asmcomp/arm/scheduling.ml | 80 ++-- + asmcomp/arm/scheduling.ml | 80 +++-- asmcomp/arm/selection.ml | 343 ++++++++++------- asmcomp/i386/selection.ml | 14 +- asmcomp/power/selection.ml | 2 +- @@ -2291,7 +2291,7 @@ index ed15efb..0532d6b 100644 (Asymbol s, d) -> (Ibased(s, d), Ctuple []) diff --git a/asmcomp/power64/selection.ml b/asmcomp/power64/selection.ml -index afc7649..18b5318 100644 +index 7b8e2a4..d2325e1 100644 --- a/asmcomp/power64/selection.ml +++ b/asmcomp/power64/selection.ml @@ -52,7 +52,7 @@ inherit Selectgen.selector_generic as super @@ -3092,5 +3092,5 @@ index 6ed0a9c..4e07c92 100755 esac -- -1.7.10 +1.7.7.6 diff --git a/ocaml.spec b/ocaml.spec index 6dec677..bbf2669 100644 --- a/ocaml.spec +++ b/ocaml.spec @@ -2,7 +2,7 @@ Name: ocaml Version: 3.12.1 -Release: 6%{?dist} +Release: 8%{?dist} Summary: Objective Caml compiler and programming environment @@ -504,6 +504,10 @@ fi %changelog +* Wed May 29 2012 Richard W.M. Jones 3.12.1-8 +- Modify the ppc64 patch to reduce the delta between power64 and + upstream power backends. Note there is no functional change. + * Tue May 29 2012 Richard W.M. Jones 3.12.1-6 - Move patches to external git repo: http://git.fedorahosted.org/git/?p=fedora-ocaml.git