[ghc] update to 7.4.2 bootstrap

Jens Petersen petersen at fedoraproject.org
Fri Aug 24 07:30:53 UTC 2012


commit d69bc0fa3704e441cb5d836a9601970cb2696654
Author: Jens Petersen <petersen at redhat.com>
Date:   Fri Aug 24 16:30:44 2012 +0900

    update to 7.4.2 bootstrap
    
    - drop arm StgCRun patches
    - update arm hf patch
    - use _smp_mflags

 .gitignore                                         |    2 +
 ...CRun-to-not-save-and-restore-r11-fp-regis.patch |   29 -
 ...tgCRun-clobbered-register-list-for-both-A.patch |   34 -
 ...support-for-ARM-hard-float-ABI-fixes-5914.patch | 1274 ++++++++++++++++++++
 ghc-debian-ARM-VFPv3D16.patch                      |   16 -
 ghc-debian-armhf_llvm_abi.patch                    |   26 -
 ghc.spec                                           |   47 +-
 sources                                            |    3 +-
 8 files changed, 1297 insertions(+), 134 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index fb09fbc..6f437bb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,5 @@ testsuite-6.12.3.tar.bz2
 /testsuite-7.0.4.tar.bz2
 /ghc-7.4.1-testsuite.tar.bz2
 /ghc-7.4.1-src.tar.bz2
+/ghc-7.4.2-src.tar.bz2
+/ghc-7.4.2-testsuite.tar.bz2
diff --git a/ghc-7.4-add-support-for-ARM-hard-float-ABI-fixes-5914.patch b/ghc-7.4-add-support-for-ARM-hard-float-ABI-fixes-5914.patch
new file mode 100644
index 0000000..a9b897b
--- /dev/null
+++ b/ghc-7.4-add-support-for-ARM-hard-float-ABI-fixes-5914.patch
@@ -0,0 +1,1274 @@
+From 83195ff5ba73779514e3d06b1457d45f849c7fc2 Mon Sep 17 00:00:00 2001
+From: Karel Gardas <karel.gardas at centrum.cz>
+Date: Wed, 25 Apr 2012 09:04:50 +0200
+Subject: [PATCH] add support for ARM hard-float ABI (fixes #5914)
+
+This patch enhances Platform's ArchARM to include ARM ABI value. It also
+tweaks configure machinery to detect hard-float ABI and to set it wherever
+needed. Finally when hard-float ABI is in use, pass appropriate compiler
+option to the LLVM's llc. Fixes #5914.
+---
+ aclocal.m4                                         |    2 +-
+ compiler/main/DriverPipeline.hs                    |   16 +-
+ compiler/nativeGen/AsmCodeGen.lhs                  |    2 +-
+ compiler/nativeGen/RegAlloc/Graph/TrivColorable.hs |   56 ++--
+ compiler/nativeGen/RegAlloc/Linear/FreeRegs.hs     |   14 +-
+ compiler/nativeGen/RegAlloc/Linear/Main.hs         |   14 +-
+ compiler/nativeGen/TargetReg.hs                    |   70 ++--
+ compiler/utils/Platform.hs                         |   12 +-
+ config.guess                                       |  482 ++++++++++----------
+ configure.ac                                       |   14 +
+ 10 files changed, 345 insertions(+), 337 deletions(-)
+
+diff --git a/aclocal.m4 b/aclocal.m4
+index 5652185..c196bdf 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -171,7 +171,7 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_VARS],
+             ;;
+         arm)
+             GET_ARM_ISA()
+-            test -z "[$]2" || eval "[$]2=\"ArchARM {armISA = \$ARM_ISA, armISAExt = \$ARM_ISA_EXT}\""
++            test -z "[$]2" || eval "[$]2=\"ArchARM {armISA = \$ARM_ISA, armISAExt = \$ARM_ISA_EXT, armABI = \$ARM_ABI}\""
+             ;;
+         alpha|mips|mipseb|mipsel|hppa|hppa1_1|ia64|m68k|rs6000|s390|s390x|sparc64|vax)
+             test -z "[$]2" || eval "[$]2=ArchUnknown"
+diff -u ghc-7.4.1.20120508/compiler/main/DriverPipeline.hs.arm ghc-7.4.1.20120508/compiler/main/DriverPipeline.hs
+--- ghc-7.4.1.20120508/compiler/main/DriverPipeline.hs.arm	2012-05-15 02:10:41.000000000 +0900
++++ ghc-7.4.1.20120508/compiler/main/DriverPipeline.hs	2012-05-18 12:19:22.779955285 +0900
+@@ -1366,7 +1366,8 @@
+                     SysTools.FileOption "" input_fn,
+                     SysTools.Option "-o", SysTools.FileOption "" output_fn]
+                 ++ map SysTools.Option lc_opts
+-                ++ map SysTools.Option fpOpts)
++                ++ map SysTools.Option fpOpts
++                ++ map SysTools.Option abiOpts)
+ 
+     return (next_phase, output_fn)
+   where
+@@ -1378,12 +1379,19 @@
+         -- while compiling GHC source code. It's probably due to fact that it
+         -- does not enable VFP by default. Let's do this manually here
+         fpOpts = case platformArch (targetPlatform dflags) of 
+-                   ArchARM ARMv7 ext -> if (elem VFPv3 ext)
++                   ArchARM ARMv7 ext _ -> if (elem VFPv3 ext)
+                                       then ["-mattr=+v7,+vfp3"]
+                                       else if (elem VFPv3D16 ext)
+                                            then ["-mattr=+v7,+vfp3,+d16"]
+                                            else []
+                    _               -> []
++        -- On Ubuntu/Debian with ARM hard float ABI, LLVM's llc still
++        -- compiles into soft-float ABI. We need to explicitly set abi
++        -- to hard
++        abiOpts = case platformArch (targetPlatform dflags) of
++                    ArchARM ARMv7 _ HARD -> ["-float-abi=hard"]
++                    ArchARM ARMv7 _ _    -> []
++                    _                    -> []
+ 
+ -----------------------------------------------------------------------------
+ -- LlvmMangle phase
+@@ -1532,8 +1540,8 @@
+ 
+             elfSectionNote :: String
+             elfSectionNote = case platformArch (targetPlatform dflags) of
+-                               ArchARM _ _ -> "%note"
+-                               _           -> "@note"
++                               ArchARM _ _ _ -> "%note"
++                               _             -> "@note"
+ 
+ -- The "link info" is a string representing the parameters of the
+ -- link.  We save this information in the binary, and the next time we
+diff --git a/compiler/nativeGen/AsmCodeGen.lhs b/compiler/nativeGen/AsmCodeGen.lhs
+index 1ad1242..e976e58 100644
+--- a/compiler/nativeGen/AsmCodeGen.lhs
++++ b/compiler/nativeGen/AsmCodeGen.lhs
+@@ -200,7 +200,7 @@ nativeCodeGen dflags h us cmms
+                          ,ncgExpandTop              = map SPARC.CodeGen.Expand.expandTop
+                          ,ncgMakeFarBranches        = id
+                      }
+-                 ArchARM _ _ ->
++                 ArchARM _ _ _ ->
+                      panic "nativeCodeGen: No NCG for ARM"
+                  ArchPPC_64 ->
+                      panic "nativeCodeGen: No NCG for PPC 64"
+diff --git a/compiler/nativeGen/RegAlloc/Graph/TrivColorable.hs b/compiler/nativeGen/RegAlloc/Graph/TrivColorable.hs
+index 6067f23..6cd3f00 100644
+--- a/compiler/nativeGen/RegAlloc/Graph/TrivColorable.hs
++++ b/compiler/nativeGen/RegAlloc/Graph/TrivColorable.hs
+@@ -107,13 +107,13 @@ trivColorable
+ trivColorable platform virtualRegSqueeze realRegSqueeze RcInteger conflicts exclusions
+         | let !cALLOCATABLE_REGS_INTEGER
+                   = iUnbox (case platformArch platform of
+-                            ArchX86     -> 3
+-                            ArchX86_64  -> 5
+-                            ArchPPC     -> 16
+-                            ArchSPARC   -> 14
+-                            ArchPPC_64  -> panic "trivColorable ArchPPC_64"
+-                            ArchARM _ _ -> panic "trivColorable ArchARM"
+-                            ArchUnknown -> panic "trivColorable ArchUnknown")
++                            ArchX86       -> 3
++                            ArchX86_64    -> 5
++                            ArchPPC       -> 16
++                            ArchSPARC     -> 14
++                            ArchPPC_64    -> panic "trivColorable ArchPPC_64"
++                            ArchARM _ _ _ -> panic "trivColorable ArchARM"
++                            ArchUnknown   -> panic "trivColorable ArchUnknown")
+         , count2        <- accSqueeze (_ILIT(0)) cALLOCATABLE_REGS_INTEGER
+                                 (virtualRegSqueeze RcInteger)
+                                 conflicts
+@@ -127,13 +127,13 @@ trivColorable platform virtualRegSqueeze realRegSqueeze RcInteger conflicts excl
+ trivColorable platform virtualRegSqueeze realRegSqueeze RcFloat conflicts exclusions
+         | let !cALLOCATABLE_REGS_FLOAT
+                   = iUnbox (case platformArch platform of
+-                            ArchX86     -> 0
+-                            ArchX86_64  -> 0
+-                            ArchPPC     -> 0
+-                            ArchSPARC   -> 22
+-                            ArchPPC_64  -> panic "trivColorable ArchPPC_64"
+-                            ArchARM _ _ -> panic "trivColorable ArchARM"
+-                            ArchUnknown -> panic "trivColorable ArchUnknown")
++                            ArchX86       -> 0
++                            ArchX86_64    -> 0
++                            ArchPPC       -> 0
++                            ArchSPARC     -> 22
++                            ArchPPC_64    -> panic "trivColorable ArchPPC_64"
++                            ArchARM _ _ _ -> panic "trivColorable ArchARM"
++                            ArchUnknown   -> panic "trivColorable ArchUnknown")
+         , count2        <- accSqueeze (_ILIT(0)) cALLOCATABLE_REGS_FLOAT
+                                 (virtualRegSqueeze RcFloat)
+                                 conflicts
+@@ -147,13 +147,13 @@ trivColorable platform virtualRegSqueeze realRegSqueeze RcFloat conflicts exclus
+ trivColorable platform virtualRegSqueeze realRegSqueeze RcDouble conflicts exclusions
+         | let !cALLOCATABLE_REGS_DOUBLE
+                   = iUnbox (case platformArch platform of
+-                            ArchX86     -> 6
+-                            ArchX86_64  -> 0
+-                            ArchPPC     -> 26
+-                            ArchSPARC   -> 11
+-                            ArchPPC_64  -> panic "trivColorable ArchPPC_64"
+-                            ArchARM _ _ -> panic "trivColorable ArchARM"
+-                            ArchUnknown -> panic "trivColorable ArchUnknown")
++                            ArchX86       -> 6
++                            ArchX86_64    -> 0
++                            ArchPPC       -> 26
++                            ArchSPARC     -> 11
++                            ArchPPC_64    -> panic "trivColorable ArchPPC_64"
++                            ArchARM _ _ _ -> panic "trivColorable ArchARM"
++                            ArchUnknown   -> panic "trivColorable ArchUnknown")
+         , count2        <- accSqueeze (_ILIT(0)) cALLOCATABLE_REGS_DOUBLE
+                                 (virtualRegSqueeze RcDouble)
+                                 conflicts
+@@ -167,13 +167,13 @@ trivColorable platform virtualRegSqueeze realRegSqueeze RcDouble conflicts exclu
+ trivColorable platform virtualRegSqueeze realRegSqueeze RcDoubleSSE conflicts exclusions
+         | let !cALLOCATABLE_REGS_SSE
+                   = iUnbox (case platformArch platform of
+-                            ArchX86     -> 8
+-                            ArchX86_64  -> 10
+-                            ArchPPC     -> 0
+-                            ArchSPARC   -> 0
+-                            ArchPPC_64  -> panic "trivColorable ArchPPC_64"
+-                            ArchARM _ _ -> panic "trivColorable ArchARM"
+-                            ArchUnknown -> panic "trivColorable ArchUnknown")
++                            ArchX86       -> 8
++                            ArchX86_64    -> 10
++                            ArchPPC       -> 0
++                            ArchSPARC     -> 0
++                            ArchPPC_64    -> panic "trivColorable ArchPPC_64"
++                            ArchARM _ _ _ -> panic "trivColorable ArchARM"
++                            ArchUnknown   -> panic "trivColorable ArchUnknown")
+         , count2        <- accSqueeze (_ILIT(0)) cALLOCATABLE_REGS_SSE
+                                 (virtualRegSqueeze RcDoubleSSE)
+                                 conflicts
+diff --git a/compiler/nativeGen/RegAlloc/Linear/FreeRegs.hs b/compiler/nativeGen/RegAlloc/Linear/FreeRegs.hs
+index 6fbbd04..fd1fd27 100644
+--- a/compiler/nativeGen/RegAlloc/Linear/FreeRegs.hs
++++ b/compiler/nativeGen/RegAlloc/Linear/FreeRegs.hs
+@@ -68,11 +68,11 @@ instance FR SPARC.FreeRegs where
+ maxSpillSlots :: Platform -> Int
+ maxSpillSlots platform
+               = case platformArch platform of
+-                ArchX86     -> X86.Instr.maxSpillSlots True  -- 32bit
+-                ArchX86_64  -> X86.Instr.maxSpillSlots False -- not 32bit
+-                ArchPPC     -> PPC.Instr.maxSpillSlots
+-                ArchSPARC   -> SPARC.Instr.maxSpillSlots
+-                ArchARM _ _ -> panic "maxSpillSlots ArchARM"
+-                ArchPPC_64  -> panic "maxSpillSlots ArchPPC_64"
+-                ArchUnknown -> panic "maxSpillSlots ArchUnknown"
++                ArchX86       -> X86.Instr.maxSpillSlots True  -- 32bit
++                ArchX86_64    -> X86.Instr.maxSpillSlots False -- not 32bit
++                ArchPPC       -> PPC.Instr.maxSpillSlots
++                ArchSPARC     -> SPARC.Instr.maxSpillSlots
++                ArchARM _ _ _ -> panic "maxSpillSlots ArchARM"
++                ArchPPC_64    -> panic "maxSpillSlots ArchPPC_64"
++                ArchUnknown   -> panic "maxSpillSlots ArchUnknown"
+ 
+diff --git a/compiler/nativeGen/RegAlloc/Linear/Main.hs b/compiler/nativeGen/RegAlloc/Linear/Main.hs
+index fc0bde4..64b0f68 100644
+--- a/compiler/nativeGen/RegAlloc/Linear/Main.hs
++++ b/compiler/nativeGen/RegAlloc/Linear/Main.hs
+@@ -180,13 +180,13 @@ linearRegAlloc
+ linearRegAlloc dflags first_id block_live sccs
+  = let platform = targetPlatform dflags
+    in case platformArch platform of
+-      ArchX86     -> linearRegAlloc' platform (frInitFreeRegs :: X86.FreeRegs)   first_id block_live sccs
+-      ArchX86_64  -> linearRegAlloc' platform (frInitFreeRegs :: X86.FreeRegs)   first_id block_live sccs
+-      ArchSPARC   -> linearRegAlloc' platform (frInitFreeRegs :: SPARC.FreeRegs) first_id block_live sccs
+-      ArchPPC     -> linearRegAlloc' platform (frInitFreeRegs :: PPC.FreeRegs)   first_id block_live sccs
+-      ArchARM _ _ -> panic "linearRegAlloc ArchARM"
+-      ArchPPC_64  -> panic "linearRegAlloc ArchPPC_64"
+-      ArchUnknown -> panic "linearRegAlloc ArchUnknown"
++      ArchX86       -> linearRegAlloc' platform (frInitFreeRegs :: X86.FreeRegs)   first_id block_live sccs
++      ArchX86_64    -> linearRegAlloc' platform (frInitFreeRegs :: X86.FreeRegs)   first_id block_live sccs
++      ArchSPARC     -> linearRegAlloc' platform (frInitFreeRegs :: SPARC.FreeRegs) first_id block_live sccs
++      ArchPPC       -> linearRegAlloc' platform (frInitFreeRegs :: PPC.FreeRegs)   first_id block_live sccs
++      ArchARM _ _ _ -> panic "linearRegAlloc ArchARM"
++      ArchPPC_64    -> panic "linearRegAlloc ArchPPC_64"
++      ArchUnknown   -> panic "linearRegAlloc ArchUnknown"
+ 
+ linearRegAlloc'
+         :: (FR freeRegs, PlatformOutputable instr, Instruction instr)
+diff --git a/compiler/nativeGen/TargetReg.hs b/compiler/nativeGen/TargetReg.hs
+index cbc4c17..13293de 100644
+--- a/compiler/nativeGen/TargetReg.hs
++++ b/compiler/nativeGen/TargetReg.hs
+@@ -50,35 +50,35 @@ import qualified SPARC.Regs     as SPARC
+ targetVirtualRegSqueeze :: Platform -> RegClass -> VirtualReg -> FastInt
+ targetVirtualRegSqueeze platform
+     = case platformArch platform of
+-      ArchX86     -> X86.virtualRegSqueeze
+-      ArchX86_64  -> X86.virtualRegSqueeze
+-      ArchPPC     -> PPC.virtualRegSqueeze
+-      ArchSPARC   -> SPARC.virtualRegSqueeze
+-      ArchPPC_64  -> panic "targetVirtualRegSqueeze ArchPPC_64"
+-      ArchARM _ _ -> panic "targetVirtualRegSqueeze ArchARM"
+-      ArchUnknown -> panic "targetVirtualRegSqueeze ArchUnknown"
++      ArchX86       -> X86.virtualRegSqueeze
++      ArchX86_64    -> X86.virtualRegSqueeze
++      ArchPPC       -> PPC.virtualRegSqueeze
++      ArchSPARC     -> SPARC.virtualRegSqueeze
++      ArchPPC_64    -> panic "targetVirtualRegSqueeze ArchPPC_64"
++      ArchARM _ _ _ -> panic "targetVirtualRegSqueeze ArchARM"
++      ArchUnknown   -> panic "targetVirtualRegSqueeze ArchUnknown"
+ 
+ targetRealRegSqueeze :: Platform -> RegClass -> RealReg -> FastInt
+ targetRealRegSqueeze platform
+     = case platformArch platform of
+-      ArchX86     -> X86.realRegSqueeze
+-      ArchX86_64  -> X86.realRegSqueeze
+-      ArchPPC     -> PPC.realRegSqueeze
+-      ArchSPARC   -> SPARC.realRegSqueeze
+-      ArchPPC_64  -> panic "targetRealRegSqueeze ArchPPC_64"
+-      ArchARM _ _ -> panic "targetRealRegSqueeze ArchARM"
+-      ArchUnknown -> panic "targetRealRegSqueeze ArchUnknown"
++      ArchX86       -> X86.realRegSqueeze
++      ArchX86_64    -> X86.realRegSqueeze
++      ArchPPC       -> PPC.realRegSqueeze
++      ArchSPARC     -> SPARC.realRegSqueeze
++      ArchPPC_64    -> panic "targetRealRegSqueeze ArchPPC_64"
++      ArchARM _ _ _ -> panic "targetRealRegSqueeze ArchARM"
++      ArchUnknown   -> panic "targetRealRegSqueeze ArchUnknown"
+ 
+ targetClassOfRealReg :: Platform -> RealReg -> RegClass
+ targetClassOfRealReg platform
+     = case platformArch platform of
+-      ArchX86     -> X86.classOfRealReg
+-      ArchX86_64  -> X86.classOfRealReg
+-      ArchPPC     -> PPC.classOfRealReg
+-      ArchSPARC   -> SPARC.classOfRealReg
+-      ArchPPC_64  -> panic "targetClassOfRealReg ArchPPC_64"
+-      ArchARM _ _ -> panic "targetClassOfRealReg ArchARM"
+-      ArchUnknown -> panic "targetClassOfRealReg ArchUnknown"
++      ArchX86       -> X86.classOfRealReg
++      ArchX86_64    -> X86.classOfRealReg
++      ArchPPC       -> PPC.classOfRealReg
++      ArchSPARC     -> SPARC.classOfRealReg
++      ArchPPC_64    -> panic "targetClassOfRealReg ArchPPC_64"
++      ArchARM _ _ _ -> panic "targetClassOfRealReg ArchARM"
++      ArchUnknown   -> panic "targetClassOfRealReg ArchUnknown"
+ 
+ -- TODO: This should look at targetPlatform too
+ targetWordSize :: Size
+@@ -87,24 +87,24 @@ targetWordSize = intSize wordWidth
+ targetMkVirtualReg :: Platform -> Unique -> Size -> VirtualReg
+ targetMkVirtualReg platform
+     = case platformArch platform of
+-      ArchX86     -> X86.mkVirtualReg
+-      ArchX86_64  -> X86.mkVirtualReg
+-      ArchPPC     -> PPC.mkVirtualReg
+-      ArchSPARC   -> SPARC.mkVirtualReg
+-      ArchPPC_64  -> panic "targetMkVirtualReg ArchPPC_64"
+-      ArchARM _ _ -> panic "targetMkVirtualReg ArchARM"
+-      ArchUnknown -> panic "targetMkVirtualReg ArchUnknown"
++      ArchX86       -> X86.mkVirtualReg
++      ArchX86_64    -> X86.mkVirtualReg
++      ArchPPC       -> PPC.mkVirtualReg
++      ArchSPARC     -> SPARC.mkVirtualReg
++      ArchPPC_64    -> panic "targetMkVirtualReg ArchPPC_64"
++      ArchARM _ _ _ -> panic "targetMkVirtualReg ArchARM"
++      ArchUnknown   -> panic "targetMkVirtualReg ArchUnknown"
+ 
+ targetRegDotColor :: Platform -> RealReg -> SDoc
+ targetRegDotColor platform
+     = case platformArch platform of
+-      ArchX86     -> X86.regDotColor platform
+-      ArchX86_64  -> X86.regDotColor platform
+-      ArchPPC     -> PPC.regDotColor
+-      ArchSPARC   -> SPARC.regDotColor
+-      ArchPPC_64  -> panic "targetRegDotColor ArchPPC_64"
+-      ArchARM _ _ -> panic "targetRegDotColor ArchARM"
+-      ArchUnknown -> panic "targetRegDotColor ArchUnknown"
++      ArchX86       -> X86.regDotColor platform
++      ArchX86_64    -> X86.regDotColor platform
++      ArchPPC       -> PPC.regDotColor
++      ArchSPARC     -> SPARC.regDotColor
++      ArchPPC_64    -> panic "targetRegDotColor ArchPPC_64"
++      ArchARM _ _ _ -> panic "targetRegDotColor ArchARM"
++      ArchUnknown   -> panic "targetRegDotColor ArchUnknown"
+ 
+ 
+ targetClassOfReg :: Platform -> Reg -> RegClass
+diff --git a/compiler/utils/Platform.hs b/compiler/utils/Platform.hs
+index 47dd779..8252621 100644
+--- a/compiler/utils/Platform.hs
++++ b/compiler/utils/Platform.hs
+@@ -7,6 +7,7 @@ module Platform (
+         OS(..),
+         ArmISA(..),
+         ArmISAExt(..),
++        ArmABI(..),
+ 
+         target32Bit,
+         osElfTarget
+@@ -41,7 +42,9 @@ data Arch
+         | ArchSPARC
+         | ArchARM
+           { armISA    :: ArmISA
+-          , armISAExt :: [ArmISAExt] }
++          , armISAExt :: [ArmISAExt]
++          , armABI    :: ArmABI
++          }
+         deriving (Read, Show, Eq)
+ 
+ 
+@@ -61,7 +64,7 @@ data OS
+         | OSHaiku
+         deriving (Read, Show, Eq)
+ 
+--- | ARM Instruction Set Architecture and Extensions
++-- | ARM Instruction Set Architecture, Extensions and ABI
+ --
+ data ArmISA
+     = ARMv5
+@@ -77,6 +80,11 @@ data ArmISAExt
+     | IWMMX2
+     deriving (Read, Show, Eq)
+ 
++data ArmABI
++    = SOFT
++    | SOFTFP
++    | HARD
++    deriving (Read, Show, Eq)
+ 
+ target32Bit :: Platform -> Bool
+ target32Bit p = platformWordSize p == 4
+diff --git a/config.guess b/config.guess
+index 463a03a..d622a44 100644
+--- a/config.guess
++++ b/config.guess
+@@ -1,10 +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, 2004, 2005, 2006, 2007, 2008
+-#   Free Software Foundation, Inc.
++#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
++#   2011, 2012 Free Software Foundation, Inc.
+ 
+-timestamp='2008-11-15'
++timestamp='2012-02-10'
+ 
+ # 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,9 +17,7 @@ timestamp='2008-11-15'
+ # General Public License for more details.
+ #
+ # 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., 51 Franklin Street - Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# along with this program; if not, see <http://www.gnu.org/licenses/>.
+ #
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+@@ -27,16 +25,16 @@ timestamp='2008-11-15'
+ # 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,.*/,,'`
+ 
+@@ -56,8 +54,9 @@ version="\
+ GNU config.guess ($timestamp)
+ 
+ Originally written by Per Bothner.
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+-2002, 2003, 2004, 2005, 2006, 2007, 2008 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, 2012
++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."
+@@ -144,7 +143,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+     *:NetBSD:*:*)
+ 	# NetBSD (nbsd) targets should (where applicable) match one or
+-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
++	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ 	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+ 	# switched to ELF, *-*-netbsd* would select the old
+ 	# object file format.  This provides both forward
+@@ -170,7 +169,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?
+@@ -180,7 +179,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 		fi
+ 		;;
+ 	    *)
+-	        os=netbsd
++		os=netbsd
+ 		;;
+ 	esac
+ 	# The OS release
+@@ -223,7 +222,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ 		;;
+ 	*5.*)
+-	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
++		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ 		;;
+ 	esac
+ 	# According to Compaq, /usr/sbin/psrinfo has been available on
+@@ -269,7 +268,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 	# 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/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+-	exit ;;
++	# 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
+@@ -295,7 +297,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 	echo s390-ibm-zvmoe
+ 	exit ;;
+     *:OS400:*:*)
+-        echo powerpc-ibm-os400
++	echo powerpc-ibm-os400
+ 	exit ;;
+     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ 	echo arm-acorn-riscix${UNAME_RELEASE}
+@@ -324,12 +326,18 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 	case `/usr/bin/uname -p` in
+ 	    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 ;;
+     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ 	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"
+@@ -337,17 +345,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ 	# 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
+-            # bash is not able to generate correct code here
+-            # i.e. it leaves \ns there
+-            # so we need to use /usr/bin/echo to get what we want
+-            # note that if config.guess is run by /bin/sh then
+-            # this works as expected even without /usr/bin/echo
+-            # but the problem is that configure is clever enough
+-            # to find bash installed and then runs config.guess
+-            # by bash instead of by /bin/sh
+-            # It seems that using /usr/bin/echo here is the most
+-            # portable Solaris fix
+-	    if /usr/bin/echo '\n#ifdef __amd64\nIS_64BIT_ARCH\n#endif' | \
++	    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
+@@ -398,23 +396,23 @@ 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}
++	echo m68k-atari-mint${UNAME_RELEASE}
+ 	exit ;;
+     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ 	echo m68k-atari-mint${UNAME_RELEASE}
+-        exit ;;
++	exit ;;
+     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+-        echo m68k-atari-mint${UNAME_RELEASE}
++	echo m68k-atari-mint${UNAME_RELEASE}
+ 	exit ;;
+     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+-        echo m68k-milan-mint${UNAME_RELEASE}
+-        exit ;;
++	echo m68k-milan-mint${UNAME_RELEASE}
++	exit ;;
+     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+-        echo m68k-hades-mint${UNAME_RELEASE}
+-        exit ;;
++	echo m68k-hades-mint${UNAME_RELEASE}
++	exit ;;
+     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+-        echo m68k-unknown-mint${UNAME_RELEASE}
+-        exit ;;
++	echo m68k-unknown-mint${UNAME_RELEASE}
++	exit ;;
+     m68k:machten:*:*)
+ 	echo m68k-apple-machten${UNAME_RELEASE}
+ 	exit ;;
+@@ -484,8 +482,8 @@ EOF
+ 	echo m88k-motorola-sysv3
+ 	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 ] || \
+@@ -498,7 +496,7 @@ EOF
+ 	else
+ 	    echo i586-dg-dgux${UNAME_RELEASE}
+ 	fi
+- 	exit ;;
++	exit ;;
+     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+ 	echo m88k-dolphin-sysv3
+ 	exit ;;
+@@ -555,7 +553,7 @@ EOF
+ 		echo rs6000-ibm-aix3.2
+ 	fi
+ 	exit ;;
+-    *:AIX:*:[456])
++    *: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
+@@ -598,52 +596,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
+@@ -663,7 +661,7 @@ EOF
+ 	    # => hppa64-hp-hpux11.23
+ 
+ 	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+-		grep __LP64__ >/dev/null
++		grep -q __LP64__
+ 	    then
+ 		HP_ARCH="hppa2.0w"
+ 	    else
+@@ -734,22 +732,22 @@ EOF
+ 	exit ;;
+     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ 	echo c1-convex-bsd
+-        exit ;;
++	exit ;;
+     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ 	if getsysinfo -f scalar_acc
+ 	then echo c32-convex-bsd
+ 	else echo c2-convex-bsd
+ 	fi
+-        exit ;;
++	exit ;;
+     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ 	echo c34-convex-bsd
+-        exit ;;
++	exit ;;
+     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ 	echo c38-convex-bsd
+-        exit ;;
++	exit ;;
+     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ 	echo c4-convex-bsd
+-        exit ;;
++	exit ;;
+     CRAY*Y-MP:*:*:*)
+ 	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ 	exit ;;
+@@ -773,14 +771,14 @@ EOF
+ 	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 ;;
++	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}"
++	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}
+@@ -792,13 +790,12 @@ EOF
+ 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ 	exit ;;
+     *:FreeBSD:*:*)
+-	case ${UNAME_MACHINE} in
+-	    pc98)
+-		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++	UNAME_PROCESSOR=`/usr/bin/uname -p`
++	case ${UNAME_PROCESSOR} in
+ 	    amd64)
+ 		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ 	    *)
+-		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ 	esac
+ 	exit ;;
+     i*:CYGWIN*:*)
+@@ -807,19 +804,22 @@ EOF
+     *:MINGW*:*)
+ 	echo ${UNAME_MACHINE}-pc-mingw32
+ 	exit ;;
++    i*:MSYS*:*)
++	echo ${UNAME_MACHINE}-pc-msys
++	exit ;;
+     i*:windows32*:*)
+-    	# uname -m includes "-pc" on this system.
+-    	echo ${UNAME_MACHINE}-mingw32
++	# uname -m includes "-pc" on this system.
++	echo ${UNAME_MACHINE}-mingw32
+ 	exit ;;
+     i*:PW*:*)
+ 	echo ${UNAME_MACHINE}-pc-pw32
+ 	exit ;;
+-    *:Interix*:[3456]*)
+-    	case ${UNAME_MACHINE} in
++    *:Interix*:*)
++	case ${UNAME_MACHINE} in
+ 	    x86)
+ 		echo i586-pc-interix${UNAME_RELEASE}
+ 		exit ;;
+-	    EM64T | authenticamd | genuineintel)
++	    authenticamd | genuineintel | EM64T)
+ 		echo x86_64-unknown-interix${UNAME_RELEASE}
+ 		exit ;;
+ 	    IA64)
+@@ -829,6 +829,9 @@ EOF
+     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ 	echo i${UNAME_MACHINE}-pc-mks
+ 	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
+@@ -858,6 +861,27 @@ EOF
+     i*86:Minix:*:*)
+ 	echo ${UNAME_MACHINE}-pc-minix
+ 	exit ;;
++    aarch64:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    aarch64_be:Linux:*:*)
++	UNAME_MACHINE=aarch64_be
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	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 \
+@@ -865,20 +889,40 @@ EOF
+ 	then
+ 	    echo ${UNAME_MACHINE}-unknown-linux-gnu
+ 	else
+-	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
++	    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 ;;
+     cris:Linux:*:*)
+-	echo cris-axis-linux-gnu
++	echo ${UNAME_MACHINE}-axis-linux-gnu
+ 	exit ;;
+     crisv32:Linux:*:*)
+-	echo crisv32-axis-linux-gnu
++	echo ${UNAME_MACHINE}-axis-linux-gnu
+ 	exit ;;
+     frv:Linux:*:*)
+-    	echo frv-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    hexagon:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	exit ;;
++    i*86:Linux:*:*)
++	LIBC=gnu
++	eval $set_cc_for_build
++	sed 's/^	//' << EOF >$dummy.c
++	#ifdef __dietlibc__
++	LIBC=dietlibc
++	#endif
++EOF
++	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
+@@ -889,78 +933,34 @@ EOF
+     m68*:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+ 	exit ;;
+-    mips:Linux:*:*)
+-	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
+-	#endif
+-EOF
+-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+-	    /^CPU/{
+-		s: ::g
+-		p
+-	    }'`"
+-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+-	;;
+-    mips64:Linux:*:*)
++    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 | sed -n '
+-	    /^CPU/{
+-		s: ::g
+-		p
+-	    }'`"
++	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+ 	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ 	;;
+     or32:Linux:*:*)
+-	echo or32-unknown-linux-gnu
+-	exit ;;
+-    ppc:Linux:*:*)
+-	echo powerpc-unknown-linux-gnu
+-	exit ;;
+-    ppc64:Linux:*:*)
+-	echo powerpc64-unknown-linux-gnu
+-	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 ld.so.1 >/dev/null
+-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
++	echo ${UNAME_MACHINE}-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
+@@ -969,14 +969,17 @@ EOF
+ 	  *)    echo hppa-unknown-linux-gnu ;;
+ 	esac
+ 	exit ;;
+-    parisc64:Linux:*:* | hppa64:Linux:*:*)
+-	echo hppa64-unknown-linux-gnu
++    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 ;;
+     sh64*:Linux:*:*)
+-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
+ 	exit ;;
+     sh*:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+@@ -984,75 +987,18 @@ EOF
+     sparc:Linux:*:* | sparc64:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-linux-gnu
+ 	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
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
+ 	exit ;;
+     xtensa*:Linux:*:*)
+-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
++	echo ${UNAME_MACHINE}-unknown-linux-gnu
+ 	exit ;;
+-    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 ;;
+-	  "")
+-		# 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 ;;
+-	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
+-	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+-	LIBC=gnu
+-	#else
+-	LIBC=gnuaout
+-	#endif
+-	#endif
+-	#ifdef __dietlibc__
+-	LIBC=dietlibc
+-	#endif
+-EOF
+-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+-	    /^LIBC/{
+-		s: ::g
+-		p
+-	    }'`"
+-	test x"${LIBC}" != x && {
+-		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+-		exit
+-	}
+-	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; 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
+@@ -1060,11 +1006,11 @@ EOF
+ 	echo i386-sequent-sysv4
+ 	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 ;;
+     i*86:OS/2:*:*)
+@@ -1081,7 +1027,7 @@ EOF
+     i*86:syllable:*:*)
+ 	echo ${UNAME_MACHINE}-pc-syllable
+ 	exit ;;
+-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
++    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ 	echo i386-unknown-lynxos${UNAME_RELEASE}
+ 	exit ;;
+     i*86:*DOS:*:*)
+@@ -1096,7 +1042,7 @@ EOF
+ 	fi
+ 	exit ;;
+     i*86:*:5:[678]*)
+-    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
++	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+ 	case `/bin/uname -X | grep "^Machine"` in
+ 	    *486*)	     UNAME_MACHINE=i486 ;;
+ 	    *Pentium)	     UNAME_MACHINE=i586 ;;
+@@ -1124,10 +1070,13 @@ EOF
+ 	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 ;;
++	# 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 ;;
+@@ -1162,8 +1111,18 @@ EOF
+ 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ 	  && { 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; } ;;
++	/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 ;;
+@@ -1176,7 +1135,7 @@ EOF
+     rs6000:LynxOS:2.*:*)
+ 	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ 	exit ;;
+-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
++    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ 	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ 	exit ;;
+     SM[BE]S:UNIX_SV:*:*)
+@@ -1196,10 +1155,10 @@ EOF
+ 		echo ns32k-sni-sysv
+ 	fi
+ 	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 ;;
++    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
+@@ -1225,11 +1184,11 @@ EOF
+ 	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 ;;
++	exit ;;
+     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+ 	echo powerpc-be-beos
+ 	exit ;;
+@@ -1269,6 +1228,16 @@ EOF
+     *:Darwin:*:*)
+ 	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}
+@@ -1284,6 +1253,9 @@ EOF
+     *:QNX:*:4*)
+ 	echo i386-pc-qnx
+ 	exit ;;
++    NEO-?:NONSTOP_KERNEL:*:*)
++	echo neo-tandem-nsk${UNAME_RELEASE}
++	exit ;;
+     NSE-?:NONSTOP_KERNEL:*:*)
+ 	echo nse-tandem-nsk${UNAME_RELEASE}
+ 	exit ;;
+@@ -1329,13 +1301,13 @@ EOF
+ 	echo pdp10-unknown-its
+ 	exit ;;
+     SEI:*:*:SEIUX)
+-        echo mips-sei-seiux${UNAME_RELEASE}
++	echo mips-sei-seiux${UNAME_RELEASE}
+ 	exit ;;
+     *:DragonFly:*:*)
+ 	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ 	exit ;;
+     *:*VMS:*:*)
+-    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
++	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ 	case "${UNAME_MACHINE}" in
+ 	    A*) echo alpha-dec-vms ; exit ;;
+ 	    I*) echo ia64-dec-vms ; exit ;;
+@@ -1350,6 +1322,12 @@ EOF
+     i*86:rdos:*:*)
+ 	echo ${UNAME_MACHINE}-pc-rdos
+ 	exit ;;
++    i*86:AROS:*:*)
++	echo ${UNAME_MACHINE}-pc-aros
++	exit ;;
++    x86_64:VMkernel:*:*)
++	echo ${UNAME_MACHINE}-unknown-esx
++	exit ;;
+ esac
+ 
+ #echo '(No uname command or uname output not recognized.)' 1>&2
+@@ -1372,11 +1350,11 @@ main ()
+ #include <sys/param.h>
+   printf ("m68k-sony-newsos%s\n",
+ #ifdef NEWSOS4
+-          "4"
++	"4"
+ #else
+-	  ""
++	""
+ #endif
+-         ); exit (0);
++	); exit (0);
+ #endif
+ #endif
+ 
+diff --git a/configure.ac b/configure.ac
+index 9237c77..8e3d9d2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -210,6 +210,20 @@ AC_CANONICAL_BUILD
+ AC_CANONICAL_HOST
+ AC_CANONICAL_TARGET
+ 
++# Testing ARM ABI
++# required for code generation (LLVM options)
++ARM_ABI=SOFT
++echo HOST: $host
++
++case $host in
++     arm*-*-linux-gnueabihf)
++     ARM_ABI=HARD
++     ;;
++     arm*-*-linux-gnueabi)
++     ARM_ABI=SOFTFP
++     ;;
++esac
++
+ FPTOOLS_SET_PLATFORM_VARS
+ 
+ # Verify that the installed (bootstrap) GHC is capable of generating
+-- 
+1.7.4.3
+
diff --git a/ghc.spec b/ghc.spec
index 6ae21bd..70d797f 100644
--- a/ghc.spec
+++ b/ghc.spec
@@ -2,10 +2,10 @@
 # (disabled for other archs in ghc-rpm-macros)
 
 # To bootstrap a new version of ghc, uncomment the following:
-#%%global ghc_bootstrapping 1
-#%%{?ghc_bootstrap}
-#%%global without_hscolour 1
-#%%global without_testsuite 1
+%global ghc_bootstrapping 1
+%{?ghc_bootstrap}
+%global without_hscolour 1
+%global without_testsuite 1
 
 # To do a test build instead with shared libs, uncomment the following:
 #%%global ghc_bootstrapping 1
@@ -25,12 +25,12 @@
 Name: ghc
 # part of haskell-platform
 # ghc must be rebuilt after a version bump to avoid ABI change problems
-Version: 7.4.1
+Version: 7.4.2
 # Since library subpackages are versioned:
 # - release can only be reset if all library versions get bumped simultaneously
 #   (eg for a major release)
 # - minor release numbers should be incremented monotonically
-Release: 6%{?dist}
+Release: 7%{?dist}
 Summary: Glasgow Haskell Compiler
 # fedora ghc has been bootstrapped on
 # %{ix86} x86_64 ppc alpha sparcv9 ppc64 armv7hl armv5tel s390 s390x
@@ -98,12 +98,8 @@ Patch8: ghc-powerpc-linker-mmap.patch
 Patch9: Cabal-fix-dynamic-exec-for-TH.patch
 # add libffi include dir to ghc wrapper for archs using gcc/llc
 Patch10: ghc-wrapper-libffi-include.patch
-# Debian armel fixes
-Patch11: fix-ARM-s-StgCRun-clobbered-register-list-for-both-A.patch
-Patch12: fix-ARM-StgCRun-to-not-save-and-restore-r11-fp-regis.patch
-# Debian armhf fixes
-Patch13: ghc-debian-ARM-VFPv3D16.patch
-Patch14: ghc-debian-armhf_llvm_abi.patch
+# latest arm hf patch
+Patch11: ghc-7.4-add-support-for-ARM-hard-float-ABI-fixes-5914.patch
 
 %description
 GHC is a state-of-the-art, open source, compiler and interactive environment
@@ -159,7 +155,7 @@ To install all of ghc, install the ghc base package.
 %if %{defined ghclibdir}
 %ghc_lib_subpackage Cabal 1.14.0
 %ghc_lib_subpackage -l %BSDHaskellReport array 0.4.0.0
-%ghc_lib_subpackage -l %BSDHaskellReport -c gmp-devel%{?_isa},libffi-devel%{?_isa} base 4.5.0.0
+%ghc_lib_subpackage -l %BSDHaskellReport -c gmp-devel%{?_isa},libffi-devel%{?_isa} base 4.5.1.0
 %ghc_lib_subpackage binary 0.5.1.0
 %ghc_lib_subpackage bytestring 0.9.2.1
 %ghc_lib_subpackage -l %BSDHaskellReport containers 0.4.2.1
@@ -181,7 +177,7 @@ To install all of ghc, install the ghc base package.
 %ghc_lib_subpackage -l %BSDHaskellReport process 1.1.0.1
 %ghc_lib_subpackage template-haskell 2.7.0.0
 %ghc_lib_subpackage time 1.4
-%ghc_lib_subpackage unix 2.5.1.0
+%ghc_lib_subpackage unix 2.5.1.1
 %endif
 
 %global version %{ghc_version_override}
@@ -224,14 +220,9 @@ ln -s $(pkg-config --variable=includedir libffi)/*.h rts/dist/build
 %endif
 
 # ARM patches
-%ifarch armv7hl armv5tel
-%patch11 -p1 -b .arm1
-%patch12 -p1 -b .arm2
-%endif
 %ifarch armv7hl
 # touches aclocal.m4
-%patch13 -p1 -b .arm
-%patch14 -p1 -b .arm
+%patch11 -p1 -b .arm
 autoreconf
 %endif
 
@@ -249,9 +240,6 @@ BUILD_DOCBOOK_HTML = NO
 %if %{undefined without_hscolour}
 HSCOLOUR_SRCS = NO
 %endif
-%ifarch armv7hl
-SRC_HC_OPTS += -D__ARM_PCS_VFP
-%endif
 EOF
 
 export CFLAGS="${CFLAGS:-%optflags}"
@@ -263,10 +251,7 @@ export CFLAGS="${CFLAGS:-%optflags}"
   --sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \
   --with-gcc=%{_bindir}/gcc
 
-# >4 cpus tends to break build
-[ -z "$RPM_BUILD_NCPUS" ] && RPM_BUILD_NCPUS=$(%{_bindir}/getconf _NPROCESSORS_ONLN)
-[ "$RPM_BUILD_NCPUS" -gt 4 ] && RPM_BUILD_NCPUS=4
-make -j$RPM_BUILD_NCPUS
+make %{?_smp_mflags}
 
 %install
 make DESTDIR=${RPM_BUILD_ROOT} install
@@ -435,6 +420,14 @@ fi
 %files libraries
 
 %changelog
+* Fri Aug 24 2012 Jens Petersen <petersen at redhat.com> - 7.4.2-7
+- 7.4.2 bootstrap
+  http://www.haskell.org/ghc/docs/7.4.2/html/users_guide/release-7-4-2.html
+- update base and unix library versions
+- ARM StgCRun patches not longer needed
+- use Karel Gardas' ARM hardfloat patch committed upstream
+- use _smp_mflags again
+
 * Thu Jul 19 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 7.4.1-6
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
 
diff --git a/sources b/sources
index 1013c18..f54a493 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-54bc9405c14c3226b6e3de3cd61e2777  ghc-7.4.1-testsuite.tar.bz2
-5d86c420978b49cc60edea9bd4c36703  ghc-7.4.1-src.tar.bz2
+528005749c761fe6c12a0079bd84fb90  ghc-7.4.2-testsuite.tar.bz2


More information about the scm-commits mailing list