diff --git a/ghc-7.4.1-armv7hl-llc-hard-float.patch b/ghc-7.4.1-armv7hl-llc-hard-float.patch new file mode 100644 index 0000000..ad6c323 --- /dev/null +++ b/ghc-7.4.1-armv7hl-llc-hard-float.patch @@ -0,0 +1,15 @@ +diff -u ghc-7.4.1/compiler/main/DriverPipeline.hs.orig ghc-7.4.1/compiler/main/DriverPipeline.hs +--- ghc-7.4.1/compiler/main/DriverPipeline.hs.orig 2012-02-02 03:10:32.000000000 +0900 ++++ ghc-7.4.1/compiler/main/DriverPipeline.hs 2012-04-27 10:42:53.142111769 +0900 +@@ -1376,9 +1376,9 @@ + -- 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) +- then ["-mattr=+v7,+vfp3"] ++ then ["-mattr=+v7,+vfp3", "-float-abi=hard"] + else if (elem VFPv3D16 ext) +- then ["-mattr=+v7,+vfp3,+d16"] ++ then ["-mattr=+v7,+vfp3,+d16", "-float-abi=hard"] + else [] + _ -> [] + diff --git a/ghc-debian-ARM-VFPv3D16.patch b/ghc-debian-ARM-VFPv3D16.patch deleted file mode 100644 index ffe76cb..0000000 --- a/ghc-debian-ARM-VFPv3D16.patch +++ /dev/null @@ -1,16 +0,0 @@ -Description: Use VFPv3-D16 FPU for ARM builds -Author: Jani Monoses - -Index: ghc/aclocal.m4 -=================================================================== ---- ghc.orig/aclocal.m4 2012-02-01 18:10:32.000000000 +0000 -+++ ghc/aclocal.m4 2012-03-10 16:40:32.415005650 +0000 -@@ -333,7 +333,7 @@ - ], - [changequote(, )dnl - ARM_ISA=ARMv7 -- ARM_ISA_EXT="[VFPv3,NEON]" -+ ARM_ISA_EXT="[VFPv3D16,NEON]" - changequote([, ])dnl - ]) - ]) diff --git a/ghc-debian-armhf_llvm_abi.patch b/ghc-debian-armhf_llvm_abi.patch deleted file mode 100644 index c3b045e..0000000 --- a/ghc-debian-armhf_llvm_abi.patch +++ /dev/null @@ -1,26 +0,0 @@ -Description: If we are on armhf, tell llvm to generate code for this ABI. Not - forwarded upstream, because they will do a more 'proper' patch. See upstream - bug #5914. -Author: Iain Lane - -Index: ghc/compiler/main/DriverPipeline.hs -=================================================================== ---- ghc.orig/compiler/main/DriverPipeline.hs 2012-03-10 16:41:46.000000000 +0000 -+++ ghc/compiler/main/DriverPipeline.hs 2012-03-10 16:42:59.209169474 +0000 -@@ -1,5 +1,5 @@ - {-# OPTIONS -fno-cse #-} --{-# LANGUAGE NamedFieldPuns #-} -+{-# LANGUAGE NamedFieldPuns, CPP #-} - -- -fno-cse is needed for GLOBAL_VAR's to behave properly - - ----------------------------------------------------------------------------- -@@ -1379,6 +1379,9 @@ - then ["-mattr=+v7,+vfp3"] - else if (elem VFPv3D16 ext) - then ["-mattr=+v7,+vfp3,+d16"] -+#ifdef __ARM_PCS_VFP -+ ++ ["-float-abi=hard"] -+#endif - else [] - _ -> [] - diff --git a/ghc.spec b/ghc.spec index 15a4360..fe02411 100644 --- a/ghc.spec +++ b/ghc.spec @@ -98,9 +98,8 @@ Patch9: Cabal-fix-dynamic-exec-for-TH.patch # Debian armel fixes Patch10: fix-ARM-s-StgCRun-clobbered-register-list-for-both-A.patch Patch11: fix-ARM-StgCRun-to-not-save-and-restore-r11-fp-regis.patch -# Debian armhf fixes -Patch12: ghc-debian-ARM-VFPv3D16.patch -Patch13: ghc-debian-armhf_llvm_abi.patch +# need to tell llc to use hard float on armv7hl +Patch12: ghc-7.4.1-armv7hl-llc-hard-float.patch %description GHC is a state-of-the-art, open source, compiler and interactive environment @@ -220,7 +219,6 @@ ln -s $(pkg-config --variable=includedir libffi)/*.h rts/dist/build %patch10 -p1 -b .arm1 %patch11 -p1 -b .arm2 %patch12 -p1 -b .arm -%patch13 -p1 -b .arm %endif %build @@ -237,9 +235,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}" @@ -426,7 +421,8 @@ fi * Tue Apr 10 2012 Jens Petersen - 7.4.1-1.1 - build with llvm-3.0 on ARM - remove arm from unregisterised_archs -- add 4 Debian ARM patches for armel and armhf (Iain Lane) +- add Debian ARM register patches (Iain Lane) +- make llc use -float-abi=hard on armv7hl (thanks Debian and Ubuntu) - bootstrap build * Wed Feb 15 2012 Jens Petersen - 7.4.1-1