[ocaml/f17] Move patches to external git repo.

Richard W.M. Jones rjones at fedoraproject.org
Sun Jun 3 22:06:11 UTC 2012


commit 18e1a006efd86867052bccd4b4cbff67568534da
Author: Richard W.M. Jones <rjones at redhat.com>
Date:   Tue May 29 22:44:10 2012 +0100

    Move patches to external git repo.
    
    http://git.fedorahosted.org/git/?p=fedora-ocaml.git
    (cherry picked from commit a07112286bf310652eb2d719e64bf4936a045bc1)

 ...fo-ocamlplugininfo-Useful-utilities-from-.patch |  240 ++
 ...-config.guess-and-config.sub-replacements.patch | 2583 ++++++++++++++++++++
 0003-Don-t-add-rpaths-to-libraries.patch           |   26 +
 ...igure-Allow-user-defined-C-compiler-flags.patch |   27 +
 ...-arm-add-.type-directive-for-code-symbols.patch |    9 +-
 ...ppc64.patch => 0006-Add-support-for-ppc64.patch |  125 +-
 ...ackend-written-by-Benedikt-Meurer-PR-5433.patch |  349 ++--
 config.guess                                       | 1522 ------------
 config.sub                                         | 1771 --------------
 ocaml-3.12-ppc.patch                               |   12 -
 ocaml-3.12.0-rpath.patch                           |   13 -
 ocaml-rpath.patch                                  |   12 -
 ocaml-user-cflags.patch                            |   13 -
 ocaml.spec                                         |   72 +-
 ocamlbyteinfo.ml                                   |  101 -
 ocamlplugininfo.ml                                 |  109 -
 16 files changed, 3206 insertions(+), 3778 deletions(-)
---
diff --git a/0001-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch b/0001-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch
new file mode 100644
index 0000000..8fa0e85
--- /dev/null
+++ b/0001-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch
@@ -0,0 +1,240 @@
+From 0f3d9e1188a765390ac21b6204c66765c1cad8f0 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones at redhat.com>
+Date: Tue, 29 May 2012 20:40:36 +0100
+Subject: [PATCH 1/7] ocamlbyteinfo, ocamlplugininfo: Useful utilities from
+ Debian, sent upstream.
+
+See:
+http://git.debian.org/?p=pkg-ocaml-maint/packages/ocaml.git;a=tree;f=debian/ocamlbyteinfo;hb=HEAD
+---
+ ocamlbyteinfo.ml   |  101 ++++++++++++++++++++++++++++++++++++++++++++++++
+ ocamlplugininfo.ml |  109 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 210 insertions(+)
+ create mode 100644 ocamlbyteinfo.ml
+ create mode 100644 ocamlplugininfo.ml
+
+diff --git a/ocamlbyteinfo.ml b/ocamlbyteinfo.ml
+new file mode 100644
+index 0000000..eb9a293
+--- /dev/null
++++ b/ocamlbyteinfo.ml
+@@ -0,0 +1,101 @@
++(***********************************************************************)
++(*                                                                     *)
++(*                           Objective Caml                            *)
++(*                                                                     *)
++(*            Xavier Leroy, projet Gallium, INRIA Rocquencourt         *)
++(*                                                                     *)
++(*  Copyright 2009 Institut National de Recherche en Informatique et   *)
++(*  en Automatique.  All rights reserved.  This file is distributed    *)
++(*  under the terms of the GNU Library General Public License, with    *)
++(*  the special exception on linking described in file ../../LICENSE.  *)
++(*                                                                     *)
++(***********************************************************************)
++
++(* $Id$ *)
++
++(* Dumps a bytecode binary file *)
++
++open Sys
++open Dynlinkaux
++
++let input_stringlist ic len =
++  let get_string_list sect len =
++    let rec fold s e acc =
++      if e != len then
++        if sect.[e] = '\000' then
++          fold (e+1) (e+1) (String.sub sect s (e-s) :: acc)
++        else fold s (e+1) acc
++      else acc
++    in fold 0 0 []
++  in
++  let sect = String.create len in
++  let _ = really_input ic sect 0 len in
++  get_string_list sect len
++
++let print = Printf.printf
++let perr s =
++  Printf.eprintf "%s\n" s;
++  exit(1)
++let p_title title = print "%s:\n" title
++
++let p_section title format pdata = function
++  | [] -> ()
++  | l ->
++      p_title title;
++      List.iter
++        (fun (name, data) -> print format (pdata data) name)
++        l
++
++let p_list title format = function
++  | [] -> ()
++  | l ->
++      p_title title;
++      List.iter
++        (fun name -> print format name)
++        l
++
++let _ =
++  try
++    let input_name = Sys.argv.(1) in
++    let ic = open_in_bin input_name in
++    Bytesections.read_toc ic;
++    List.iter
++      (fun section ->
++         try
++           let len = Bytesections.seek_section ic section in
++           if len > 0 then match section with
++             | "CRCS" ->
++                 p_section
++                   "Imported Units"
++                   "\t%s\t%s\n"
++                   Digest.to_hex
++                   (input_value ic : (string * Digest.t) list)
++             | "DLLS" ->
++                 p_list
++                   "Used Dlls" "\t%s\n"
++                   (input_stringlist ic len)
++             | "DLPT" ->
++                 p_list
++                   "Additional Dll paths"
++                   "\t%s\n"
++                   (input_stringlist ic len)
++             | "PRIM" ->
++                 let prims = (input_stringlist ic len) in
++                 print "Uses unsafe features: ";
++                 begin match prims with
++                     [] -> print "no\n"
++                   | l  -> print "YES\n";
++                       p_list "Primitives declared in this module"
++                         "\t%s\n"
++                         l
++                 end
++             | _ -> ()
++         with Not_found | Failure _ | Invalid_argument _ -> ()
++      )
++      ["CRCS"; "DLLS"; "DLPT"; "PRIM"];
++    close_in ic
++  with
++    | Sys_error msg ->
++        perr msg
++    | Invalid_argument("index out of bounds") ->
++        perr (Printf.sprintf "Usage: %s filename" Sys.argv.(0))
+diff --git a/ocamlplugininfo.ml b/ocamlplugininfo.ml
+new file mode 100644
+index 0000000..e28800f
+--- /dev/null
++++ b/ocamlplugininfo.ml
+@@ -0,0 +1,109 @@
++(***********************************************************************)
++(*                                                                     *)
++(*                           Objective Caml                            *)
++(*                                                                     *)
++(*            Xavier Leroy, projet Gallium, INRIA Rocquencourt         *)
++(*                                                                     *)
++(*  Copyright 2009 Institut National de Recherche en Informatique et   *)
++(*  en Automatique.  All rights reserved.  This file is distributed    *)
++(*  under the terms of the GNU Library General Public License, with    *)
++(*  the special exception on linking described in file ../../LICENSE.  *)
++(*                                                                     *)
++(***********************************************************************)
++
++(* $Id$ *)
++
++(* Dumps a .cmxs file *)
++
++open Natdynlink
++open Format
++
++let file =
++  try
++    Sys.argv.(1)
++  with _ -> begin
++    Printf.eprintf "Usage: %s file.cmxs\n" Sys.argv.(0);
++    exit(1)
++  end
++
++exception Abnormal_exit
++
++let error s e =
++  let eprint = Printf.eprintf in
++  let print_exc s = function
++    | End_of_file ->
++       eprint "%s: %s\n" s file
++    | Abnormal_exit ->
++        eprint "%s\n" s
++    | e -> eprint "%s\n" (Printexc.to_string e)
++  in
++    print_exc s e;
++    exit(1)
++
++let read_in command =
++  let cmd = Printf.sprintf command file in
++  let ic = Unix.open_process_in cmd in
++  try
++    let line = input_line ic in
++    begin match (Unix.close_process_in ic) with
++      | Unix.WEXITED 0 -> Str.split (Str.regexp "[ ]+") line
++      | Unix.WEXITED _  | Unix.WSIGNALED _ | Unix.WSTOPPED _ ->
++          error
++            (Printf.sprintf
++               "Command \"%s\" exited abnormally"
++               cmd
++            )
++            Abnormal_exit
++    end
++  with e -> error "File is empty" e
++
++let get_offset adr_off adr_sec =
++  try
++    let adr = List.nth adr_off 4 in
++    let off = List.nth adr_off 5 in
++    let sec = List.hd adr_sec in
++
++    let (!) x = Int64.of_string ("0x" ^ x) in
++    let (+) = Int64.add in
++    let (-) = Int64.sub in
++
++      Int64.to_int (!off + !sec - !adr)
++
++  with Failure _ | Invalid_argument _ ->
++    error
++      "Command output doesn't have the expected format"
++      Abnormal_exit
++
++let print_infos name crc defines cmi cmx =
++  let print_name_crc (name, crc) =
++    printf "@ %s (%s)" name (Digest.to_hex crc)
++  in
++  let pr_imports ppf imps = List.iter print_name_crc imps in
++  printf "Name: %s at ." name;
++  printf "CRC of implementation: %s at ." (Digest.to_hex crc);
++  printf "@[<hov 2>Globals defined:";
++  List.iter (fun s -> printf "@ %s" s) defines;
++  printf "@]@.";
++  printf "@[<v 2>Interfaces imported:%a@]@." pr_imports cmi;
++  printf "@[<v 2>Implementations imported:%a@]@." pr_imports cmx
++
++let _ =
++  let adr_off = read_in "objdump -h %s | grep ' .data '" in
++  let adr_sec = read_in "objdump -T %s | grep ' caml_plugin_header$'" in
++
++  let ic = open_in file in
++  let _ = seek_in ic (get_offset adr_off adr_sec) in
++  let header  = (input_value ic : Natdynlink.dynheader) in
++    if header.magic <> Natdynlink.dyn_magic_number then
++      raise(Error(Natdynlink.Not_a_bytecode_file file))
++    else begin
++      List.iter
++        (fun ui ->
++           print_infos
++             ui.name
++             ui.crc
++             ui.defines
++             ui.imports_cmi
++             ui.imports_cmx)
++        header.units
++    end
+-- 
+1.7.10
+
diff --git a/0002-GNU-config.guess-and-config.sub-replacements.patch b/0002-GNU-config.guess-and-config.sub-replacements.patch
new file mode 100644
index 0000000..318422f
--- /dev/null
+++ b/0002-GNU-config.guess-and-config.sub-replacements.patch
@@ -0,0 +1,2583 @@
+From bb6f512f26f2f52a747b2de42da9c0d74a7e0e7e Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones at redhat.com>
+Date: Tue, 29 May 2012 20:42:12 +0100
+Subject: [PATCH 2/7] GNU config.guess and config.sub replacements.
+
+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 ++++++++++++++-----
+ 2 files changed, 876 insertions(+), 585 deletions(-)
+
+diff --git a/config/gnu/config.guess b/config/gnu/config.guess
+index d25d58f..8152efd 100755
+--- a/config/gnu/config.guess
++++ b/config/gnu/config.guess
+@@ -1,9 +1,10 @@
+ #! /bin/sh
+ # Attempt to guess a canonical system name.
+ #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
++#   2011 Free Software Foundation, Inc.
+ 
+-timestamp='2004-02-16'
++timestamp='2011-11-11'
+ 
+ # This file is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU General Public License as published by
+@@ -17,23 +18,25 @@ timestamp='2004-02-16'
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with this program; if not, write to the Free Software
+-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
++# 02110-1301, USA.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+ # the same distribution terms that you use for the rest of that program.
+ 
+-# Originally written by Per Bothner <per at bothner.com>.
+-# Please send patches to <config-patches at gnu.org>.  Submit a context
+-# diff and a properly formatted ChangeLog entry.
++
++# Originally written by Per Bothner.  Please send patches (context
++# diff format) to <config-patches at gnu.org> and include a ChangeLog
++# entry.
+ #
+ # This script attempts to guess a canonical system name similar to
+ # config.sub.  If it succeeds, it prints the system name on stdout, and
+ # exits with 0.  Otherwise, it exits with 1.
+ #
+-# The plan is that this can be called by configure scripts if you
+-# don't specify an explicit build system type.
++# You can get the latest version of this script from:
++# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+ 
+ me=`echo "$0" | sed -e 's,.*/,,'`
+ 
+@@ -53,8 +56,9 @@ version="\
+ GNU config.guess ($timestamp)
+ 
+ Originally written by Per Bothner.
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+-Free Software Foundation, Inc.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
++2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
++Software Foundation, Inc.
+ 
+ This is free software; see the source for copying conditions.  There is NO
+ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+@@ -66,11 +70,11 @@ Try \`$me --help' for more information."
+ while test $# -gt 0 ; do
+   case $1 in
+     --time-stamp | --time* | -t )
+-       echo "$timestamp" ; exit 0 ;;
++       echo "$timestamp" ; exit ;;
+     --version | -v )
+-       echo "$version" ; exit 0 ;;
++       echo "$version" ; exit ;;
+     --help | --h* | -h )
+-       echo "$usage"; exit 0 ;;
++       echo "$usage"; exit ;;
+     -- )     # Stop option processing
+        shift; break ;;
+     - )	# Use stdin as input.
+@@ -104,7 +108,7 @@ set_cc_for_build='
+ trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+ trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+ : ${TMPDIR=/tmp} ;
+- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
++ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+  { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+  { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+  { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+@@ -123,7 +127,7 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in
+ 	;;
+  ,,*)   CC_FOR_BUILD=$CC ;;
+  ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+-esac ;'
++esac ; set_cc_for_build= ;'
+ 
+ # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+ # (ghazi at noc.rutgers.edu 1994-08-24)
+@@ -158,6 +162,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 	    arm*) machine=arm-unknown ;;
+ 	    sh3el) machine=shl-unknown ;;
+ 	    sh3eb) machine=sh-unknown ;;
++	    sh5el) machine=sh5le-unknown ;;
+ 	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ 	esac
+ 	# The Operating System including object format, if it has switched
+@@ -166,7 +171,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ 		eval $set_cc_for_build
+ 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+-			| grep __ELF__ >/dev/null
++			| grep -q __ELF__
+ 		then
+ 		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ 		    # Return netbsd for either.  FIX?
+@@ -176,7 +181,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 		fi
+ 		;;
+ 	    *)
+-	        os=netbsd
++		os=netbsd
+ 		;;
+ 	esac
+ 	# The OS release
+@@ -196,68 +201,32 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 	# contains redundant information, the shorter form:
+ 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ 	echo "${machine}-${os}${release}"
+-	exit 0 ;;
+-    amd64:OpenBSD:*:*)
+-	echo x86_64-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    amiga:OpenBSD:*:*)
+-	echo m68k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    arc:OpenBSD:*:*)
+-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    cats:OpenBSD:*:*)
+-	echo arm-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    hp300:OpenBSD:*:*)
+-	echo m68k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    mac68k:OpenBSD:*:*)
+-	echo m68k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    macppc:OpenBSD:*:*)
+-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    mvme68k:OpenBSD:*:*)
+-	echo m68k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    mvme88k:OpenBSD:*:*)
+-	echo m88k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    mvmeppc:OpenBSD:*:*)
+-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    pegasos:OpenBSD:*:*)
+-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    pmax:OpenBSD:*:*)
+-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    sgi:OpenBSD:*:*)
+-	echo mipseb-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    sun3:OpenBSD:*:*)
+-	echo m68k-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
+-    wgrisc:OpenBSD:*:*)
+-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:OpenBSD:*:*)
+-	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+-	exit 0 ;;
++	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
++	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
++	exit ;;
+     *:ekkoBSD:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
++    *:SolidBSD:*:*)
++	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
++	exit ;;
+     macppc:MirBSD:*:*)
+-	echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+-	exit 0 ;;
++	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
++	exit ;;
+     *:MirBSD:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     alpha:OSF1:*:*)
+-	if test $UNAME_RELEASE = "V4.0"; then
++	case $UNAME_RELEASE in
++	*4.0)
+ 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+-	fi
++		;;
++	*5.*)
++		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
++		;;
++	esac
+ 	# According to Compaq, /usr/sbin/psrinfo has been available on
+ 	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+ 	# covers most systems running today.  This code pipes the CPU
+@@ -295,45 +264,52 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 	    "EV7.9 (21364A)")
+ 		UNAME_MACHINE="alphaev79" ;;
+ 	esac
++	# A Pn.n version is a patched version.
+ 	# A Vn.n version is a released version.
+ 	# A Tn.n version is a released field test version.
+ 	# A Xn.n version is an unreleased experimental baselevel.
+ 	# 1.2 uses "1.2" for uname -r.
+-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+-	exit 0 ;;
+-    Alpha*:OpenVMS:*:*)
+-	echo alpha-hp-vms
+-	exit 0 ;;
++	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
++	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
++	exitcode=$?
++	trap '' 0
++	exit $exitcode ;;
+     Alpha\ *:Windows_NT*:*)
+ 	# How do we know it's Interix rather than the generic POSIX subsystem?
+ 	# Should we change UNAME_MACHINE based on the output of uname instead
+ 	# of the specific Alpha model?
+ 	echo alpha-pc-interix
+-	exit 0 ;;
++	exit ;;
+     21064:Windows_NT:50:3)
+ 	echo alpha-dec-winnt3.5
+-	exit 0 ;;
++	exit ;;
+     Amiga*:UNIX_System_V:4.0:*)
+ 	echo m68k-unknown-sysv4
+-	exit 0;;
++	exit ;;
+     *:[Aa]miga[Oo][Ss]:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-amigaos
+-	exit 0 ;;
++	exit ;;
+     *:[Mm]orph[Oo][Ss]:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-morphos
+-	exit 0 ;;
++	exit ;;
+     *:OS/390:*:*)
+ 	echo i370-ibm-openedition
+-	exit 0 ;;
++	exit ;;
++    *:z/VM:*:*)
++	echo s390-ibm-zvmoe
++	exit ;;
+     *:OS400:*:*)
+-        echo powerpc-ibm-os400
+-	exit 0 ;;
++	echo powerpc-ibm-os400
++	exit ;;
+     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ 	echo arm-acorn-riscix${UNAME_RELEASE}
+-	exit 0;;
++	exit ;;
++    arm:riscos:*:*|arm:RISCOS:*:*)
++	echo arm-unknown-riscos
++	exit ;;
+     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ 	echo hppa1.1-hitachi-hiuxmpp
+-	exit 0;;
++	exit ;;
+     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ 	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ 	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+@@ -341,32 +317,51 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 	else
+ 		echo pyramid-pyramid-bsd
+ 	fi
+-	exit 0 ;;
++	exit ;;
+     NILE*:*:*:dcosx)
+ 	echo pyramid-pyramid-svr4
+-	exit 0 ;;
++	exit ;;
+     DRS?6000:unix:4.0:6*)
+ 	echo sparc-icl-nx6
+-	exit 0 ;;
+-    DRS?6000:UNIX_SV:4.2*:7*)
++	exit ;;
++    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ 	case `/usr/bin/uname -p` in
+-	    sparc) echo sparc-icl-nx7 && exit 0 ;;
++	    sparc) echo sparc-icl-nx7; exit ;;
+ 	esac ;;
++    s390x:SunOS:*:*)
++	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++	exit ;;
+     sun4H:SunOS:5.*:*)
+ 	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+-	exit 0 ;;
++	exit ;;
+     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+-	exit 0 ;;
+-    i86pc:SunOS:5.*:*)
+-	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+-	exit 0 ;;
++	exit ;;
++    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
++	echo i386-pc-auroraux${UNAME_RELEASE}
++	exit ;;
++    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
++	eval $set_cc_for_build
++	SUN_ARCH="i386"
++	# If there is a compiler, see if it is configured for 64-bit objects.
++	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
++	# This test works for both compilers.
++	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
++	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
++		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
++		grep IS_64BIT_ARCH >/dev/null
++	    then
++		SUN_ARCH="x86_64"
++	    fi
++	fi
++	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++	exit ;;
+     sun4*:SunOS:6*:*)
+ 	# According to config.sub, this is the proper way to canonicalize
+ 	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+ 	# it's likely to be more like Solaris than SunOS4.
+ 	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+-	exit 0 ;;
++	exit ;;
+     sun4*:SunOS:*:*)
+ 	case "`/usr/bin/arch -k`" in
+ 	    Series*|S4*)
+@@ -375,10 +370,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 	esac
+ 	# Japanese Language versions have a version number like `4.1.3-JL'.
+ 	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+-	exit 0 ;;
++	exit ;;
+     sun3*:SunOS:*:*)
+ 	echo m68k-sun-sunos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     sun*:*:4.2BSD:*)
+ 	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ 	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+@@ -390,10 +385,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 		echo sparc-sun-sunos${UNAME_RELEASE}
+ 		;;
+ 	esac
+-	exit 0 ;;
++	exit ;;
+     aushp:SunOS:*:*)
+ 	echo sparc-auspex-sunos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     # The situation for MiNT is a little confusing.  The machine name
+     # can be virtually everything (everything which is not
+     # "atarist" or "atariste" at least should have a processor
+@@ -403,41 +398,41 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+     # MiNT.  But MiNT is downward compatible to TOS, so this should
+     # be no problem.
+     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+-        echo m68k-atari-mint${UNAME_RELEASE}
+-	exit 0 ;;
++	echo m68k-atari-mint${UNAME_RELEASE}
++	exit ;;
+     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ 	echo m68k-atari-mint${UNAME_RELEASE}
+-        exit 0 ;;
++	exit ;;
+     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+-        echo m68k-atari-mint${UNAME_RELEASE}
+-	exit 0 ;;
++	echo m68k-atari-mint${UNAME_RELEASE}
++	exit ;;
+     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+-        echo m68k-milan-mint${UNAME_RELEASE}
+-        exit 0 ;;
++	echo m68k-milan-mint${UNAME_RELEASE}
++	exit ;;
+     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+-        echo m68k-hades-mint${UNAME_RELEASE}
+-        exit 0 ;;
++	echo m68k-hades-mint${UNAME_RELEASE}
++	exit ;;
+     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+-        echo m68k-unknown-mint${UNAME_RELEASE}
+-        exit 0 ;;
++	echo m68k-unknown-mint${UNAME_RELEASE}
++	exit ;;
+     m68k:machten:*:*)
+ 	echo m68k-apple-machten${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     powerpc:machten:*:*)
+ 	echo powerpc-apple-machten${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     RISC*:Mach:*:*)
+ 	echo mips-dec-mach_bsd4.3
+-	exit 0 ;;
++	exit ;;
+     RISC*:ULTRIX:*:*)
+ 	echo mips-dec-ultrix${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     VAX*:ULTRIX*:*:*)
+ 	echo vax-dec-ultrix${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     2020:CLIX:*:* | 2430:CLIX:*:*)
+ 	echo clipper-intergraph-clix${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     mips:*:*:UMIPS | mips:*:*:RISCos)
+ 	eval $set_cc_for_build
+ 	sed 's/^	//' << EOF >$dummy.c
+@@ -461,35 +456,36 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 	  exit (-1);
+ 	}
+ EOF
+-	$CC_FOR_BUILD -o $dummy $dummy.c \
+-	  && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+-	  && exit 0
++	$CC_FOR_BUILD -o $dummy $dummy.c &&
++	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
++	  SYSTEM_NAME=`$dummy $dummyarg` &&
++	    { echo "$SYSTEM_NAME"; exit; }
+ 	echo mips-mips-riscos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     Motorola:PowerMAX_OS:*:*)
+ 	echo powerpc-motorola-powermax
+-	exit 0 ;;
++	exit ;;
+     Motorola:*:4.3:PL8-*)
+ 	echo powerpc-harris-powermax
+-	exit 0 ;;
++	exit ;;
+     Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ 	echo powerpc-harris-powermax
+-	exit 0 ;;
++	exit ;;
+     Night_Hawk:Power_UNIX:*:*)
+ 	echo powerpc-harris-powerunix
+-	exit 0 ;;
++	exit ;;
+     m88k:CX/UX:7*:*)
+ 	echo m88k-harris-cxux7
+-	exit 0 ;;
++	exit ;;
+     m88k:*:4*:R4*)
+ 	echo m88k-motorola-sysv4
+-	exit 0 ;;
++	exit ;;
+     m88k:*:3*:R3*)
+ 	echo m88k-motorola-sysv3
+-	exit 0 ;;
++	exit ;;
+     AViiON:dgux:*:*)
+-        # DG/UX returns AViiON for all architectures
+-        UNAME_PROCESSOR=`/usr/bin/uname -p`
++	# DG/UX returns AViiON for all architectures
++	UNAME_PROCESSOR=`/usr/bin/uname -p`
+ 	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ 	then
+ 	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+@@ -502,29 +498,29 @@ EOF
+ 	else
+ 	    echo i586-dg-dgux${UNAME_RELEASE}
+ 	fi
+- 	exit 0 ;;
++	exit ;;
+     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+ 	echo m88k-dolphin-sysv3
+-	exit 0 ;;
++	exit ;;
+     M88*:*:R3*:*)
+ 	# Delta 88k system running SVR3
+ 	echo m88k-motorola-sysv3
+-	exit 0 ;;
++	exit ;;
+     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ 	echo m88k-tektronix-sysv3
+-	exit 0 ;;
++	exit ;;
+     Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ 	echo m68k-tektronix-bsd
+-	exit 0 ;;
++	exit ;;
+     *:IRIX*:*:*)
+ 	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+-	exit 0 ;;
++	exit ;;
+     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+-	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+-	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
++	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
++	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+     i*86:AIX:*:*)
+ 	echo i386-ibm-aix
+-	exit 0 ;;
++	exit ;;
+     ia64:AIX:*:*)
+ 	if [ -x /usr/bin/oslevel ] ; then
+ 		IBM_REV=`/usr/bin/oslevel`
+@@ -532,7 +528,7 @@ EOF
+ 		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ 	fi
+ 	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+-	exit 0 ;;
++	exit ;;
+     *:AIX:2:3)
+ 	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ 		eval $set_cc_for_build
+@@ -547,15 +543,19 @@ EOF
+ 			exit(0);
+ 			}
+ EOF
+-		$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+-		echo rs6000-ibm-aix3.2.5
++		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
++		then
++			echo "$SYSTEM_NAME"
++		else
++			echo rs6000-ibm-aix3.2.5
++		fi
+ 	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ 		echo rs6000-ibm-aix3.2.4
+ 	else
+ 		echo rs6000-ibm-aix3.2
+ 	fi
+-	exit 0 ;;
+-    *:AIX:*:[45])
++	exit ;;
++    *:AIX:*:[4567])
+ 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ 	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ 		IBM_ARCH=rs6000
+@@ -568,28 +568,28 @@ EOF
+ 		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ 	fi
+ 	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+-	exit 0 ;;
++	exit ;;
+     *:AIX:*:*)
+ 	echo rs6000-ibm-aix
+-	exit 0 ;;
++	exit ;;
+     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ 	echo romp-ibm-bsd4.4
+-	exit 0 ;;
++	exit ;;
+     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+ 	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+-	exit 0 ;;                           # report: romp-ibm BSD 4.3
++	exit ;;                             # report: romp-ibm BSD 4.3
+     *:BOSX:*:*)
+ 	echo rs6000-bull-bosx
+-	exit 0 ;;
++	exit ;;
+     DPX/2?00:B.O.S.:*:*)
+ 	echo m68k-bull-sysv3
+-	exit 0 ;;
++	exit ;;
+     9000/[34]??:4.3bsd:1.*:*)
+ 	echo m68k-hp-bsd
+-	exit 0 ;;
++	exit ;;
+     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ 	echo m68k-hp-bsd4.4
+-	exit 0 ;;
++	exit ;;
+     9000/[34678]??:HP-UX:*:*)
+ 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ 	case "${UNAME_MACHINE}" in
+@@ -598,52 +598,52 @@ EOF
+ 	    9000/[678][0-9][0-9])
+ 		if [ -x /usr/bin/getconf ]; then
+ 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+-                    case "${sc_cpu_version}" in
+-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+-                      532)                      # CPU_PA_RISC2_0
+-                        case "${sc_kernel_bits}" in
+-                          32) HP_ARCH="hppa2.0n" ;;
+-                          64) HP_ARCH="hppa2.0w" ;;
++		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
++		    case "${sc_cpu_version}" in
++		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
++		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
++		      532)                      # CPU_PA_RISC2_0
++			case "${sc_kernel_bits}" in
++			  32) HP_ARCH="hppa2.0n" ;;
++			  64) HP_ARCH="hppa2.0w" ;;
+ 			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+-                        esac ;;
+-                    esac
++			esac ;;
++		    esac
+ 		fi
+ 		if [ "${HP_ARCH}" = "" ]; then
+ 		    eval $set_cc_for_build
+-		    sed 's/^              //' << EOF >$dummy.c
++		    sed 's/^		//' << EOF >$dummy.c
+ 
+-              #define _HPUX_SOURCE
+-              #include <stdlib.h>
+-              #include <unistd.h>
++		#define _HPUX_SOURCE
++		#include <stdlib.h>
++		#include <unistd.h>
+ 
+-              int main ()
+-              {
+-              #if defined(_SC_KERNEL_BITS)
+-                  long bits = sysconf(_SC_KERNEL_BITS);
+-              #endif
+-                  long cpu  = sysconf (_SC_CPU_VERSION);
++		int main ()
++		{
++		#if defined(_SC_KERNEL_BITS)
++		    long bits = sysconf(_SC_KERNEL_BITS);
++		#endif
++		    long cpu  = sysconf (_SC_CPU_VERSION);
+ 
+-                  switch (cpu)
+-              	{
+-              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+-              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+-              	case CPU_PA_RISC2_0:
+-              #if defined(_SC_KERNEL_BITS)
+-              	    switch (bits)
+-              		{
+-              		case 64: puts ("hppa2.0w"); break;
+-              		case 32: puts ("hppa2.0n"); break;
+-              		default: puts ("hppa2.0"); break;
+-              		} break;
+-              #else  /* !defined(_SC_KERNEL_BITS) */
+-              	    puts ("hppa2.0"); break;
+-              #endif
+-              	default: puts ("hppa1.0"); break;
+-              	}
+-                  exit (0);
+-              }
++		    switch (cpu)
++			{
++			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
++			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
++			case CPU_PA_RISC2_0:
++		#if defined(_SC_KERNEL_BITS)
++			    switch (bits)
++				{
++				case 64: puts ("hppa2.0w"); break;
++				case 32: puts ("hppa2.0n"); break;
++				default: puts ("hppa2.0"); break;
++				} break;
++		#else  /* !defined(_SC_KERNEL_BITS) */
++			    puts ("hppa2.0"); break;
++		#endif
++			default: puts ("hppa1.0"); break;
++			}
++		    exit (0);
++		}
+ EOF
+ 		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ 		    test -z "$HP_ARCH" && HP_ARCH=hppa
+@@ -651,9 +651,19 @@ EOF
+ 	esac
+ 	if [ ${HP_ARCH} = "hppa2.0w" ]
+ 	then
+-	    # avoid double evaluation of $set_cc_for_build
+-	    test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
++	    eval $set_cc_for_build
++
++	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
++	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
++	    # generating 64-bit code.  GNU and HP use different nomenclature:
++	    #
++	    # $ CC_FOR_BUILD=cc ./config.guess
++	    # => hppa2.0w-hp-hpux11.23
++	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
++	    # => hppa64-hp-hpux11.23
++
++	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
++		grep -q __LP64__
+ 	    then
+ 		HP_ARCH="hppa2.0w"
+ 	    else
+@@ -661,11 +671,11 @@ EOF
+ 	    fi
+ 	fi
+ 	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+-	exit 0 ;;
++	exit ;;
+     ia64:HP-UX:*:*)
+ 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ 	echo ia64-hp-hpux${HPUX_REV}
+-	exit 0 ;;
++	exit ;;
+     3050*:HI-UX:*:*)
+ 	eval $set_cc_for_build
+ 	sed 's/^	//' << EOF >$dummy.c
+@@ -693,224 +703,259 @@ EOF
+ 	  exit (0);
+ 	}
+ EOF
+-	$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
++	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
++		{ echo "$SYSTEM_NAME"; exit; }
+ 	echo unknown-hitachi-hiuxwe2
+-	exit 0 ;;
++	exit ;;
+     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ 	echo hppa1.1-hp-bsd
+-	exit 0 ;;
++	exit ;;
+     9000/8??:4.3bsd:*:*)
+ 	echo hppa1.0-hp-bsd
+-	exit 0 ;;
++	exit ;;
+     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ 	echo hppa1.0-hp-mpeix
+-	exit 0 ;;
++	exit ;;
+     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ 	echo hppa1.1-hp-osf
+-	exit 0 ;;
++	exit ;;
+     hp8??:OSF1:*:*)
+ 	echo hppa1.0-hp-osf
+-	exit 0 ;;
++	exit ;;
+     i*86:OSF1:*:*)
+ 	if [ -x /usr/sbin/sysversion ] ; then
+ 	    echo ${UNAME_MACHINE}-unknown-osf1mk
+ 	else
+ 	    echo ${UNAME_MACHINE}-unknown-osf1
+ 	fi
+-	exit 0 ;;
++	exit ;;
+     parisc*:Lites*:*:*)
+ 	echo hppa1.1-hp-lites
+-	exit 0 ;;
++	exit ;;
+     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ 	echo c1-convex-bsd
+-        exit 0 ;;
++	exit ;;
+     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ 	if getsysinfo -f scalar_acc
+ 	then echo c32-convex-bsd
+ 	else echo c2-convex-bsd
+ 	fi
+-        exit 0 ;;
++	exit ;;
+     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ 	echo c34-convex-bsd
+-        exit 0 ;;
++	exit ;;
+     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ 	echo c38-convex-bsd
+-        exit 0 ;;
++	exit ;;
+     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ 	echo c4-convex-bsd
+-        exit 0 ;;
++	exit ;;
+     CRAY*Y-MP:*:*:*)
+ 	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	exit ;;
+     CRAY*[A-Z]90:*:*:*)
+ 	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ 	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ 	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ 	      -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	exit ;;
+     CRAY*TS:*:*:*)
+ 	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	exit ;;
+     CRAY*T3E:*:*:*)
+ 	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	exit ;;
+     CRAY*SV1:*:*:*)
+ 	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	exit ;;
+     *:UNICOS/mp:*:*)
+-	echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+-	exit 0 ;;
++	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++	exit ;;
+     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+-        exit 0 ;;
++	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
++	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
++	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
++	exit ;;
+     5000:UNIX_System_V:4.*:*)
+-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+-	exit 0 ;;
++	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
++	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
++	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
++	exit ;;
+     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     sparc*:BSD/OS:*:*)
+ 	echo sparc-unknown-bsdi${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:BSD/OS:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:FreeBSD:*:*)
+-	# Determine whether the default compiler uses glibc.
+-	eval $set_cc_for_build
+-	sed 's/^	//' << EOF >$dummy.c
+-	#include <features.h>
+-	#if __GLIBC__ >= 2
+-	LIBC=gnu
+-	#else
+-	LIBC=
+-	#endif
+-EOF
+-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+-	# GNU/KFreeBSD systems have a "k" prefix to indicate we are using
+-	# FreeBSD's kernel, but not the complete OS.
+-	case ${LIBC} in gnu) kernel_only='k' ;; esac
+-	echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+-	exit 0 ;;
++	UNAME_PROCESSOR=`/usr/bin/uname -p`
++	case ${UNAME_PROCESSOR} in
++	    amd64)
++		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++	    *)
++		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++	esac
++	exit ;;
+     i*:CYGWIN*:*)
+ 	echo ${UNAME_MACHINE}-pc-cygwin
+-	exit 0 ;;
+-    i*:MINGW*:*)
++	exit ;;
++    *:MINGW*:*)
+ 	echo ${UNAME_MACHINE}-pc-mingw32
+-	exit 0 ;;
++	exit ;;
++    i*:MSYS*:*)
++	echo ${UNAME_MACHINE}-pc-msys
++	exit ;;
++    i*:windows32*:*)
++	# uname -m includes "-pc" on this system.
++	echo ${UNAME_MACHINE}-mingw32
++	exit ;;
+     i*:PW*:*)
+ 	echo ${UNAME_MACHINE}-pc-pw32
+-	exit 0 ;;
+-    x86:Interix*:[34]*)
+-	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+-	exit 0 ;;
++	exit ;;
++    *:Interix*:*)
++	case ${UNAME_MACHINE} in
++	    x86)
++		echo i586-pc-interix${UNAME_RELEASE}
++		exit ;;
++	    authenticamd | genuineintel | EM64T)
++		echo x86_64-unknown-interix${UNAME_RELEASE}
++		exit ;;
++	    IA64)
++		echo ia64-unknown-interix${UNAME_RELEASE}
++		exit ;;
++	esac ;;
+     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ 	echo i${UNAME_MACHINE}-pc-mks
+-	exit 0 ;;
++	exit ;;
++    8664:Windows_NT:*)
++	echo x86_64-pc-mks
++	exit ;;
+     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ 	# How do we know it's Interix rather than the generic POSIX subsystem?
+ 	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ 	# UNAME_MACHINE based on the output of uname instead of i386?
+ 	echo i586-pc-interix
+-	exit 0 ;;
++	exit ;;
+     i*:UWIN*:*)
+ 	echo ${UNAME_MACHINE}-pc-uwin
+-	exit 0 ;;
++	exit ;;
++    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
++	echo x86_64-unknown-cygwin
++	exit ;;
+     p*:CYGWIN*:*)
+ 	echo powerpcle-unknown-cygwin
+-	exit 0 ;;
++	exit ;;
+     prep*:SunOS:5.*:*)
+ 	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+-	exit 0 ;;
++	exit ;;
+     *:GNU:*:*)
+ 	# the GNU system
+ 	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+-	exit 0 ;;
++	exit ;;
+     *:GNU/*:*:*)
+ 	# other systems with GNU libc and userland
+ 	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+-	exit 0 ;;
++	exit ;;
+     i*86:Minix:*:*)
+ 	echo ${UNAME_MACHINE}-pc-minix
+-	exit 0 ;;
++	exit ;;
++    alpha:Linux:*:*)
++	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
++	  EV5)   UNAME_MACHINE=alphaev5 ;;
++	  EV56)  UNAME_MACHINE=alphaev56 ;;
++	  PCA56) UNAME_MACHINE=alphapca56 ;;
++	  PCA57) UNAME_MACHINE=alphapca56 ;;
++	  EV6)   UNAME_MACHINE=alphaev6 ;;
++	  EV67)  UNAME_MACHINE=alphaev67 ;;
++	  EV68*) UNAME_MACHINE=alphaev68 ;;
++	esac
++	objdump --private-headers /bin/sh | grep -q ld.so.1
++	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
++	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
++	exit ;;
+     arm*:Linux:*:*)
++	eval $set_cc_for_build
++	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
++	    | grep -q __ARM_EABI__
++	then
++	    echo ${UNAME_MACHINE}-unknown-linux-gnu
++	else
++	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
++		| grep -q __ARM_PCS_VFP
++	    then
++		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
++	    else
++		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
++	    fi
++	fi
++	exit ;;
++    avr32*:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
+-    sa110:Linux:*:*)
+-	echo arm-unknown-linux-gnu
+-	exit 0 ;;
++	exit ;;
+     cris:Linux:*:*)
+ 	echo cris-axis-linux-gnu
+-	exit 0 ;;
+-    ia64:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
+-    m68*:Linux:*:*)
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
+-    mips:Linux:*:*)
++	exit ;;
++    crisv32:Linux:*:*)
++	echo crisv32-axis-linux-gnu
++	exit ;;
++    frv:Linux:*:*)
++	echo frv-unknown-linux-gnu
++	exit ;;
++    hexagon:Linux:*:*)
++	echo hexagon-unknown-linux-gnu
++	exit ;;
++    i*86:Linux:*:*)
++	LIBC=gnu
+ 	eval $set_cc_for_build
+ 	sed 's/^	//' << EOF >$dummy.c
+-	#undef CPU
+-	#undef mips
+-	#undef mipsel
+-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+-	CPU=mipsel
+-	#else
+-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+-	CPU=mips
+-	#else
+-	CPU=
+-	#endif
++	#ifdef __dietlibc__
++	LIBC=dietlibc
+ 	#endif
+ EOF
+-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+-	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+-	;;
+-    mips64:Linux:*:*)
++	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
++	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
++	exit ;;
++    ia64:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    m32r*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    m68*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    mips:Linux:*:* | mips64:Linux:*:*)
+ 	eval $set_cc_for_build
+ 	sed 's/^	//' << EOF >$dummy.c
+ 	#undef CPU
+-	#undef mips64
+-	#undef mips64el
++	#undef ${UNAME_MACHINE}
++	#undef ${UNAME_MACHINE}el
+ 	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+-	CPU=mips64el
++	CPU=${UNAME_MACHINE}el
+ 	#else
+ 	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+-	CPU=mips64
++	CPU=${UNAME_MACHINE}
+ 	#else
+ 	CPU=
+ 	#endif
+ 	#endif
+ EOF
+-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+-	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
++	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
++	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ 	;;
+-    ppc:Linux:*:*)
+-	echo powerpc-unknown-linux-gnu
+-	exit 0 ;;
+-    ppc64:Linux:*:*)
+-	echo powerpc64-unknown-linux-gnu
+-	exit 0 ;;
+-    alpha:Linux:*:*)
+-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+-	  EV5)   UNAME_MACHINE=alphaev5 ;;
+-	  EV56)  UNAME_MACHINE=alphaev56 ;;
+-	  PCA56) UNAME_MACHINE=alphapca56 ;;
+-	  PCA57) UNAME_MACHINE=alphapca56 ;;
+-	  EV6)   UNAME_MACHINE=alphaev6 ;;
+-	  EV67)  UNAME_MACHINE=alphaev67 ;;
+-	  EV68*) UNAME_MACHINE=alphaev68 ;;
+-        esac
+-	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+-	exit 0 ;;
++    or32:Linux:*:*)
++	echo or32-unknown-linux-gnu
++	exit ;;
++    padre:Linux:*:*)
++	echo sparc-unknown-linux-gnu
++	exit ;;
++    parisc64:Linux:*:* | hppa64:Linux:*:*)
++	echo hppa64-unknown-linux-gnu
++	exit ;;
+     parisc:Linux:*:* | hppa:Linux:*:*)
+ 	# Look for CPU level
+ 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+@@ -918,115 +963,71 @@ EOF
+ 	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ 	  *)    echo hppa-unknown-linux-gnu ;;
+ 	esac
+-	exit 0 ;;
+-    parisc64:Linux:*:* | hppa64:Linux:*:*)
+-	echo hppa64-unknown-linux-gnu
+-	exit 0 ;;
++	exit ;;
++    ppc64:Linux:*:*)
++	echo powerpc64-unknown-linux-gnu
++	exit ;;
++    ppc:Linux:*:*)
++	echo powerpc-unknown-linux-gnu
++	exit ;;
+     s390:Linux:*:* | s390x:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-ibm-linux
+-	exit 0 ;;
++	exit ;;
+     sh64*:Linux:*:*)
+-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
+     sh*:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
++	exit ;;
+     sparc:Linux:*:* | sparc64:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+-	exit 0 ;;
++	exit ;;
++    tile*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    vax:Linux:*:*)
++	echo ${UNAME_MACHINE}-dec-linux-gnu
++	exit ;;
+     x86_64:Linux:*:*)
+ 	echo x86_64-unknown-linux-gnu
+-	exit 0 ;;
+-    i*86:Linux:*:*)
+-	# The BFD linker knows what the default object file format is, so
+-	# first see if it will tell us. cd to the root directory to prevent
+-	# problems with other programs or directories called `ld' in the path.
+-	# Set LC_ALL=C to ensure ld outputs messages in English.
+-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+-			 | sed -ne '/supported targets:/!d
+-				    s/[ 	][ 	]*/ /g
+-				    s/.*supported targets: *//
+-				    s/ .*//
+-				    p'`
+-        case "$ld_supported_targets" in
+-	  elf32-i386)
+-		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+-		;;
+-	  a.out-i386-linux)
+-		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+-		exit 0 ;;
+-	  coff-i386)
+-		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+-		exit 0 ;;
+-	  "")
+-		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+-		# one that does not give us useful --help.
+-		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+-		exit 0 ;;
+-	esac
+-	# Determine whether the default compiler is a.out or elf
+-	eval $set_cc_for_build
+-	sed 's/^	//' << EOF >$dummy.c
+-	#include <features.h>
+-	#ifdef __ELF__
+-	# ifdef __GLIBC__
+-	#  if __GLIBC__ >= 2
+-	LIBC=gnu
+-	#  else
+-	LIBC=gnulibc1
+-	#  endif
+-	# else
+-	LIBC=gnulibc1
+-	# endif
+-	#else
+-	#ifdef __INTEL_COMPILER
+-	LIBC=gnu
+-	#else
+-	LIBC=gnuaout
+-	#endif
+-	#endif
+-	#ifdef __dietlibc__
+-	LIBC=dietlibc
+-	#endif
+-EOF
+-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+-	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+-	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+-	;;
++	exit ;;
++    xtensa*:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
+     i*86:DYNIX/ptx:4*:*)
+ 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ 	# earlier versions are messed up and put the nodename in both
+ 	# sysname and nodename.
+ 	echo i386-sequent-sysv4
+-	exit 0 ;;
++	exit ;;
+     i*86:UNIX_SV:4.2MP:2.*)
+-        # Unixware is an offshoot of SVR4, but it has its own version
+-        # number series starting with 2...
+-        # I am not positive that other SVR4 systems won't match this,
++	# Unixware is an offshoot of SVR4, but it has its own version
++	# number series starting with 2...
++	# I am not positive that other SVR4 systems won't match this,
+ 	# I just have to hope.  -- rms.
+-        # Use sysv4.2uw... so that sysv4* matches it.
++	# Use sysv4.2uw... so that sysv4* matches it.
+ 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+-	exit 0 ;;
++	exit ;;
+     i*86:OS/2:*:*)
+ 	# If we were able to find `uname', then EMX Unix compatibility
+ 	# is probably installed.
+ 	echo ${UNAME_MACHINE}-pc-os2-emx
+-	exit 0 ;;
++	exit ;;
+     i*86:XTS-300:*:STOP)
+ 	echo ${UNAME_MACHINE}-unknown-stop
+-	exit 0 ;;
++	exit ;;
+     i*86:atheos:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-atheos
+-	exit 0 ;;
+-	i*86:syllable:*:*)
++	exit ;;
++    i*86:syllable:*:*)
+ 	echo ${UNAME_MACHINE}-pc-syllable
+-	exit 0 ;;
+-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
++	exit ;;
++    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ 	echo i386-unknown-lynxos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     i*86:*DOS:*:*)
+ 	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+-	exit 0 ;;
++	exit ;;
+     i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ 	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+@@ -1034,15 +1035,16 @@ EOF
+ 	else
+ 		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ 	fi
+-	exit 0 ;;
+-    i*86:*:5:[78]*)
++	exit ;;
++    i*86:*:5:[678]*)
++	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+ 	case `/bin/uname -X | grep "^Machine"` in
+ 	    *486*)	     UNAME_MACHINE=i486 ;;
+ 	    *Pentium)	     UNAME_MACHINE=i586 ;;
+ 	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ 	esac
+ 	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+-	exit 0 ;;
++	exit ;;
+     i*86:*:3.2:*)
+ 	if test -f /usr/options/cb.name; then
+ 		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+@@ -1060,73 +1062,86 @@ EOF
+ 	else
+ 		echo ${UNAME_MACHINE}-pc-sysv32
+ 	fi
+-	exit 0 ;;
++	exit ;;
+     pc:*:*:*)
+ 	# Left here for compatibility:
+-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+-        # the processor, so we play safe by assuming i386.
+-	echo i386-pc-msdosdjgpp
+-        exit 0 ;;
++	# uname -m prints for DJGPP always 'pc', but it prints nothing about
++	# the processor, so we play safe by assuming i586.
++	# Note: whatever this is, it MUST be the same as what config.sub
++	# prints for the "djgpp" host, or else GDB configury will decide that
++	# this is a cross-build.
++	echo i586-pc-msdosdjgpp
++	exit ;;
+     Intel:Mach:3*:*)
+ 	echo i386-pc-mach3
+-	exit 0 ;;
++	exit ;;
+     paragon:*:*:*)
+ 	echo i860-intel-osf1
+-	exit 0 ;;
++	exit ;;
+     i860:*:4.*:*) # i860-SVR4
+ 	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ 	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ 	else # Add other i860-SVR4 vendors below as they are discovered.
+ 	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+ 	fi
+-	exit 0 ;;
++	exit ;;
+     mini*:CTIX:SYS*5:*)
+ 	# "miniframe"
+ 	echo m68010-convergent-sysv
+-	exit 0 ;;
++	exit ;;
+     mc68k:UNIX:SYSTEM5:3.51m)
+ 	echo m68k-convergent-sysv
+-	exit 0 ;;
++	exit ;;
+     M680?0:D-NIX:5.3:*)
+ 	echo m68k-diab-dnix
+-	exit 0 ;;
+-    M68*:*:R3V[567]*:*)
+-	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
++	exit ;;
++    M68*:*:R3V[5678]*:*)
++	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
++    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ 	OS_REL=''
+ 	test -r /etc/.relid \
+ 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+-	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
++	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+-	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
++	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+-          && echo i486-ncr-sysv4 && exit 0 ;;
++	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
++	  && { echo i486-ncr-sysv4; exit; } ;;
++    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
++	OS_REL='.3'
++	test -r /etc/.relid \
++	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
++	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
++	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
++	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
++	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
++	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
++	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ 	echo m68k-unknown-lynxos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     mc68030:UNIX_System_V:4.*:*)
+ 	echo m68k-atari-sysv4
+-	exit 0 ;;
++	exit ;;
+     TSUNAMI:LynxOS:2.*:*)
+ 	echo sparc-unknown-lynxos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     rs6000:LynxOS:2.*:*)
+ 	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+-	exit 0 ;;
+-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
++	exit ;;
++    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ 	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     SM[BE]S:UNIX_SV:*:*)
+ 	echo mips-dde-sysv${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     RM*:ReliantUNIX-*:*:*)
+ 	echo mips-sni-sysv4
+-	exit 0 ;;
++	exit ;;
+     RM*:SINIX-*:*:*)
+ 	echo mips-sni-sysv4
+-	exit 0 ;;
++	exit ;;
+     *:SINIX-*:*:*)
+ 	if uname -p 2>/dev/null >/dev/null ; then
+ 		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+@@ -1134,71 +1149,94 @@ EOF
+ 	else
+ 		echo ns32k-sni-sysv
+ 	fi
+-	exit 0 ;;
+-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+-                      # says <Richard.M.Bartel at ccMail.Census.GOV>
+-        echo i586-unisys-sysv4
+-        exit 0 ;;
++	exit ;;
++    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
++			# says <Richard.M.Bartel at ccMail.Census.GOV>
++	echo i586-unisys-sysv4
++	exit ;;
+     *:UNIX_System_V:4*:FTX*)
+ 	# From Gerald Hewes <hewes at openmarket.com>.
+ 	# How about differentiating between stratus architectures? -djm
+ 	echo hppa1.1-stratus-sysv4
+-	exit 0 ;;
++	exit ;;
+     *:*:*:FTX*)
+ 	# From seanf at swdc.stratus.com.
+ 	echo i860-stratus-sysv4
+-	exit 0 ;;
++	exit ;;
++    i*86:VOS:*:*)
++	# From Paul.Green at stratus.com.
++	echo ${UNAME_MACHINE}-stratus-vos
++	exit ;;
+     *:VOS:*:*)
+ 	# From Paul.Green at stratus.com.
+ 	echo hppa1.1-stratus-vos
+-	exit 0 ;;
++	exit ;;
+     mc68*:A/UX:*:*)
+ 	echo m68k-apple-aux${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     news*:NEWS-OS:6*:*)
+ 	echo mips-sony-newsos6
+-	exit 0 ;;
++	exit ;;
+     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ 	if [ -d /usr/nec ]; then
+-	        echo mips-nec-sysv${UNAME_RELEASE}
++		echo mips-nec-sysv${UNAME_RELEASE}
+ 	else
+-	        echo mips-unknown-sysv${UNAME_RELEASE}
++		echo mips-unknown-sysv${UNAME_RELEASE}
+ 	fi
+-        exit 0 ;;
++	exit ;;
+     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+ 	echo powerpc-be-beos
+-	exit 0 ;;
++	exit ;;
+     BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+ 	echo powerpc-apple-beos
+-	exit 0 ;;
++	exit ;;
+     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+ 	echo i586-pc-beos
+-	exit 0 ;;
++	exit ;;
++    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
++	echo i586-pc-haiku
++	exit ;;
+     SX-4:SUPER-UX:*:*)
+ 	echo sx4-nec-superux${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     SX-5:SUPER-UX:*:*)
+ 	echo sx5-nec-superux${UNAME_RELEASE}
+-	exit 0 ;;
+-    osfmach3_ppc:*:*:*)
+-        echo powerpc-unknown-linux
+-        exit 0 ;;
++	exit ;;
+     SX-6:SUPER-UX:*:*)
+ 	echo sx6-nec-superux${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
++    SX-7:SUPER-UX:*:*)
++	echo sx7-nec-superux${UNAME_RELEASE}
++	exit ;;
++    SX-8:SUPER-UX:*:*)
++	echo sx8-nec-superux${UNAME_RELEASE}
++	exit ;;
++    SX-8R:SUPER-UX:*:*)
++	echo sx8r-nec-superux${UNAME_RELEASE}
++	exit ;;
+     Power*:Rhapsody:*:*)
+ 	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:Rhapsody:*:*)
+ 	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:Darwin:*:*)
+-	case `uname -p` in
+-	    *86) UNAME_PROCESSOR=i686 ;;
+-	    powerpc) UNAME_PROCESSOR=powerpc ;;
++	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
++	case $UNAME_PROCESSOR in
++	    i386)
++		eval $set_cc_for_build
++		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
++		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
++		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
++		      grep IS_64BIT_ARCH >/dev/null
++		  then
++		      UNAME_PROCESSOR="x86_64"
++		  fi
++		fi ;;
++	    unknown) UNAME_PROCESSOR=powerpc ;;
+ 	esac
+ 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ 	UNAME_PROCESSOR=`uname -p`
+ 	if test "$UNAME_PROCESSOR" = "x86"; then
+@@ -1206,22 +1244,28 @@ EOF
+ 		UNAME_MACHINE=pc
+ 	fi
+ 	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:QNX:*:4*)
+ 	echo i386-pc-qnx
+-	exit 0 ;;
++	exit ;;
++    NEO-?:NONSTOP_KERNEL:*:*)
++	echo neo-tandem-nsk${UNAME_RELEASE}
++	exit ;;
++    NSE-?:NONSTOP_KERNEL:*:*)
++	echo nse-tandem-nsk${UNAME_RELEASE}
++	exit ;;
+     NSR-?:NONSTOP_KERNEL:*:*)
+ 	echo nsr-tandem-nsk${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:NonStop-UX:*:*)
+ 	echo mips-compaq-nonstopux
+-	exit 0 ;;
++	exit ;;
+     BS2000:POSIX*:*:*)
+ 	echo bs2000-siemens-sysv
+-	exit 0 ;;
++	exit ;;
+     DS/*:UNIX_System_V:*:*)
+ 	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+-	exit 0 ;;
++	exit ;;
+     *:Plan9:*:*)
+ 	# "uname -m" is not consistent, so use $cputype instead. 386
+ 	# is converted to i386 for consistency with other x86
+@@ -1232,31 +1276,50 @@ EOF
+ 	    UNAME_MACHINE="$cputype"
+ 	fi
+ 	echo ${UNAME_MACHINE}-unknown-plan9
+-	exit 0 ;;
++	exit ;;
+     *:TOPS-10:*:*)
+ 	echo pdp10-unknown-tops10
+-	exit 0 ;;
++	exit ;;
+     *:TENEX:*:*)
+ 	echo pdp10-unknown-tenex
+-	exit 0 ;;
++	exit ;;
+     KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ 	echo pdp10-dec-tops20
+-	exit 0 ;;
++	exit ;;
+     XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ 	echo pdp10-xkl-tops20
+-	exit 0 ;;
++	exit ;;
+     *:TOPS-20:*:*)
+ 	echo pdp10-unknown-tops20
+-	exit 0 ;;
++	exit ;;
+     *:ITS:*:*)
+ 	echo pdp10-unknown-its
+-	exit 0 ;;
++	exit ;;
+     SEI:*:*:SEIUX)
+-        echo mips-sei-seiux${UNAME_RELEASE}
+-	exit 0 ;;
++	echo mips-sei-seiux${UNAME_RELEASE}
++	exit ;;
+     *:DragonFly:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+-	exit 0 ;;
++	exit ;;
++    *:*VMS:*:*)
++	UNAME_MACHINE=`(uname -p) 2>/dev/null`
++	case "${UNAME_MACHINE}" in
++	    A*) echo alpha-dec-vms ; exit ;;
++	    I*) echo ia64-dec-vms ; exit ;;
++	    V*) echo vax-dec-vms ; exit ;;
++	esac ;;
++    *:XENIX:*:SysV)
++	echo i386-pc-xenix
++	exit ;;
++    i*86:skyos:*:*)
++	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
++	exit ;;
++    i*86:rdos:*:*)
++	echo ${UNAME_MACHINE}-pc-rdos
++	exit ;;
++    i*86:AROS:*:*)
++	echo ${UNAME_MACHINE}-pc-aros
++	exit ;;
+ esac
+ 
+ #echo '(No uname command or uname output not recognized.)' 1>&2
+@@ -1279,16 +1342,16 @@ main ()
+ #include <sys/param.h>
+   printf ("m68k-sony-newsos%s\n",
+ #ifdef NEWSOS4
+-          "4"
++	"4"
+ #else
+-	  ""
++	""
+ #endif
+-         ); exit (0);
++	); exit (0);
+ #endif
+ #endif
+ 
+ #if defined (__arm) && defined (__acorn) && defined (__unix)
+-  printf ("arm-acorn-riscix"); exit (0);
++  printf ("arm-acorn-riscix\n"); exit (0);
+ #endif
+ 
+ #if defined (hp300) && !defined (hpux)
+@@ -1296,16 +1359,15 @@ main ()
+ #endif
+ 
+ #if defined (NeXT)
+-  char * arch;
+-  int version;
+ #if !defined (__ARCHITECTURE__)
+-  arch = "m68k";
+-#else
+-  arch = __ARCHITECTURE__;
+-  if (strcmp(arch, "hppa") == 0) arch = "hppa1.1";
++#define __ARCHITECTURE__ "m68k"
+ #endif
++  int version;
+   version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+-  printf ("%s-next-nextstep%d\n", arch, version);
++  if (version < 4)
++    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
++  else
++    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+   exit (0);
+ #endif
+ 
+@@ -1378,11 +1440,12 @@ main ()
+ }
+ EOF
+ 
+-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
++	{ echo "$SYSTEM_NAME"; exit; }
+ 
+ # Apollos put the system type in the environment.
+ 
+-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+ 
+ # Convex versions that predate uname can use getsysinfo(1)
+ 
+@@ -1391,22 +1454,22 @@ then
+     case `getsysinfo -f cpu_type` in
+     c1*)
+ 	echo c1-convex-bsd
+-	exit 0 ;;
++	exit ;;
+     c2*)
+ 	if getsysinfo -f scalar_acc
+ 	then echo c32-convex-bsd
+ 	else echo c2-convex-bsd
+ 	fi
+-	exit 0 ;;
++	exit ;;
+     c34*)
+ 	echo c34-convex-bsd
+-	exit 0 ;;
++	exit ;;
+     c38*)
+ 	echo c38-convex-bsd
+-	exit 0 ;;
++	exit ;;
+     c4*)
+ 	echo c4-convex-bsd
+-	exit 0 ;;
++	exit ;;
+     esac
+ fi
+ 
+@@ -1417,7 +1480,9 @@ This script, last modified $timestamp, has failed to recognize
+ the operating system you are using. It is advised that you
+ download the most up to date version of the config scripts from
+ 
+-    ftp://ftp.gnu.org/pub/gnu/config/
++  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
++and
++  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+ 
+ If the version you run ($0) is already up to date, please
+ send the following data and any information you think might be
+diff --git a/config/gnu/config.sub b/config/gnu/config.sub
+index d2e3557..e76eaf4 100755
+--- a/config/gnu/config.sub
++++ b/config/gnu/config.sub
+@@ -1,9 +1,10 @@
+ #! /bin/sh
+ # Configuration validation subroutine script.
+ #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
++#   2011 Free Software Foundation, Inc.
+ 
+-timestamp='2004-02-16'
++timestamp='2011-11-11'
+ 
+ # This file is (in principle) common to ALL GNU software.
+ # The presence of a machine in this file suggests that SOME GNU software
+@@ -21,22 +22,26 @@ timestamp='2004-02-16'
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with this program; if not, write to the Free Software
+-# Foundation, Inc., 59 Temple Place - Suite 330,
+-# Boston, MA 02111-1307, USA.
+-
++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
++# 02110-1301, USA.
++#
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+ # the same distribution terms that you use for the rest of that program.
+ 
++
+ # Please send patches to <config-patches at gnu.org>.  Submit a context
+-# diff and a properly formatted ChangeLog entry.
++# diff and a properly formatted GNU ChangeLog entry.
+ #
+ # Configuration subroutine to validate and canonicalize a configuration type.
+ # Supply the specified configuration type as an argument.
+ # If it is invalid, we print an error message on stderr and exit with code 1.
+ # Otherwise, we print the canonical config type on stdout and succeed.
+ 
++# You can get the latest version of this script from:
++# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
++
+ # This file is supposed to be the same for all GNU packages
+ # and recognize all the CPU types, system types and aliases
+ # that are meaningful with *any* GNU software.
+@@ -70,8 +75,9 @@ Report bugs and patches to <config-patches at gnu.org>."
+ version="\
+ GNU config.sub ($timestamp)
+ 
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+-Free Software Foundation, Inc.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
++2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
++Software Foundation, Inc.
+ 
+ This is free software; see the source for copying conditions.  There is NO
+ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+@@ -83,11 +89,11 @@ Try \`$me --help' for more information."
+ while test $# -gt 0 ; do
+   case $1 in
+     --time-stamp | --time* | -t )
+-       echo "$timestamp" ; exit 0 ;;
++       echo "$timestamp" ; exit ;;
+     --version | -v )
+-       echo "$version" ; exit 0 ;;
++       echo "$version" ; exit ;;
+     --help | --h* | -h )
+-       echo "$usage"; exit 0 ;;
++       echo "$usage"; exit ;;
+     -- )     # Stop option processing
+        shift; break ;;
+     - )	# Use stdin as input.
+@@ -99,7 +105,7 @@ while test $# -gt 0 ; do
+     *local*)
+        # First pass through any local machine types.
+        echo $1
+-       exit 0;;
++       exit ;;
+ 
+     * )
+        break ;;
+@@ -118,8 +124,11 @@ esac
+ # Here we must recognize all the valid KERNEL-OS combinations.
+ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+ case $maybe_os in
+-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+-  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
++  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
++  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
++  knetbsd*-gnu* | netbsd*-gnu* | \
++  kopensolaris*-gnu* | \
++  storm-chaos* | os2-emx* | rtmk-nova*)
+     os=-$maybe_os
+     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+     ;;
+@@ -145,10 +154,13 @@ case $os in
+ 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+-	-apple | -axis)
++	-apple | -axis | -knuth | -cray | -microblaze)
+ 		os=
+ 		basic_machine=$1
+ 		;;
++	-bluegene*)
++		os=-cnk
++		;;
+ 	-sim | -cisco | -oki | -wec | -winbond)
+ 		os=
+ 		basic_machine=$1
+@@ -163,13 +175,17 @@ case $os in
+ 		os=-chorusos
+ 		basic_machine=$1
+ 		;;
+- 	-chorusrdb)
+- 		os=-chorusrdb
++	-chorusrdb)
++		os=-chorusrdb
+ 		basic_machine=$1
+- 		;;
++		;;
+ 	-hiux*)
+ 		os=-hiuxwe2
+ 		;;
++	-sco6)
++		os=-sco5v6
++		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++		;;
+ 	-sco5)
+ 		os=-sco3.2v5
+ 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+@@ -186,6 +202,10 @@ case $os in
+ 		# Don't forget version if it is 3.2v4 or newer.
+ 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ 		;;
++	-sco5v6*)
++		# Don't forget version if it is 3.2v4 or newer.
++		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++		;;
+ 	-sco*)
+ 		os=-sco3.2v2
+ 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+@@ -230,22 +250,32 @@ case $basic_machine in
+ 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ 	| am33_2.0 \
+-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
++	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
++        | be32 | be64 \
++	| bfin \
+ 	| c4x | clipper \
+ 	| d10v | d30v | dlx | dsp16xx \
+-	| fr30 | frv \
++	| epiphany \
++	| fido | fr30 | frv \
+ 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
++	| hexagon \
+ 	| i370 | i860 | i960 | ia64 \
+ 	| ip2k | iq2000 \
+-	| m32r | m68000 | m68k | m88k | mcore \
++	| le32 | le64 \
++	| lm32 \
++	| m32c | m32r | m32rle | m68000 | m68k | m88k \
++	| maxq | mb | microblaze | mcore | mep | metag \
+ 	| mips | mipsbe | mipseb | mipsel | mipsle \
+ 	| mips16 \
+ 	| mips64 | mips64el \
+-	| mips64vr | mips64vrel \
++	| mips64octeon | mips64octeonel \
+ 	| mips64orion | mips64orionel \
++	| mips64r5900 | mips64r5900el \
++	| mips64vr | mips64vrel \
+ 	| mips64vr4100 | mips64vr4100el \
+ 	| mips64vr4300 | mips64vr4300el \
+ 	| mips64vr5000 | mips64vr5000el \
++	| mips64vr5900 | mips64vr5900el \
+ 	| mipsisa32 | mipsisa32el \
+ 	| mipsisa32r2 | mipsisa32r2el \
+ 	| mipsisa64 | mipsisa64el \
+@@ -254,30 +284,63 @@ case $basic_machine in
+ 	| mipsisa64sr71k | mipsisa64sr71kel \
+ 	| mipstx39 | mipstx39el \
+ 	| mn10200 | mn10300 \
++	| moxie \
++	| mt \
+ 	| msp430 \
++	| nds32 | nds32le | nds32be \
++	| nios | nios2 \
+ 	| ns16k | ns32k \
+-	| openrisc | or32 \
++	| open8 \
++	| or32 \
+ 	| pdp10 | pdp11 | pj | pjl \
+-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
++	| powerpc | powerpc64 | powerpc64le | powerpcle \
+ 	| pyramid \
+-	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
++	| rl78 | rx \
++	| score \
++	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ 	| sh64 | sh64le \
+-	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+-	| strongarm \
+-	| tahoe | thumb | tic4x | tic80 | tron \
+-	| v850 | v850e \
++	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
++	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
++	| spu \
++	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
++	| ubicom32 \
++	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+ 	| we32k \
+-	| x86 | xscale | xstormy16 | xtensa \
+-	| z8k)
++	| x86 | xc16x | xstormy16 | xtensa \
++	| z8k | z80)
+ 		basic_machine=$basic_machine-unknown
+ 		;;
+-	m6811 | m68hc11 | m6812 | m68hc12)
++	c54x)
++		basic_machine=tic54x-unknown
++		;;
++	c55x)
++		basic_machine=tic55x-unknown
++		;;
++	c6x)
++		basic_machine=tic6x-unknown
++		;;
++	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
+ 		# Motorola 68HC11/12.
+ 		basic_machine=$basic_machine-unknown
+ 		os=-none
+ 		;;
+ 	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ 		;;
++	ms1)
++		basic_machine=mt-unknown
++		;;
++
++	strongarm | thumb | xscale)
++		basic_machine=arm-unknown
++		;;
++
++	xscaleeb)
++		basic_machine=armeb-unknown
++		;;
++
++	xscaleel)
++		basic_machine=armel-unknown
++		;;
+ 
+ 	# We use `pc' rather than `unknown'
+ 	# because (1) that's what they normally are, and
+@@ -297,28 +360,35 @@ case $basic_machine in
+ 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+-	| avr-* \
+-	| bs2000-* \
+-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+-	| clipper-* | cydra-* \
++	| avr-* | avr32-* \
++	| be32-* | be64-* \
++	| bfin-* | bs2000-* \
++	| c[123]* | c30-* | [cjt]90-* | c4x-* \
++	| clipper-* | craynv-* | cydra-* \
+ 	| d10v-* | d30v-* | dlx-* \
+ 	| elxsi-* \
+-	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
++	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ 	| h8300-* | h8500-* \
+ 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
++	| hexagon-* \
+ 	| i*86-* | i860-* | i960-* | ia64-* \
+ 	| ip2k-* | iq2000-* \
+-	| m32r-* \
++	| le32-* | le64-* \
++	| lm32-* \
++	| m32c-* | m32r-* | m32rle-* \
+ 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+-	| m88110-* | m88k-* | mcore-* \
++	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ 	| mips16-* \
+ 	| mips64-* | mips64el-* \
+-	| mips64vr-* | mips64vrel-* \
++	| mips64octeon-* | mips64octeonel-* \
+ 	| mips64orion-* | mips64orionel-* \
++	| mips64r5900-* | mips64r5900el-* \
++	| mips64vr-* | mips64vrel-* \
+ 	| mips64vr4100-* | mips64vr4100el-* \
+ 	| mips64vr4300-* | mips64vr4300el-* \
+ 	| mips64vr5000-* | mips64vr5000el-* \
++	| mips64vr5900-* | mips64vr5900el-* \
+ 	| mipsisa32-* | mipsisa32el-* \
+ 	| mipsisa32r2-* | mipsisa32r2el-* \
+ 	| mipsisa64-* | mipsisa64el-* \
+@@ -326,26 +396,39 @@ case $basic_machine in
+ 	| mipsisa64sb1-* | mipsisa64sb1el-* \
+ 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ 	| mipstx39-* | mipstx39el-* \
++	| mmix-* \
++	| mt-* \
+ 	| msp430-* \
+-	| none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
++	| nds32-* | nds32le-* | nds32be-* \
++	| nios-* | nios2-* \
++	| none-* | np1-* | ns16k-* | ns32k-* \
++	| open8-* \
+ 	| orion-* \
+ 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
++	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+ 	| pyramid-* \
+-	| romp-* | rs6000-* \
+-	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
++	| rl78-* | romp-* | rs6000-* | rx-* \
++	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+-	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+-	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+-	| tahoe-* | thumb-* \
++	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
++	| sparclite-* \
++	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
++	| tahoe-* \
+ 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
++	| tile*-* \
+ 	| tron-* \
+-	| v850-* | v850e-* | vax-* \
++	| ubicom32-* \
++	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
++	| vax-* \
+ 	| we32k-* \
+-	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+-	| xtensa-* \
++	| x86-* | x86_64-* | xc16x-* | xps100-* \
++	| xstormy16-* | xtensa*-* \
+ 	| ymp-* \
+-	| z8k-*)
++	| z8k-* | z80-*)
++		;;
++	# Recognize the basic CPU types without company name, with glob match.
++	xtensa*)
++		basic_machine=$basic_machine-unknown
+ 		;;
+ 	# Recognize the various machine names and aliases which stand
+ 	# for a CPU type and a company and sometimes even an OS.
+@@ -363,7 +446,7 @@ case $basic_machine in
+ 		basic_machine=a29k-amd
+ 		os=-udi
+ 		;;
+-    	abacus)
++	abacus)
+ 		basic_machine=abacus-unknown
+ 		;;
+ 	adobe68k)
+@@ -409,6 +492,10 @@ case $basic_machine in
+ 		basic_machine=m68k-apollo
+ 		os=-bsd
+ 		;;
++	aros)
++		basic_machine=i386-pc
++		os=-aros
++		;;
+ 	aux)
+ 		basic_machine=m68k-apple
+ 		os=-aux
+@@ -417,10 +504,35 @@ case $basic_machine in
+ 		basic_machine=ns32k-sequent
+ 		os=-dynix
+ 		;;
++	blackfin)
++		basic_machine=bfin-unknown
++		os=-linux
++		;;
++	blackfin-*)
++		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
++		os=-linux
++		;;
++	bluegene*)
++		basic_machine=powerpc-ibm
++		os=-cnk
++		;;
++	c54x-*)
++		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
++		;;
++	c55x-*)
++		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
++		;;
++	c6x-*)
++		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
++		;;
+ 	c90)
+ 		basic_machine=c90-cray
+ 		os=-unicos
+ 		;;
++	cegcc)
++		basic_machine=arm-unknown
++		os=-cegcc
++		;;
+ 	convex-c1)
+ 		basic_machine=c1-convex
+ 		os=-bsd
+@@ -445,16 +557,27 @@ case $basic_machine in
+ 		basic_machine=j90-cray
+ 		os=-unicos
+ 		;;
+-	cr16c)
+-		basic_machine=cr16c-unknown
++	craynv)
++		basic_machine=craynv-cray
++		os=-unicosmp
++		;;
++	cr16 | cr16-*)
++		basic_machine=cr16-unknown
+ 		os=-elf
+ 		;;
+ 	crds | unos)
+ 		basic_machine=m68k-crds
+ 		;;
++	crisv32 | crisv32-* | etraxfs*)
++		basic_machine=crisv32-axis
++		;;
+ 	cris | cris-* | etrax*)
+ 		basic_machine=cris-axis
+ 		;;
++	crx)
++		basic_machine=crx-unknown
++		os=-elf
++		;;
+ 	da30 | da30-*)
+ 		basic_machine=m68k-da30
+ 		;;
+@@ -477,6 +600,14 @@ case $basic_machine in
+ 		basic_machine=m88k-motorola
+ 		os=-sysv3
+ 		;;
++	dicos)
++		basic_machine=i686-pc
++		os=-dicos
++		;;
++	djgpp)
++		basic_machine=i586-pc
++		os=-msdosdjgpp
++		;;
+ 	dpx20 | dpx20-*)
+ 		basic_machine=rs6000-bull
+ 		os=-bosx
+@@ -627,6 +758,14 @@ case $basic_machine in
+ 		basic_machine=m68k-isi
+ 		os=-sysv
+ 		;;
++	m68knommu)
++		basic_machine=m68k-unknown
++		os=-linux
++		;;
++	m68knommu-*)
++		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
++		os=-linux
++		;;
+ 	m88k-omron*)
+ 		basic_machine=m88k-omron
+ 		;;
+@@ -638,10 +777,17 @@ case $basic_machine in
+ 		basic_machine=ns32k-utek
+ 		os=-sysv
+ 		;;
++	microblaze)
++		basic_machine=microblaze-xilinx
++		;;
+ 	mingw32)
+ 		basic_machine=i386-pc
+ 		os=-mingw32
+ 		;;
++	mingw32ce)
++		basic_machine=arm-unknown
++		os=-mingw32ce
++		;;
+ 	miniframe)
+ 		basic_machine=m68000-convergent
+ 		;;
+@@ -655,10 +801,6 @@ case $basic_machine in
+ 	mips3*)
+ 		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ 		;;
+-	mmix*)
+-		basic_machine=mmix-knuth
+-		os=-mmixware
+-		;;
+ 	monitor)
+ 		basic_machine=m68k-rom68k
+ 		os=-coff
+@@ -671,10 +813,21 @@ case $basic_machine in
+ 		basic_machine=i386-pc
+ 		os=-msdos
+ 		;;
++	ms1-*)
++		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
++		;;
++	msys)
++		basic_machine=i386-pc
++		os=-msys
++		;;
+ 	mvs)
+ 		basic_machine=i370-ibm
+ 		os=-mvs
+ 		;;
++	nacl)
++		basic_machine=le32-unknown
++		os=-nacl
++		;;
+ 	ncr3000)
+ 		basic_machine=i486-ncr
+ 		os=-sysv4
+@@ -739,9 +892,11 @@ case $basic_machine in
+ 	np1)
+ 		basic_machine=np1-gould
+ 		;;
+-	nv1)
+-		basic_machine=nv1-cray
+-		os=-unicosmp
++	neo-tandem)
++		basic_machine=neo-tandem
++		;;
++	nse-tandem)
++		basic_machine=nse-tandem
+ 		;;
+ 	nsr-tandem)
+ 		basic_machine=nsr-tandem
+@@ -750,9 +905,8 @@ case $basic_machine in
+ 		basic_machine=hppa1.1-oki
+ 		os=-proelf
+ 		;;
+-	or32 | or32-*)
++	openrisc | openrisc-*)
+ 		basic_machine=or32-unknown
+-		os=-coff
+ 		;;
+ 	os400)
+ 		basic_machine=powerpc-ibm
+@@ -774,6 +928,14 @@ case $basic_machine in
+ 		basic_machine=i860-intel
+ 		os=-osf
+ 		;;
++	parisc)
++		basic_machine=hppa-unknown
++		os=-linux
++		;;
++	parisc-*)
++		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
++		os=-linux
++		;;
+ 	pbd)
+ 		basic_machine=sparc-tti
+ 		;;
+@@ -783,6 +945,12 @@ case $basic_machine in
+ 	pc532 | pc532-*)
+ 		basic_machine=ns32k-pc532
+ 		;;
++	pc98)
++		basic_machine=i386-pc
++		;;
++	pc98-*)
++		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
++		;;
+ 	pentium | p5 | k5 | k6 | nexgen | viac3)
+ 		basic_machine=i586-pc
+ 		;;
+@@ -812,9 +980,10 @@ case $basic_machine in
+ 		;;
+ 	power)	basic_machine=power-ibm
+ 		;;
+-	ppc)	basic_machine=powerpc-unknown
++	ppc | ppcbe)	basic_machine=powerpc-unknown
+ 		;;
+-	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
++	ppc-* | ppcbe-*)
++		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ 		;;
+ 	ppcle | powerpclittle | ppc-le | powerpc-little)
+ 		basic_machine=powerpcle-unknown
+@@ -839,6 +1008,10 @@ case $basic_machine in
+ 		basic_machine=i586-unknown
+ 		os=-pw32
+ 		;;
++	rdos)
++		basic_machine=i386-pc
++		os=-rdos
++		;;
+ 	rom68k)
+ 		basic_machine=m68k-rom68k
+ 		os=-coff
+@@ -865,6 +1038,10 @@ case $basic_machine in
+ 	sb1el)
+ 		basic_machine=mipsisa64sb1el-unknown
+ 		;;
++	sde)
++		basic_machine=mipsisa32-sde
++		os=-elf
++		;;
+ 	sei)
+ 		basic_machine=mips-sei
+ 		os=-seiux
+@@ -876,6 +1053,9 @@ case $basic_machine in
+ 		basic_machine=sh-hitachi
+ 		os=-hms
+ 		;;
++	sh5el)
++		basic_machine=sh5le-unknown
++		;;
+ 	sh64)
+ 		basic_machine=sh64-unknown
+ 		;;
+@@ -897,6 +1077,9 @@ case $basic_machine in
+ 		basic_machine=i860-stratus
+ 		os=-sysv4
+ 		;;
++	strongarm-* | thumb-*)
++		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
++		;;
+ 	sun2)
+ 		basic_machine=m68000-sun
+ 		;;
+@@ -953,17 +1136,9 @@ case $basic_machine in
+ 		basic_machine=t90-cray
+ 		os=-unicos
+ 		;;
+-	tic54x | c54x*)
+-		basic_machine=tic54x-unknown
+-		os=-coff
+-		;;
+-	tic55x | c55x*)
+-		basic_machine=tic55x-unknown
+-		os=-coff
+-		;;
+-	tic6x | c6x*)
+-		basic_machine=tic6x-unknown
+-		os=-coff
++	tile*)
++		basic_machine=$basic_machine-unknown
++		os=-linux-gnu
+ 		;;
+ 	tx39)
+ 		basic_machine=mipstx39-unknown
+@@ -1025,9 +1200,16 @@ case $basic_machine in
+ 		basic_machine=hppa1.1-winbond
+ 		os=-proelf
+ 		;;
++	xbox)
++		basic_machine=i686-pc
++		os=-mingw32
++		;;
+ 	xps | xps100)
+ 		basic_machine=xps100-honeywell
+ 		;;
++	xscale-* | xscalee[bl]-*)
++		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
++		;;
+ 	ymp)
+ 		basic_machine=ymp-cray
+ 		os=-unicos
+@@ -1036,6 +1218,10 @@ case $basic_machine in
+ 		basic_machine=z8k-unknown
+ 		os=-sim
+ 		;;
++	z80-*-coff)
++		basic_machine=z80-unknown
++		os=-sim
++		;;
+ 	none)
+ 		basic_machine=none-none
+ 		os=-none
+@@ -1055,6 +1241,9 @@ case $basic_machine in
+ 	romp)
+ 		basic_machine=romp-ibm
+ 		;;
++	mmix)
++		basic_machine=mmix-knuth
++		;;
+ 	rs6000)
+ 		basic_machine=rs6000-ibm
+ 		;;
+@@ -1071,13 +1260,10 @@ case $basic_machine in
+ 	we32k)
+ 		basic_machine=we32k-att
+ 		;;
+-	sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
++	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+ 		basic_machine=sh-unknown
+ 		;;
+-	sh64)
+-		basic_machine=sh64-unknown
+-		;;
+-	sparc | sparcv9 | sparcv9b)
++	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ 		basic_machine=sparc-sun
+ 		;;
+ 	cydra)
+@@ -1121,9 +1307,12 @@ esac
+ if [ x"$os" != x"" ]
+ then
+ case $os in
+-        # First match some system type aliases
+-        # that might get confused with valid system types.
++	# First match some system type aliases
++	# that might get confused with valid system types.
+ 	# -solaris* is a basic system type, with this one exception.
++	-auroraux)
++		os=-auroraux
++		;;
+ 	-solaris1 | -solaris1.*)
+ 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ 		;;
+@@ -1144,26 +1333,31 @@ case $os in
+ 	# Each alternative MUST END IN A *, to match a version number.
+ 	# -sysv* is not here because it comes later, after sysvr4.
+ 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
++	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
++	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
++	      | -sym* | -kopensolaris* \
+ 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+-	      | -aos* \
++	      | -aos* | -aros* \
+ 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
++	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
++	      | -openbsd* | -solidbsd* \
+ 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+-	      | -chorusos* | -chorusrdb* \
+-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+-	      | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
++	      | -chorusos* | -chorusrdb* | -cegcc* \
++	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
++	      | -mingw32* | -linux-gnu* | -linux-android* \
++	      | -linux-newlib* | -linux-uclibc* \
++	      | -uxpv* | -beos* | -mpeix* | -udk* \
+ 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ 	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
++	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
++	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+ 	# Remember, each alternative MUST END IN *, to match a version number.
+ 		;;
+ 	-qnx*)
+@@ -1181,7 +1375,7 @@ case $os in
+ 		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ 		;;
+ 	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
++	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ 	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ 		;;
+ 	-mac*)
+@@ -1202,7 +1396,7 @@ case $os in
+ 	-opened*)
+ 		os=-openedition
+ 		;;
+-        -os400*)
++	-os400*)
+ 		os=-os400
+ 		;;
+ 	-wince*)
+@@ -1251,7 +1445,7 @@ case $os in
+ 	-sinix*)
+ 		os=-sysv4
+ 		;;
+-        -tpf*)
++	-tpf*)
+ 		os=-tpf
+ 		;;
+ 	-triton*)
+@@ -1290,6 +1484,14 @@ case $os in
+ 	-kaos*)
+ 		os=-kaos
+ 		;;
++	-zvmoe)
++		os=-zvmoe
++		;;
++	-dicos*)
++		os=-dicos
++		;;
++	-nacl*)
++		;;
+ 	-none)
+ 		;;
+ 	*)
+@@ -1312,6 +1514,12 @@ else
+ # system, and we'll never get to this point.
+ 
+ case $basic_machine in
++	score-*)
++		os=-elf
++		;;
++	spu-*)
++		os=-elf
++		;;
+ 	*-acorn)
+ 		os=-riscix1.2
+ 		;;
+@@ -1321,9 +1529,18 @@ case $basic_machine in
+ 	arm*-semi)
+ 		os=-aout
+ 		;;
+-    c4x-* | tic4x-*)
+-        os=-coff
+-        ;;
++	c4x-* | tic4x-*)
++		os=-coff
++		;;
++	tic54x-*)
++		os=-coff
++		;;
++	tic55x-*)
++		os=-coff
++		;;
++	tic6x-*)
++		os=-coff
++		;;
+ 	# This must come before the *-dec entry.
+ 	pdp10-*)
+ 		os=-tops20
+@@ -1349,6 +1566,9 @@ case $basic_machine in
+ 	m68*-cisco)
+ 		os=-aout
+ 		;;
++	mep-*)
++		os=-elf
++		;;
+ 	mips*-cisco)
+ 		os=-elf
+ 		;;
+@@ -1367,9 +1587,15 @@ case $basic_machine in
+ 	*-be)
+ 		os=-beos
+ 		;;
++	*-haiku)
++		os=-haiku
++		;;
+ 	*-ibm)
+ 		os=-aix
+ 		;;
++	*-knuth)
++		os=-mmixware
++		;;
+ 	*-wec)
+ 		os=-proelf
+ 		;;
+@@ -1472,7 +1698,7 @@ case $basic_machine in
+ 			-sunos*)
+ 				vendor=sun
+ 				;;
+-			-aix*)
++			-cnk*|-aix*)
+ 				vendor=ibm
+ 				;;
+ 			-beos*)
+@@ -1535,7 +1761,7 @@ case $basic_machine in
+ esac
+ 
+ echo $basic_machine$os
+-exit 0
++exit
+ 
+ # Local variables:
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
+-- 
+1.7.10
+
diff --git a/0003-Don-t-add-rpaths-to-libraries.patch b/0003-Don-t-add-rpaths-to-libraries.patch
new file mode 100644
index 0000000..eedc190
--- /dev/null
+++ b/0003-Don-t-add-rpaths-to-libraries.patch
@@ -0,0 +1,26 @@
+From 649d2c547fd28c48b52348328cd267854389f45f Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones at redhat.com>
+Date: Tue, 29 May 2012 20:43:34 +0100
+Subject: [PATCH 3/7] Don't add rpaths to libraries.
+
+---
+ tools/Makefile.shared |    3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/tools/Makefile.shared b/tools/Makefile.shared
+index 247575a..05de46c 100644
+--- a/tools/Makefile.shared
++++ b/tools/Makefile.shared
+@@ -103,9 +103,6 @@ ocamlmklib.ml: ocamlmklib.mlp ../config/Makefile
+ 	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
+ 
+-- 
+1.7.10
+
diff --git a/0004-configure-Allow-user-defined-C-compiler-flags.patch b/0004-configure-Allow-user-defined-C-compiler-flags.patch
new file mode 100644
index 0000000..c209644
--- /dev/null
+++ b/0004-configure-Allow-user-defined-C-compiler-flags.patch
@@ -0,0 +1,27 @@
+From 0febdfe1698639ce53e6ed8935cdc573be302b49 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones at redhat.com>
+Date: Tue, 29 May 2012 20:44:18 +0100
+Subject: [PATCH 4/7] configure: Allow user defined C compiler flags.
+
+---
+ configure |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/configure b/configure
+index 9be5199..d0a6b0f 100755
+--- a/configure
++++ b/configure
+@@ -1600,6 +1600,10 @@ case "$buggycc" in
+     nativecccompopts="$nativecccompopts -fomit-frame-pointer";;
+ esac
+ 
++# Allow user defined C Compiler flags
++bytecccompopts="$bytecccompopts $CFLAGS"
++nativecccompopts="$nativecccompopts $CFLAGS"
++
+ # Finish generated files
+ 
+ cclibs="$cclibs $mathlib"
+-- 
+1.7.10
+
diff --git a/debian_patches_0013-ocamlopt-arm-add-.type-directive-for-code-symbols.patch b/0005-ocamlopt-arm-add-.type-directive-for-code-symbols.patch
similarity index 94%
rename from debian_patches_0013-ocamlopt-arm-add-.type-directive-for-code-symbols.patch
rename to 0005-ocamlopt-arm-add-.type-directive-for-code-symbols.patch
index a4c0491..3493142 100644
--- a/debian_patches_0013-ocamlopt-arm-add-.type-directive-for-code-symbols.patch
+++ b/0005-ocamlopt-arm-add-.type-directive-for-code-symbols.patch
@@ -1,6 +1,7 @@
+From e3b5b13c53b62b99c4d6764b52a7269a6fe5b983 Mon Sep 17 00:00:00 2001
 From: Stephane Glondu <steph at glondu.net>
-Date: Fri, 12 Aug 2011 21:13:17 +0200
-Subject: ocamlopt/arm: add .type directive for code symbols
+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
@@ -8,7 +9,7 @@ Signed-off-by: Stephane Glondu <steph at glondu.net>
 ---
  asmcomp/arm/emit.mlp |    1 +
  asmrun/arm.S         |   12 ++++++++++++
- 2 files changed, 13 insertions(+), 0 deletions(-)
+ 2 files changed, 13 insertions(+)
 
 diff --git a/asmcomp/arm/emit.mlp b/asmcomp/arm/emit.mlp
 index 2003313..a4b2241 100644
@@ -123,3 +124,5 @@ index 164f731..1313e9c 100644
      /* Load address of [caml_array_bound_error] in r12 */
          ldr     r12, .Lcaml_array_bound_error
 -- 
+1.7.10
+
diff --git a/ocaml-ppc64.patch b/0006-Add-support-for-ppc64.patch
similarity index 95%
rename from ocaml-ppc64.patch
rename to 0006-Add-support-for-ppc64.patch
index 88eff4b..f9b0dde 100644
--- a/ocaml-ppc64.patch
+++ b/0006-Add-support-for-ppc64.patch
@@ -1,6 +1,41 @@
-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
+From a9648ff01cea44e6892663e97c3c388686b4fcd7 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones at redhat.com>
+Date: Tue, 29 May 2012 20:47:07 +0100
+Subject: [PATCH 6/7] Add support for ppc64.
+
+Note (1): This patch was rejected upstream because they don't have
+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.
+---
+ asmcomp/power64/arch.ml       |   84 ++++
+ asmcomp/power64/emit.mlp      |  989 +++++++++++++++++++++++++++++++++++++++++
+ asmcomp/power64/proc.ml       |  245 ++++++++++
+ asmcomp/power64/reload.ml     |   18 +
+ asmcomp/power64/scheduling.ml |   66 +++
+ 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(-)
+ create mode 100644 asmcomp/power64/arch.ml
+ create mode 100644 asmcomp/power64/emit.mlp
+ create mode 100644 asmcomp/power64/proc.ml
+ create mode 100644 asmcomp/power64/reload.ml
+ create mode 100644 asmcomp/power64/scheduling.ml
+ create mode 100644 asmcomp/power64/selection.ml
+ create mode 100644 asmrun/power64-elf.S
+
+diff --git a/asmcomp/power64/arch.ml b/asmcomp/power64/arch.ml
+new file mode 100644
+index 0000000..93b5b18
+--- /dev/null
++++ b/asmcomp/power64/arch.ml
 @@ -0,0 +1,84 @@
 +(***********************************************************************)
 +(*                                                                     *)
@@ -86,9 +121,11 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/arch.ml ocaml-3.10.1.ppc64/asmcomp/power6
 +  | Ialloc_far n ->
 +      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
+diff --git a/asmcomp/power64/emit.mlp b/asmcomp/power64/emit.mlp
+new file mode 100644
+index 0000000..95eb193
+--- /dev/null
++++ b/asmcomp/power64/emit.mlp
 @@ -0,0 +1,989 @@
 +(***********************************************************************)
 +(*                                                                     *)
@@ -1079,9 +1116,11 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/emit.mlp ocaml-3.10.1.ppc64/asmcomp/power
 +  `    .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
+diff --git a/asmcomp/power64/proc.ml b/asmcomp/power64/proc.ml
+new file mode 100644
+index 0000000..95bf6c4
+--- /dev/null
++++ b/asmcomp/power64/proc.ml
 @@ -0,0 +1,245 @@
 +(***********************************************************************)
 +(*                                                                     *)
@@ -1328,9 +1367,11 @@ 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
+diff --git a/asmcomp/power64/reload.ml b/asmcomp/power64/reload.ml
+new file mode 100644
+index 0000000..42d5d4d
+--- /dev/null
++++ b/asmcomp/power64/reload.ml
 @@ -0,0 +1,18 @@
 +(***********************************************************************)
 +(*                                                                     *)
@@ -1350,9 +1391,11 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/reload.ml ocaml-3.10.1.ppc64/asmcomp/powe
 +
 +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
+diff --git a/asmcomp/power64/scheduling.ml b/asmcomp/power64/scheduling.ml
+new file mode 100644
+index 0000000..d73e333
+--- /dev/null
++++ b/asmcomp/power64/scheduling.ml
 @@ -0,0 +1,66 @@
 +(***********************************************************************)
 +(*                                                                     *)
@@ -1420,9 +1463,11 @@ 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
+diff --git a/asmcomp/power64/selection.ml b/asmcomp/power64/selection.ml
+new file mode 100644
+index 0000000..afc7649
+--- /dev/null
++++ b/asmcomp/power64/selection.ml
 @@ -0,0 +1,103 @@
 +(***********************************************************************)
 +(*                                                                     *)
@@ -1527,12 +1572,13 @@ diff -uNr ocaml-3.10.1/asmcomp/power64/selection.ml ocaml-3.10.1.ppc64/asmcomp/p
 +end
 +
 +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
-@@ -74,6 +74,12 @@
+diff --git a/asmrun/Makefile b/asmrun/Makefile
+index efffa33..3525b82 100644
+--- a/asmrun/Makefile
++++ b/asmrun/Makefile
+@@ -74,6 +74,12 @@ power.o: power-$(SYSTEM).o
  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 +1587,13 @@ 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
+diff --git a/asmrun/power64-elf.S b/asmrun/power64-elf.S
+new file mode 100644
+index 0000000..b2c24d6
+--- /dev/null
++++ b/asmrun/power64-elf.S
 @@ -0,0 +1,486 @@
 +/*********************************************************************/
 +/*                                                                   */
@@ -2033,9 +2081,10 @@ diff -uNr ocaml-3.10.1/asmrun/power64-elf.S ocaml-3.10.1.ppc64/asmrun/power64-el
 +        .short  0               /* no roots here */
 +        .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
+diff --git a/asmrun/stack.h b/asmrun/stack.h
+index c778873..f1d2e6a 100644
+--- a/asmrun/stack.h
++++ b/asmrun/stack.h
 @@ -65,6 +65,15 @@
  #define Callback_link(sp) ((struct caml_context *)((sp) + Trap_frame_size))
  #endif
@@ -2052,10 +2101,11 @@ diff -uNr ocaml-3.10.1/asmrun/stack.h ocaml-3.10.1.ppc64/asmrun/stack.h
  #ifdef TARGET_m68k
  #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
-@@ -632,6 +632,7 @@
+diff --git a/configure b/configure
+index d0a6b0f..6ed0a9c 100755
+--- a/configure
++++ b/configure
+@@ -685,6 +685,7 @@ case "$host" in
    hppa2.0*-*-hpux*)             arch=hppa; system=hpux;;
    hppa*-*-linux*)               arch=hppa; system=linux;;
    hppa*-*-gnu*)                 arch=hppa; system=gnu;;
@@ -2063,7 +2113,7 @@ diff -uNr ocaml-3.11.0+beta1/configure ocaml-3.11.0+beta1.ppc64/configure
    powerpc*-*-linux*)            arch=power; model=ppc; system=elf;;
    powerpc-*-netbsd*)            arch=power; model=ppc; system=elf;;
    powerpc-*-rhapsody*)          arch=power; model=ppc; system=rhapsody;;
-@@ -655,7 +656,7 @@
+@@ -709,7 +710,7 @@ esac
  
  if $arch64; then
    case "$arch,$model" in
@@ -2072,7 +2122,7 @@ diff -uNr ocaml-3.11.0+beta1/configure ocaml-3.11.0+beta1.ppc64/configure
        arch=none; model=default; system=unknown;;
    esac
  fi
-@@ -712,6 +713,8 @@
+@@ -772,6 +773,8 @@ case "$arch,$model,$system" in
                      aspp='as -n32 -O2';;
    power,*,elf)      as='as -u -m ppc'
                      aspp='gcc -c';;
@@ -2081,3 +2131,6 @@ diff -uNr ocaml-3.11.0+beta1/configure ocaml-3.11.0+beta1.ppc64/configure
    power,*,bsd)      as='as'
                      aspp='gcc -c';;
    power,*,rhapsody) as="as -arch $model"
+-- 
+1.7.10
+
diff --git a/ocaml-3.12.1-merge-the-new-ARM-backend-into-trunk-PR-5433.patch b/0007-New-ARM-backend-written-by-Benedikt-Meurer-PR-5433.patch
similarity index 94%
rename from ocaml-3.12.1-merge-the-new-ARM-backend-into-trunk-PR-5433.patch
rename to 0007-New-ARM-backend-written-by-Benedikt-Meurer-PR-5433.patch
index d9426df..852579a 100644
--- a/ocaml-3.12.1-merge-the-new-ARM-backend-into-trunk-PR-5433.patch
+++ b/0007-New-ARM-backend-written-by-Benedikt-Meurer-PR-5433.patch
@@ -1,7 +1,33 @@
-diff -urN ocaml-3.12.1-noarm/asmcomp/amd64/selection.ml ocaml-3.12.1-arm/asmcomp/amd64/selection.ml
---- ocaml-3.12.1-noarm/asmcomp/amd64/selection.ml	2010-04-08 04:58:41.000000000 +0100
-+++ ocaml-3.12.1-arm/asmcomp/amd64/selection.ml	2012-04-28 12:19:05.173844703 +0100
-@@ -121,7 +121,7 @@
+From 03318d9e7ef402f137dd100fe31bd01c37c1b94f Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones at redhat.com>
+Date: Tue, 29 May 2012 20:50:42 +0100
+Subject: [PATCH 7/7] New ARM backend, written by Benedikt Meurer (PR#5433).
+
+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/reload.ml        |    4 +-
+ asmcomp/arm/scheduling.ml    |   80 ++--
+ asmcomp/arm/selection.ml     |  343 ++++++++++-------
+ asmcomp/i386/selection.ml    |   14 +-
+ asmcomp/power/selection.ml   |    2 +-
+ asmcomp/power64/selection.ml |    2 +-
+ asmcomp/selectgen.ml         |   13 +-
+ asmcomp/selectgen.mli        |    2 +-
+ asmcomp/sparc/selection.ml   |    2 +-
+ asmrun/arm.S                 |  544 ++++++++++++++++-----------
+ asmrun/signals_osdep.h       |    2 +-
+ configure                    |   11 +-
+ 16 files changed, 1477 insertions(+), 743 deletions(-)
+
+diff --git a/asmcomp/amd64/selection.ml b/asmcomp/amd64/selection.ml
+index f0546cf..5d9f6fa 100644
+--- a/asmcomp/amd64/selection.ml
++++ b/asmcomp/amd64/selection.ml
+@@ -121,7 +121,7 @@ method is_immediate n = n <= 0x7FFFFFFF && n >= -0x80000000
  
  method is_immediate_natint n = n <= 0x7FFFFFFFn && n >= -0x80000000n
  
@@ -10,7 +36,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/amd64/selection.ml ocaml-3.12.1-arm/asmcomp
    let (a, d) = select_addr exp in
    (* PR#4625: displacement must be a signed 32-bit immediate *)
    if d < -0x8000_0000 || d > 0x7FFF_FFFF
-@@ -157,7 +157,7 @@
+@@ -157,7 +157,7 @@ method! select_operation op args =
    match op with
    (* Recognize the LEA instruction *)
      Caddi | Cadda | Csubi | Csuba ->
@@ -19,7 +45,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/amd64/selection.ml ocaml-3.12.1-arm/asmcomp
          (Iindexed d, _) -> super#select_operation op args
        | (Iindexed2 0, _) -> super#select_operation op args
        | (addr, arg) -> (Ispecific(Ilea addr), [arg])
-@@ -191,7 +191,7 @@
+@@ -191,7 +191,7 @@ method! select_operation op args =
        begin match args with
          [loc; Cop(Caddi, [Cop(Cload _, [loc']); Cconst_int n])]
          when loc = loc' && self#is_immediate n ->
@@ -28,7 +54,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/amd64/selection.ml ocaml-3.12.1-arm/asmcomp
            (Ispecific(Ioffset_loc(n, addr)), [arg])
        | _ ->
            super#select_operation op args
-@@ -202,12 +202,12 @@
+@@ -202,12 +202,12 @@ method! select_operation op args =
  
  method select_floatarith commutative regular_op mem_op args =
    match args with
@@ -45,9 +71,10 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/amd64/selection.ml ocaml-3.12.1-arm/asmcomp
        (Ispecific(Ifloatarithmem(mem_op, addr)),
                   [arg2; arg1])
    | [arg1; arg2] ->
-diff -urN ocaml-3.12.1-noarm/asmcomp/arm/arch.ml ocaml-3.12.1-arm/asmcomp/arm/arch.ml
---- ocaml-3.12.1-noarm/asmcomp/arm/arch.ml	2002-11-29 15:03:37.000000000 +0000
-+++ ocaml-3.12.1-arm/asmcomp/arm/arch.ml	2012-04-28 09:20:35.016065972 +0100
+diff --git a/asmcomp/arm/arch.ml b/asmcomp/arm/arch.ml
+index 998fa4b..c4aca8d 100644
+--- a/asmcomp/arm/arch.ml
++++ b/asmcomp/arm/arch.ml
 @@ -1,25 +1,98 @@
  (***********************************************************************)
  (*                                                                     *)
@@ -154,7 +181,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/arch.ml ocaml-3.12.1-arm/asmcomp/arm/ar
  
  (* Addressing modes *)
  
-@@ -37,6 +110,14 @@
+@@ -37,6 +110,14 @@ type specific_operation =
      Ishiftarith of arith_operation * int
    | Ishiftcheckbound of int
    | Irevsubimm of int
@@ -169,7 +196,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/arch.ml ocaml-3.12.1-arm/asmcomp/arm/ar
  
  and arith_operation =
      Ishiftadd
-@@ -51,6 +132,10 @@
+@@ -51,6 +132,10 @@ let size_addr = 4
  let size_int = 4
  let size_float = 8
  
@@ -180,7 +207,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/arch.ml ocaml-3.12.1-arm/asmcomp/arm/ar
  (* Operations on addressing modes *)
  
  let identity_addressing = Iindexed 0
-@@ -84,3 +169,56 @@
+@@ -84,3 +169,56 @@ let print_specific_operation printreg op ppf arg =
        fprintf ppf "check %a >> %i > %a" printreg arg.(0) n printreg arg.(1)
    | Irevsubimm n ->
        fprintf ppf "%i %s %a" n "-" printreg arg.(0)
@@ -237,9 +264,10 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/arch.ml ocaml-3.12.1-arm/asmcomp/arm/ar
 +    s := !s + 2
 +  done;
 +  !s <= m
-diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/emit.mlp
---- ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp	2012-04-27 20:51:07.196775304 +0100
-+++ ocaml-3.12.1-arm/asmcomp/arm/emit.mlp	2012-04-28 09:20:35.037066348 +0100
+diff --git a/asmcomp/arm/emit.mlp b/asmcomp/arm/emit.mlp
+index a4b2241..846ee4a 100644
+--- a/asmcomp/arm/emit.mlp
++++ b/asmcomp/arm/emit.mlp
 @@ -1,16 +1,17 @@
  (***********************************************************************)
  (*                                                                     *)
@@ -264,7 +292,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
  
  (* Emission of ARM assembly code *)
  
-@@ -33,16 +34,28 @@
+@@ -33,16 +34,28 @@ let fastcode_flag = ref true
  let emit_label lbl =
    emit_string ".L"; emit_int lbl
  
@@ -297,7 +325,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
    | _ -> fatal_error "Emit_arm.emit_reg"
  
  (* Layout of the stack frame *)
-@@ -53,14 +66,23 @@
+@@ -53,14 +66,23 @@ let frame_size () =
    let sz =
      !stack_offset +
      4 * num_stack_slots.(0) +
@@ -324,7 +352,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
  
  (* Output a stack reference *)
  
-@@ -79,20 +101,13 @@
+@@ -79,20 +101,13 @@ let emit_addressing addr r n =
  
  (* Record live pointers at call points *)
  
@@ -347,12 +375,22 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
        | {typ = Addr; loc = Stack s} as reg ->
            live_offset := slot_offset s (register_class reg) :: !live_offset
        | _ -> ())
-@@ -100,18 +115,57 @@
+@@ -100,18 +115,57 @@ let record_frame live =
    frame_descriptors :=
      { fd_lbl = lbl;
        fd_frame_size = frame_size();
 -      fd_live_offset = !live_offset } :: !frame_descriptors;
 -  `{emit_label lbl}:`
+-
+-let emit_frame fd =
+-  `	.word	{emit_label fd.fd_lbl} + 4\n`;
+-  `	.short	{emit_int fd.fd_frame_size}\n`;
+-  `	.short	{emit_int (List.length fd.fd_live_offset)}\n`;
+-  List.iter
+-    (fun n ->
+-      `	.short	{emit_int n}\n`)
+-    fd.fd_live_offset;
+-  `	.align	2\n`
 +      fd_live_offset = !live_offset;
 +      fd_debuginfo = dbg } :: !frame_descriptors;
 +  lbl
@@ -394,16 +432,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
 +  end else begin
 +    let bd = List.hd !bound_error_sites in bd.bd_lbl
 +  end
- 
--let emit_frame fd =
--  `	.word	{emit_label fd.fd_lbl} + 4\n`;
--  `	.short	{emit_int fd.fd_frame_size}\n`;
--  `	.short	{emit_int (List.length fd.fd_live_offset)}\n`;
--  List.iter
--    (fun n ->
--      `	.short	{emit_int n}\n`)
--    fd.fd_live_offset;
--  `	.align	2\n`
++
 +let emit_call_bound_error bd =
 +  `{emit_label bd.bd_lbl}:	{emit_call "caml_ml_array_bound_error"}\n`;
 +  `{emit_label bd.bd_frame_lbl}:\n`
@@ -416,7 +445,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
  
  (* Names of various instructions *)
  
-@@ -121,22 +175,13 @@
+@@ -121,22 +175,13 @@ let name_for_comparison = function
    | Iunsigned Ceq -> "eq" | Iunsigned Cne -> "ne" | Iunsigned Cle -> "ls"
    | Iunsigned Cge -> "cs" | Iunsigned Clt -> "cc" | Iunsigned Cgt -> "hi"
  
@@ -442,7 +471,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
    | _ -> assert false
  
  let name_for_shift_operation = function
-@@ -145,60 +190,54 @@
+@@ -145,60 +190,54 @@ let name_for_shift_operation = function
    | Iasr -> "asr"
    | _ -> assert false
  
@@ -529,7 +558,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
          first := false)
    end
  
-@@ -206,46 +245,105 @@
+@@ -206,46 +245,105 @@ let emit_intconst r n =
  
  let emit_stack_adjustment instr n =
    if n <= 0 then 0 else
@@ -573,13 +602,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
      lbl
  
 -(* Emit all pending constants *)
-+(* Label a GOTREL literal *)
-+let gotrel_literal l =
-+  let lbl = new_label() in
-+  num_literals := !num_literals + 1;
-+  gotrel_literals := (l, lbl) :: !gotrel_literals;
-+  lbl
- 
+-
 -let emit_constants () =
 -  Hashtbl.iter
 -    (fun s lbl ->
@@ -591,6 +614,13 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
 -    float_constants;
 -  Hashtbl.clear symbol_constants;
 -  Hashtbl.clear float_constants;
++(* Label a GOTREL literal *)
++let gotrel_literal l =
++  let lbl = new_label() in
++  num_literals := !num_literals + 1;
++  gotrel_literals := (l, lbl) :: !gotrel_literals;
++  lbl
++
 +(* Label a symbol literal *)
 +let symbol_literal s =
 +  try
@@ -659,7 +689,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
  (* Output the assembly code for an instruction *)
  
  let emit_instr i =
-@@ -254,40 +352,76 @@
+@@ -254,40 +352,76 @@ let emit_instr i =
      | Lop(Imove | Ispill | Ireload) ->
          let src = i.arg.(0) and dst = i.res.(0) in
          if src.loc = dst.loc then 0 else begin
@@ -760,7 +790,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
      | Lop(Itailcall_ind) ->
          let n = frame_size() in
          if !contains_calls then
-@@ -303,17 +437,16 @@
+@@ -303,17 +437,16 @@ let emit_instr i =
            if !contains_calls then
              `	ldr	lr, [sp, #{emit_int (n-4)}]\n`;
            let ninstr = emit_stack_adjustment "add" n in
@@ -786,7 +816,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
      | Lop(Istackoffset n) ->
          assert (n mod 8 = 0);
          let ninstr =
-@@ -322,16 +455,28 @@
+@@ -322,16 +455,28 @@ let emit_instr i =
            else emit_stack_adjustment "add" (-n) in
          stack_offset := !stack_offset + n;
          ninstr
@@ -825,7 +855,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
      | Lop(Iload(size, addr)) ->
          let r = i.res.(0) in
          let instr =
-@@ -340,65 +485,114 @@
+@@ -340,65 +485,114 @@ let emit_instr i =
            | Byte_signed -> "ldrsb"
            | Sixteen_unsigned -> "ldrh"
            | Sixteen_signed -> "ldrsh"
@@ -971,7 +1001,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
      | Lop(Iintop_imm(Imod, n)) -> (* n is a power of 2 *)
          let l = Misc.log2 n in
          let a = i.arg.(0) in
-@@ -409,40 +603,71 @@
+@@ -409,40 +603,71 @@ let emit_instr i =
          `	mov	{emit_reg r}, {emit_reg r}, lsr #{emit_int (32-l)}\n`;
          `	bpl	{emit_label lbl}\n`;
          `	cmp	{emit_reg r}, #0\n`;
@@ -1064,7 +1094,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
      | Lreloadretaddr ->
          let n = frame_size() in
          `	ldr	lr, [sp, #{emit_int(n-4)}]\n`; 1
-@@ -458,29 +683,41 @@
+@@ -458,29 +683,41 @@ let emit_instr i =
          begin match tst with
            Itruetest ->
              `	cmp	{emit_reg i.arg.(0)}, #0\n`;
@@ -1116,7 +1146,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
          `	cmp	{emit_reg i.arg.(0)}, #1\n`;
          begin match lbl0 with
            None -> ()
-@@ -495,108 +732,135 @@
+@@ -495,108 +732,135 @@ let emit_instr i =
          | Some lbl -> `	bgt	{emit_label lbl}\n`
          end;
          4
@@ -1309,7 +1339,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
  
  let data l =
    `	.data\n`;
-@@ -605,32 +869,62 @@
+@@ -605,32 +869,62 @@ let data l =
  (* Beginning / end of an assembly file *)
  
  let begin_assembly() =
@@ -1385,9 +1415,10 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/emit.mlp ocaml-3.12.1-arm/asmcomp/arm/e
 +      `	.section	.note.GNU-stack,\"\",%progbits\n`
 +  | _ -> ()
 +  end
-diff -urN ocaml-3.12.1-noarm/asmcomp/arm/proc.ml ocaml-3.12.1-arm/asmcomp/arm/proc.ml
---- ocaml-3.12.1-noarm/asmcomp/arm/proc.ml	2009-05-04 14:46:46.000000000 +0100
-+++ ocaml-3.12.1-arm/asmcomp/arm/proc.ml	2012-04-28 09:20:35.055066672 +0100
+diff --git a/asmcomp/arm/proc.ml b/asmcomp/arm/proc.ml
+index e56ac6e..aed2b01 100644
+--- a/asmcomp/arm/proc.ml
++++ b/asmcomp/arm/proc.ml
 @@ -1,16 +1,17 @@
  (***********************************************************************)
  (*                                                                     *)
@@ -1412,7 +1443,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/proc.ml ocaml-3.12.1-arm/asmcomp/arm/pr
  
  (* Description of the ARM processor *)
  
-@@ -26,32 +27,56 @@
+@@ -26,32 +27,56 @@ let word_addressed = false
  
  (* Registers available for register allocation *)
  
@@ -1449,8 +1480,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/proc.ml ocaml-3.12.1-arm/asmcomp/arm/pr
 -|]
 +let int_reg_name =
 +  [| "r0"; "r1"; "r2"; "r3"; "r4"; "r5"; "r6"; "r7"; "r12" |]
- 
--let num_register_classes = 1
++
 +let float_reg_name =
 +  [| "d0";  "d1";  "d2";  "d3";  "d4";  "d5";  "d6";  "d7";
 +     "d8";  "d9";  "d10"; "d11"; "d12"; "d13"; "d14"; "d15";
@@ -1464,7 +1494,8 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/proc.ml ocaml-3.12.1-arm/asmcomp/arm/pr
 +   This way we can choose between VFPv3-D16 and VFPv3
 +   at (ocamlopt) runtime using command line switches.
 +*)
-+
+ 
+-let num_register_classes = 1
 +let num_register_classes = 3
  
 -let register_class r = assert (r.typ <> Float); 0
@@ -1488,7 +1519,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/proc.ml ocaml-3.12.1-arm/asmcomp/arm/pr
  
  let rotate_registers = true
  
-@@ -59,25 +84,34 @@
+@@ -59,25 +84,34 @@ let rotate_registers = true
  
  let hard_int_reg =
    let v = Array.create 9 Reg.dummy in
@@ -1496,16 +1527,16 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/proc.ml ocaml-3.12.1-arm/asmcomp/arm/pr
 +  for i = 0 to 8 do
 +    v.(i) <- Reg.at_location Int (Reg i)
 +  done;
-   v
- 
--let all_phys_regs = hard_int_reg
++  v
++
 +let hard_float_reg =
 +  let v = Array.create 32 Reg.dummy in
 +  for i = 0 to 31 do
 +    v.(i) <- Reg.at_location Float (Reg(100 + i))
 +  done;
-+  v
-+
+   v
+ 
+-let all_phys_regs = hard_int_reg
 +let all_phys_regs =
 +  Array.append hard_int_reg hard_float_reg
  
@@ -1531,7 +1562,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/proc.ml ocaml-3.12.1-arm/asmcomp/arm/pr
    let ofs = ref 0 in
    for i = 0 to Array.length arg - 1 do
      match arg.(i).typ with
-@@ -90,37 +124,86 @@
+@@ -90,37 +124,86 @@ let calling_conventions first_int last_int make_stack arg =
            ofs := !ofs + size_int
          end
      | Float ->
@@ -1630,7 +1661,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/proc.ml ocaml-3.12.1-arm/asmcomp/arm/pr
    | _ -> [||]
  
  let destroyed_at_raise = all_phys_regs
-@@ -128,15 +211,16 @@
+@@ -128,15 +211,16 @@ let destroyed_at_raise = all_phys_regs
  (* Maximal register pressure *)
  
  let safe_register_pressure = function
@@ -1651,16 +1682,17 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/proc.ml ocaml-3.12.1-arm/asmcomp/arm/pr
  let contains_calls = ref false
  
  (* Calling the assembler *)
-@@ -144,6 +228,3 @@
+@@ -144,6 +228,3 @@ let contains_calls = ref false
  let assemble_file infile outfile =
    Ccomp.command (Config.asm ^ " -o " ^
                   Filename.quote outfile ^ " " ^ Filename.quote infile)
 -
 -open Clflags;;
 -open Config;;
-diff -urN ocaml-3.12.1-noarm/asmcomp/arm/reload.ml ocaml-3.12.1-arm/asmcomp/arm/reload.ml
---- ocaml-3.12.1-noarm/asmcomp/arm/reload.ml	1999-11-17 18:59:06.000000000 +0000
-+++ ocaml-3.12.1-arm/asmcomp/arm/reload.ml	2012-04-28 09:20:35.060066764 +0100
+diff --git a/asmcomp/arm/reload.ml b/asmcomp/arm/reload.ml
+index 0917438..c5b137a 100644
+--- a/asmcomp/arm/reload.ml
++++ b/asmcomp/arm/reload.ml
 @@ -1,6 +1,6 @@
  (***********************************************************************)
  (*                                                                     *)
@@ -1678,9 +1710,10 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/reload.ml ocaml-3.12.1-arm/asmcomp/arm/
  
  (* Reloading for the ARM *)
  
-diff -urN ocaml-3.12.1-noarm/asmcomp/arm/scheduling.ml ocaml-3.12.1-arm/asmcomp/arm/scheduling.ml
---- ocaml-3.12.1-noarm/asmcomp/arm/scheduling.ml	1999-11-17 18:59:06.000000000 +0000
-+++ ocaml-3.12.1-arm/asmcomp/arm/scheduling.ml	2012-04-28 09:20:35.065066855 +0100
+diff --git a/asmcomp/arm/scheduling.ml b/asmcomp/arm/scheduling.ml
+index 930e1bc..4b47733 100644
+--- a/asmcomp/arm/scheduling.ml
++++ b/asmcomp/arm/scheduling.ml
 @@ -1,51 +1,79 @@
  (***********************************************************************)
  (*                                                                     *)
@@ -1787,9 +1820,10 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/scheduling.ml ocaml-3.12.1-arm/asmcomp/
    | _ -> 1
  
  end
-diff -urN ocaml-3.12.1-noarm/asmcomp/arm/selection.ml ocaml-3.12.1-arm/asmcomp/arm/selection.ml
---- ocaml-3.12.1-noarm/asmcomp/arm/selection.ml	2010-04-22 13:39:40.000000000 +0100
-+++ ocaml-3.12.1-arm/asmcomp/arm/selection.ml	2012-04-28 09:20:35.171068774 +0100
+diff --git a/asmcomp/arm/selection.ml b/asmcomp/arm/selection.ml
+index f09d146..94d0367 100644
+--- a/asmcomp/arm/selection.ml
++++ b/asmcomp/arm/selection.ml
 @@ -1,54 +1,77 @@
  (***********************************************************************)
  (*                                                                     *)
@@ -1834,25 +1868,6 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/selection.ml ocaml-3.12.1-arm/asmcomp/a
 -  if shift > 22 then false
 -  else if n land (0xFF lsl shift) = n then true
 -  else is_immed n (shift + 2)
--
--(* We have 12-bit + sign byte offsets for word accesses,
--   8-bit + sign word offsets for float accesses,
--   and 8-bit + sign byte offsets for bytes and shorts.
--   Use lowest common denominator. *)
--
--let is_offset n = n < 256 && n > -256
--
--let is_intconst = function Cconst_int n -> true | _ -> false
--
--(* Soft emulation of float comparisons *)
--
--let float_comparison_function = function
--  | Ceq -> "__eqdf2"
--  | Cne -> "__nedf2"
--  | Clt -> "__ltdf2"
--  | Cle -> "__ledf2"
--  | Cgt -> "__gtdf2"
--  | Cge -> "__gedf2"
 +let is_offset chunk n =
 +  match chunk with
 +  (* VFPv3 load/store have -1020 to 1020 *)
@@ -1871,17 +1886,31 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/selection.ml ocaml-3.12.1-arm/asmcomp/a
 +  (* Everything else has -255 to 255 *)
 +  | _ ->
 +      n >= -255 && n <= 255
-+
+ 
+-(* We have 12-bit + sign byte offsets for word accesses,
+-   8-bit + sign word offsets for float accesses,
+-   and 8-bit + sign byte offsets for bytes and shorts.
+-   Use lowest common denominator. *)
 +let is_intconst = function
 +    Cconst_int _ -> true
 +  | _ -> false
-+
+ 
+-let is_offset n = n < 256 && n > -256
 +(* Special constraints on operand and result registers *)
-+
+ 
+-let is_intconst = function Cconst_int n -> true | _ -> false
 +exception Use_default
-+
+ 
+-(* Soft emulation of float comparisons *)
 +let r1 = phys_reg 1
-+
+ 
+-let float_comparison_function = function
+-  | Ceq -> "__eqdf2"
+-  | Cne -> "__nedf2"
+-  | Clt -> "__ltdf2"
+-  | Cle -> "__ledf2"
+-  | Cgt -> "__gtdf2"
+-  | Cge -> "__gedf2"
 +let pseudoregs_for_operation op arg res =
 +  match op with
 +  (* For mul rd,rm,rs and mla rd,rm,rs,ra (pre-ARMv6) the registers rm
@@ -1906,7 +1935,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/selection.ml ocaml-3.12.1-arm/asmcomp/a
  
  (* Instruction selection *)
  class selector = object(self)
-@@ -56,23 +79,32 @@
+@@ -56,23 +79,32 @@ class selector = object(self)
  inherit Selectgen.selector_generic as super
  
  method! regs_for tyv =
@@ -1933,15 +1962,15 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/selection.ml ocaml-3.12.1-arm/asmcomp/a
  method is_immediate n =
 -  n land 0xFF = n || is_immed n 2
 +  is_immediate (Int32.of_int n)
- 
--method select_addressing = function
--    Cop(Cadda, [arg; Cconst_int n]) when is_offset n ->
++
 +method! is_simple_expr = function
 +  (* inlined floating-point ops are simple if their arguments are *)
 +  | Cop(Cextcall("sqrt", _, _, _), args) when !fpu >= VFPv3_D16 ->
 +      List.for_all self#is_simple_expr args
 +  | e -> super#is_simple_expr e
-+
+ 
+-method select_addressing = function
+-    Cop(Cadda, [arg; Cconst_int n]) when is_offset n ->
 +method select_addressing chunk = function
 +  | Cop(Cadda, [arg; Cconst_int n])
 +    when is_offset chunk n ->
@@ -1952,7 +1981,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/selection.ml ocaml-3.12.1-arm/asmcomp/a
        (Iindexed n, Cop(Cadda, [arg1; arg2]))
    | arg ->
        (Iindexed 0, arg)
-@@ -91,109 +123,146 @@
+@@ -91,109 +123,146 @@ method select_shift_arith op shiftop shiftrevop args =
    | [Cop(Casr, [arg1; Cconst_int n]); arg2]
      when n > 0 && n < 32 && not(is_intconst arg1) ->
        (Ispecific(Ishiftarith(shiftrevop, -n)), [arg2; arg1])
@@ -2111,7 +2140,8 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/selection.ml ocaml-3.12.1-arm/asmcomp/a
 +        Cop(Cextcall("__aeabi_d2f", typ_int, false, Debuginfo.none),
 +            [arg2]) in
 +      self#select_operation (Cstore Word) [arg1; arg2']
-+  (* Other operations are regular *)
+   (* Other operations are regular *)
+-  | _ -> super#select_operation op args
 +  | (op, args) -> super#select_operation op args
 +
 +method private select_operation_vfpv3 op args =
@@ -2136,8 +2166,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/selection.ml ocaml-3.12.1-arm/asmcomp/a
 +  (* Recognize floating-point square root *)
 +  | (Cextcall("sqrt", _, false, _), args) ->
 +      (Ispecific Isqrtf, args)
-   (* Other operations are regular *)
--  | _ -> super#select_operation op args
++  (* Other operations are regular *)
 +  | (op, args) -> super#select_operation op args
  
  method! select_condition = function
@@ -2190,10 +2219,11 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/arm/selection.ml ocaml-3.12.1-arm/asmcomp/a
  
  end
  
-diff -urN ocaml-3.12.1-noarm/asmcomp/i386/selection.ml ocaml-3.12.1-arm/asmcomp/i386/selection.ml
---- ocaml-3.12.1-noarm/asmcomp/i386/selection.ml	2010-04-08 04:58:41.000000000 +0100
-+++ ocaml-3.12.1-arm/asmcomp/i386/selection.ml	2012-04-28 12:19:05.529851563 +0100
-@@ -168,7 +168,7 @@
+diff --git a/asmcomp/i386/selection.ml b/asmcomp/i386/selection.ml
+index 1700bf3..827a63d 100644
+--- a/asmcomp/i386/selection.ml
++++ b/asmcomp/i386/selection.ml
+@@ -168,7 +168,7 @@ method! is_simple_expr e =
    | _ ->
        super#is_simple_expr e
  
@@ -2202,7 +2232,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/i386/selection.ml ocaml-3.12.1-arm/asmcomp/
    match select_addr exp with
      (Asymbol s, d) ->
        (Ibased(s, d), Ctuple [])
-@@ -200,7 +200,7 @@
+@@ -200,7 +200,7 @@ method! select_operation op args =
    match op with
    (* Recognize the LEA instruction *)
      Caddi | Cadda | Csubi | Csuba ->
@@ -2211,7 +2241,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/i386/selection.ml ocaml-3.12.1-arm/asmcomp/
          (Iindexed d, _) -> super#select_operation op args
        | (Iindexed2 0, _) -> super#select_operation op args
        | (addr, arg) -> (Ispecific(Ilea addr), [arg])
-@@ -233,7 +233,7 @@
+@@ -233,7 +233,7 @@ method! select_operation op args =
        begin match args with
          [loc; Cop(Caddi, [Cop(Cload _, [loc']); Cconst_int n])]
          when loc = loc' ->
@@ -2220,7 +2250,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/i386/selection.ml ocaml-3.12.1-arm/asmcomp/
            (Ispecific(Ioffset_loc(n, addr)), [arg])
        | _ ->
            super#select_operation op args
-@@ -250,11 +250,11 @@
+@@ -250,11 +250,11 @@ method! select_operation op args =
  method select_floatarith regular_op reversed_op mem_op mem_rev_op args =
    match args with
      [arg1; Cop(Cload chunk, [loc2])] ->
@@ -2234,7 +2264,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/i386/selection.ml ocaml-3.12.1-arm/asmcomp/
        (Ispecific(Ifloatarithmem(chunk_double chunk, mem_rev_op, addr)),
                   [arg2; arg1])
    | [arg1; arg2] ->
-@@ -295,10 +295,10 @@
+@@ -295,10 +295,10 @@ method select_push exp =
    | Cconst_natpointer n -> (Ispecific(Ipush_int n), Ctuple [])
    | Cconst_symbol s -> (Ispecific(Ipush_symbol s), Ctuple [])
    | Cop(Cload Word, [loc]) ->
@@ -2247,10 +2277,11 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/i386/selection.ml ocaml-3.12.1-arm/asmcomp/
        (Ispecific(Ipush_load_float addr), arg)
    | _ -> (Ispecific(Ipush), exp)
  
-diff -urN ocaml-3.12.1-noarm/asmcomp/power/selection.ml ocaml-3.12.1-arm/asmcomp/power/selection.ml
---- ocaml-3.12.1-noarm/asmcomp/power/selection.ml	2010-04-22 13:51:06.000000000 +0100
-+++ ocaml-3.12.1-arm/asmcomp/power/selection.ml	2012-04-28 12:19:05.537851684 +0100
-@@ -52,7 +52,7 @@
+diff --git a/asmcomp/power/selection.ml b/asmcomp/power/selection.ml
+index ed15efb..0532d6b 100644
+--- a/asmcomp/power/selection.ml
++++ b/asmcomp/power/selection.ml
+@@ -52,7 +52,7 @@ inherit Selectgen.selector_generic as super
  
  method is_immediate n = (n <= 32767) && (n >= -32768)
  
@@ -2259,10 +2290,24 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/power/selection.ml ocaml-3.12.1-arm/asmcomp
    match select_addr exp with
      (Asymbol s, d) ->
        (Ibased(s, d), Ctuple [])
-diff -urN ocaml-3.12.1-noarm/asmcomp/selectgen.ml ocaml-3.12.1-arm/asmcomp/selectgen.ml
---- ocaml-3.12.1-noarm/asmcomp/selectgen.ml	2010-09-02 14:29:21.000000000 +0100
-+++ ocaml-3.12.1-arm/asmcomp/selectgen.ml	2012-04-28 12:19:05.538851709 +0100
-@@ -204,7 +204,7 @@
+diff --git a/asmcomp/power64/selection.ml b/asmcomp/power64/selection.ml
+index afc7649..18b5318 100644
+--- a/asmcomp/power64/selection.ml
++++ b/asmcomp/power64/selection.ml
+@@ -52,7 +52,7 @@ inherit Selectgen.selector_generic as super
+ 
+ method is_immediate n = (n <= 32767) && (n >= -32768)
+ 
+-method select_addressing exp =
++method select_addressing chunk exp =
+   match select_addr exp with
+     (Asymbol s, d) ->
+       (Ibased(s, d), Ctuple [])
+diff --git a/asmcomp/selectgen.ml b/asmcomp/selectgen.ml
+index 2fc40f7..0bc9efb 100644
+--- a/asmcomp/selectgen.ml
++++ b/asmcomp/selectgen.ml
+@@ -204,7 +204,7 @@ method virtual is_immediate : int -> bool
  (* Selection of addressing modes *)
  
  method virtual select_addressing :
@@ -2271,7 +2316,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/selectgen.ml ocaml-3.12.1-arm/asmcomp/selec
  
  (* Default instruction selection for stores (of words) *)
  
-@@ -219,10 +219,10 @@
+@@ -219,10 +219,10 @@ method select_operation op args =
    | (Capply(ty, dbg), _) -> (Icall_ind, args)
    | (Cextcall(s, ty, alloc, dbg), _) -> (Iextcall(s, alloc), args)
    | (Cload chunk, [arg]) ->
@@ -2284,7 +2329,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/selectgen.ml ocaml-3.12.1-arm/asmcomp/selec
        if chunk = Word then begin
          let (op, newarg2) = self#select_store addr arg2 in
          (op, [newarg2; eloc])
-@@ -366,7 +366,7 @@
+@@ -366,7 +366,7 @@ method insert_move src dst =
      self#insert (Iop Imove) [|src|] [|dst|]
  
  method insert_moves src dst =
@@ -2293,7 +2338,7 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/selectgen.ml ocaml-3.12.1-arm/asmcomp/selec
      self#insert_move src.(i) dst.(i)
    done
  
-@@ -490,9 +490,8 @@
+@@ -490,9 +490,8 @@ method emit_expr env exp =
                let (loc_arg, stack_ofs) =
                  self#emit_extcall_args env new_args in
                let rd = self#regs_for ty in
@@ -2305,10 +2350,11 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/selectgen.ml ocaml-3.12.1-arm/asmcomp/selec
                self#insert_move_results loc_res rd stack_ofs;
                Some rd
            | Ialloc _ ->
-diff -urN ocaml-3.12.1-noarm/asmcomp/selectgen.mli ocaml-3.12.1-arm/asmcomp/selectgen.mli
---- ocaml-3.12.1-noarm/asmcomp/selectgen.mli	2010-05-21 13:00:49.000000000 +0100
-+++ ocaml-3.12.1-arm/asmcomp/selectgen.mli	2012-04-28 12:19:05.539851737 +0100
-@@ -26,7 +26,7 @@
+diff --git a/asmcomp/selectgen.mli b/asmcomp/selectgen.mli
+index ae53cda..69dae6d 100644
+--- a/asmcomp/selectgen.mli
++++ b/asmcomp/selectgen.mli
+@@ -26,7 +26,7 @@ class virtual selector_generic : object
      (* Must be defined to indicate whether a constant is a suitable
         immediate operand to arithmetic instructions *)
    method virtual select_addressing :
@@ -2317,10 +2363,11 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/selectgen.mli ocaml-3.12.1-arm/asmcomp/sele
      (* Must be defined to select addressing modes *)
    method is_simple_expr: Cmm.expression -> bool
      (* Can be overridden to reflect special extcalls known to be pure *)
-diff -urN ocaml-3.12.1-noarm/asmcomp/sparc/selection.ml ocaml-3.12.1-arm/asmcomp/sparc/selection.ml
---- ocaml-3.12.1-noarm/asmcomp/sparc/selection.ml	2010-04-22 13:51:06.000000000 +0100
-+++ ocaml-3.12.1-arm/asmcomp/sparc/selection.ml	2012-04-28 12:19:05.540851767 +0100
-@@ -26,7 +26,7 @@
+diff --git a/asmcomp/sparc/selection.ml b/asmcomp/sparc/selection.ml
+index 82758dc..c1f30fd 100644
+--- a/asmcomp/sparc/selection.ml
++++ b/asmcomp/sparc/selection.ml
+@@ -26,7 +26,7 @@ inherit Selectgen.selector_generic as super
  
  method is_immediate n = (n <= 4095) && (n >= -4096)
  
@@ -2329,9 +2376,10 @@ diff -urN ocaml-3.12.1-noarm/asmcomp/sparc/selection.ml ocaml-3.12.1-arm/asmcomp
      Cconst_symbol s ->
        (Ibased(s, 0), Ctuple [])
    | Cop(Cadda, [Cconst_symbol s; Cconst_int n]) ->
-diff -urN ocaml-3.12.1-noarm/asmrun/arm.S ocaml-3.12.1-arm/asmrun/arm.S
---- ocaml-3.12.1-noarm/asmrun/arm.S	2012-04-27 20:51:07.197775311 +0100
-+++ ocaml-3.12.1-arm/asmrun/arm.S	2012-04-28 13:39:34.463111027 +0100
+diff --git a/asmrun/arm.S b/asmrun/arm.S
+index 1313e9c..6482956 100644
+--- a/asmrun/arm.S
++++ b/asmrun/arm.S
 @@ -1,286 +1,411 @@
  /***********************************************************************/
  /*                                                                     */
@@ -2794,10 +2842,10 @@ diff -urN ocaml-3.12.1-noarm/asmrun/arm.S ocaml-3.12.1-arm/asmrun/arm.S
 +        .size   .Lcaml_retaddr, .-.Lcaml_retaddr
 +        .type   caml_start_program, %function
 +        .size   caml_start_program, .-caml_start_program
++
++/* The trap handler */
  
 -    /* The trap handler */
-+/* The trap handler */
-+
 +        .align  2
  .Ltrap_handler:
      /* Save exception pointer */
@@ -2934,7 +2982,7 @@ diff -urN ocaml-3.12.1-noarm/asmrun/arm.S ocaml-3.12.1-arm/asmrun/arm.S
      /* Initial shuffling of arguments */
      /* (r0 = closure, r1 = arg1, r2 = arg2, r3 = arg3) */
          mov     r12, r0
-@@ -288,43 +413,36 @@
+@@ -288,43 +413,36 @@ caml_callback3_exn:
          mov     r1, r2          /* r1 = second arg */
          mov     r2, r3          /* r2 = third arg */
          mov     r3, r12         /* r3 = closure environment */
@@ -2994,9 +3042,10 @@ diff -urN ocaml-3.12.1-noarm/asmrun/arm.S ocaml-3.12.1-arm/asmrun/arm.S
          .align  2
 +        .type   caml_system__frametable, %object
 +        .size   caml_system__frametable, .-caml_system__frametable
-diff -urN ocaml-3.12.1-noarm/asmrun/signals_osdep.h ocaml-3.12.1-arm/asmrun/signals_osdep.h
---- ocaml-3.12.1-noarm/asmrun/signals_osdep.h	2009-05-20 12:52:42.000000000 +0100
-+++ ocaml-3.12.1-arm/asmrun/signals_osdep.h	2012-04-28 09:23:12.209919224 +0100
+diff --git a/asmrun/signals_osdep.h b/asmrun/signals_osdep.h
+index 1e91327..732f3a0 100644
+--- a/asmrun/signals_osdep.h
++++ b/asmrun/signals_osdep.h
 @@ -78,7 +78,7 @@
  
  /****************** ARM, Linux */
@@ -3006,10 +3055,11 @@ diff -urN ocaml-3.12.1-noarm/asmrun/signals_osdep.h ocaml-3.12.1-arm/asmrun/sign
  
    #include <sys/ucontext.h>
  
-diff -urN ocaml-3.12.1-noarm/configure ocaml-3.12.1-arm/configure
---- ocaml-3.12.1-noarm/configure	2012-04-27 20:51:07.193775283 +0100
-+++ ocaml-3.12.1-arm/configure	2012-04-28 09:23:59.270773673 +0100
-@@ -636,6 +636,7 @@
+diff --git a/configure b/configure
+index 6ed0a9c..4e07c92 100755
+--- a/configure
++++ b/configure
+@@ -636,6 +636,7 @@ if test $withsharedlibs = "yes"; then
      i[345]86-*-netbsd*)           natdynlink=true;;
      x86_64-*-netbsd*)             natdynlink=true;;
      i386-*-gnu0.3)                natdynlink=true;;
@@ -3017,7 +3067,7 @@ diff -urN ocaml-3.12.1-noarm/configure ocaml-3.12.1-arm/configure
    esac
  fi
  
-@@ -690,8 +691,13 @@
+@@ -691,8 +692,13 @@ case "$host" in
    powerpc-*-rhapsody*)          arch=power; model=ppc; system=rhapsody;;
    powerpc-*-darwin*)            arch=power; system=rhapsody
                                  if $arch64; then model=ppc64; else model=ppc; fi;;
@@ -3033,7 +3083,7 @@ diff -urN ocaml-3.12.1-noarm/configure ocaml-3.12.1-arm/configure
    ia64-*-linux*)                arch=ia64; system=linux;;
    ia64-*-gnu*)                  arch=ia64; system=gnu;;
    ia64-*-freebsd*)              arch=ia64; system=freebsd;;
-@@ -801,6 +807,7 @@
+@@ -804,6 +810,7 @@ case "$arch,$model,$system" in
      case "$nativecc" in gcc*) ;; *) cc_profile='-xpg';; esac;;
    amd64,*,linux) profiling='prof';;
    amd64,*,gnu) profiling='prof';;
@@ -3041,3 +3091,6 @@ diff -urN ocaml-3.12.1-noarm/configure ocaml-3.12.1-arm/configure
    *) profiling='noprof';;
  esac
  
+-- 
+1.7.10
+
diff --git a/ocaml.spec b/ocaml.spec
index 2f89c21..ff53063 100644
--- a/ocaml.spec
+++ b/ocaml.spec
@@ -2,7 +2,7 @@
 
 Name:           ocaml
 Version:        3.12.1
-Release:        4%{?dist}
+Release:        5%{?dist}
 
 Summary:        Objective Caml compiler and programming environment
 
@@ -16,32 +16,26 @@ Source1:        http://caml.inria.fr/distrib/ocaml-3.12/ocaml-3.12-refman.html.t
 Source2:        http://caml.inria.fr/distrib/ocaml-3.12/ocaml-3.12-refman.pdf
 Source3:        http://caml.inria.fr/distrib/ocaml-3.12/ocaml-3.12-refman.info.tar.gz
 
-# Useful utilities from Debian, and sent upstream.
-# http://git.debian.org/?p=pkg-ocaml-maint/packages/ocaml.git;a=tree;f=debian/ocamlbyteinfo;hb=HEAD
-Source6:        ocamlbyteinfo.ml
-#Source7:        ocamlplugininfo.ml
-
-# GNU config.guess and config.sub supplied with OCaml are 8 years old.
-# Use newer versions.
-Source8:        config.guess
-Source9:        config.sub
-
-Patch0:         ocaml-3.12.0-rpath.patch
-Patch1:         ocaml-user-cflags.patch
-
-# Patch from Debian for ARM (sent upstream).
-Patch3:         debian_patches_0013-ocamlopt-arm-add-.type-directive-for-code-symbols.patch
-
-# Non-upstream patch to build on ppc64.
-Patch4:         ocaml-ppc64.patch
-
-# New ARM backend by Benedikt Meurer (PR#5433), backported to OCaml 3.12.1.
-Patch5:         ocaml-3.12.1-merge-the-new-ARM-backend-into-trunk-PR-5433.patch
-
-# the new arm backend missed one small patch for PPC:
-Patch6:		ocaml-3.12-ppc.patch
-
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+# IMPORTANT NOTE:
+#
+# These patches are generated from unpacked sources stored in a
+# fedorahosted git repository.  If you change the patches here, they
+# will be OVERWRITTEN by the next update.  Instead, request commit
+# access to the fedorahosted project:
+#
+# http://git.fedorahosted.org/git/?p=fedora-ocaml.git
+#
+# ALTERNATIVELY add a patch to the end of the list (leaving the
+# existing patches unchanged) adding a comment to note that it should
+# be incorporated into the git repo at a later time.
+#
+Patch0001:      0001-ocamlbyteinfo-ocamlplugininfo-Useful-utilities-from-.patch
+Patch0002:      0002-GNU-config.guess-and-config.sub-replacements.patch
+Patch0003:      0003-Don-t-add-rpaths-to-libraries.patch
+Patch0004:      0004-configure-Allow-user-defined-C-compiler-flags.patch
+Patch0005:      0005-ocamlopt-arm-add-.type-directive-for-code-symbols.patch
+Patch0006:      0006-Add-support-for-ppc64.patch
+Patch0007:      0007-New-ARM-backend-written-by-Benedikt-Meurer-PR-5433.patch
 
 # Depend on previous version of OCaml so that ocamlobjinfo
 # can run.
@@ -230,18 +224,16 @@ man pages and info files.
 %setup -q -T -b 0 -n %{name}-%{version}
 %setup -q -T -D -a 1 -n %{name}-%{version}
 %setup -q -T -D -a 3 -n %{name}-%{version}
-%patch0 -p1 -b .rpath
-%patch1 -p1 -b .cflags
-%patch3 -p1 -b .arm-type-dir
-%ifarch ppc ppc64
-%patch4 -p1 -b .ppc64
-%patch6 -p1 -b .ppc64_1
-%endif
-%patch5 -p1 -b .new-arm
+
+git init
+git config user.email "noone at example.com"
+git config user.name "no one"
+git add .
+git commit -a -q -m "%{version} baseline"
+git am %{patches}
 
 cp %{SOURCE2} refman.pdf
 
-cp %{SOURCE8} %{SOURCE9} config/gnu/
 chmod +x config/gnu/config.{guess,sub}
 
 
@@ -261,7 +253,6 @@ make -C emacs ocamltags
 
 # Currently these tools are supplied by Debian, but are expected
 # to go upstream at some point.
-cp %{SOURCE6} .
 includes="-nostdlib -I stdlib -I utils -I parsing -I typing -I bytecomp -I asmcomp -I driver -I otherlibs/unix -I otherlibs/str -I otherlibs/dynlink"
 boot/ocamlrun ./ocamlc $includes dynlinkaux.cmo ocamlbyteinfo.ml -o ocamlbyteinfo
 #cp otherlibs/dynlink/natdynlink.ml .
@@ -508,7 +499,12 @@ fi
 
 
 %changelog
-* Tue May 15 2012 Tue May 15 2012 Karsten Hopp <karsten at redhat.com> 3.12.1-4
+* Tue May 29 2012 Richard W.M. Jones <rjones at redhat.com> 3.12.1-5
+- Move patches to external git repo:
+  http://git.fedorahosted.org/git/?p=fedora-ocaml.git
+  There should be no change introduced here.
+
+* Tue May 15 2012 Karsten Hopp <karsten at redhat.com> 3.12.1-4
 - ppc64 got broken by the new ARM backend, add a minor patch
 
 * Sat Apr 28 2012 Richard W.M. Jones <rjones at redhat.com> 3.12.1-3


More information about the scm-commits mailing list