Source: ghc Version: 8.0.1-17 Severity: normal Tags: patch User: debian-powe...@lists.debian.org Usertags: powerpcspe
Hi! The attached patch adds support for powerpcspe. It builds GHC with --enable- unregisterised and adds a patch from upstream [1] which disables some PPC FPU code on powerpcspe. Thanks, Adrian > [1] https://ghc.haskell.org/trac/ghc/ticket/12075 -- .''`. John Paul Adrian Glaubitz : :' : Debian Developer - glaub...@debian.org `. `' Freie Universitaet Berlin - glaub...@physik.fu-berlin.de `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
diff -Nru old/ghc-8.0.1/aclocal.m4 new/ghc-8.0.1/aclocal.m4 --- old/ghc-8.0.1/aclocal.m4 2017-05-04 11:02:42.000000000 +0200 +++ new/ghc-8.0.1/aclocal.m4 2017-05-04 10:57:54.000000000 +0200 @@ -185,6 +185,7 @@ test -z "[$]2" || eval "[$]2=ArchX86_64" ;; powerpc) + FP_CHECK_FOR_SOFT_FLOAT_POWERPC() test -z "[$]2" || eval "[$]2=ArchPPC" ;; powerpc64) @@ -458,6 +459,25 @@ AC_SUBST(ARM_ISA) ]) +# CHECK_FOR_SOFT_FLOAT_POWERPC +# ---------------------------------- +# Check whether we have hardware floating point support. See #12075 +AC_DEFUN([FP_CHECK_FOR_SOFT_FLOAT_POWERPC], +[ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [], + [#if defined(__NO_FPRS__) + softfloat + #else + return 0; + #endif + ])], + [value=NO], + [value=YES]) + + AC_DEFINE(powerpc_HOST_ARCH_SOFT_FLOAT, $value, [soft-float PowerPC]) +]) # FP_SETTINGS # ---------------------------------- diff -Nru old/ghc-8.0.1/debian/changelog new/ghc-8.0.1/debian/changelog --- old/ghc-8.0.1/debian/changelog 2016-12-17 03:44:45.000000000 +0100 +++ new/ghc-8.0.1/debian/changelog 2017-05-04 11:01:35.068820881 +0200 @@ -1,3 +1,12 @@ +ghc (8.0.1-17.1) unstable; urgency=medium + + * Non-maintainer upload. + * Add powerpcspe-disable-FPU-code.patch to disable PPC + FPU code on powerpcspe. + * Build with --enable-unregisterised on powerpcspe. + + -- John Paul Adrian Glaubitz <glaub...@physik.fu-berlin.de> Thu, 04 May 2017 11:00:20 +0200 + ghc (8.0.1-17) unstable; urgency=medium * Add upstream patch "Add relocation type R_X86_64_REX_GOTPCRELX". diff -Nru old/ghc-8.0.1/debian/patches/powerpcspe-disable-FPU-code.patch new/ghc-8.0.1/debian/patches/powerpcspe-disable-FPU-code.patch --- old/ghc-8.0.1/debian/patches/powerpcspe-disable-FPU-code.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/ghc-8.0.1/debian/patches/powerpcspe-disable-FPU-code.patch 2017-05-04 10:59:02.040928428 +0200 @@ -0,0 +1,66 @@ +Description: Disable FPU code on powerpspe + powerpcspe CPUs don't have an FPU, so the FPU PPC assembly + code has to be disabled on this architecture. + See: https://ghc.haskell.org/trac/ghc/ticket/12075 + . + +--- ghc-8.0.1.orig/aclocal.m4 ++++ ghc-8.0.1/aclocal.m4 +@@ -185,6 +185,7 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_V + test -z "[$]2" || eval "[$]2=ArchX86_64" + ;; + powerpc) ++ FP_CHECK_FOR_SOFT_FLOAT_POWERPC() + test -z "[$]2" || eval "[$]2=ArchPPC" + ;; + powerpc64) +@@ -458,6 +459,25 @@ AC_DEFUN([GET_ARM_ISA], + AC_SUBST(ARM_ISA) + ]) + ++# CHECK_FOR_SOFT_FLOAT_POWERPC ++# ---------------------------------- ++# Check whether we have hardware floating point support. See #12075 ++AC_DEFUN([FP_CHECK_FOR_SOFT_FLOAT_POWERPC], ++[ ++ AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM( ++ [], ++ [#if defined(__NO_FPRS__) ++ softfloat ++ #else ++ return 0; ++ #endif ++ ])], ++ [value=NO], ++ [value=YES]) ++ ++ AC_DEFINE(powerpc_HOST_ARCH_SOFT_FLOAT, $value, [soft-float PowerPC]) ++]) + + # FP_SETTINGS + # ---------------------------------- +--- ghc-8.0.1.orig/mk/project.mk.in ++++ ghc-8.0.1/mk/project.mk.in +@@ -162,3 +162,6 @@ GHC_LLVM_AFFECTED_BY_9439 = @GHC_LLVM_AF + ifeq "$(TargetArch_CPP)" "arm" + ARM_ISA=@ARM_ISA@ + endif ++ifeq "$(TargetArch_CPP)" "powerpc" ++POWERPC_SOFT_FLOAT=@powerpc_HOST_ARCH_SOFT_FLOAT@ ++endif +--- ghc-8.0.1.orig/rts/ghc.mk ++++ ghc-8.0.1/rts/ghc.mk +@@ -55,9 +55,12 @@ rts_S_SRCS += rts/AdjustorAsm.S + endif + # this matches substrings of powerpc64le, including "powerpc" and "powerpc64" + ifneq "$(findstring $(TargetArch_CPP), powerpc64le)" "" ++# and this matches soft-float PPC (#12075) ++ifneq "$(POWERPC_NO_FPRS)" "YES" + rts_S_SRCS += rts/StgCRunAsm.S + endif + endif ++endif + + ifeq "$(GhcUnregisterised)" "YES" + GENAPPLY_OPTS = -u diff -Nru old/ghc-8.0.1/debian/patches/series new/ghc-8.0.1/debian/patches/series --- old/ghc-8.0.1/debian/patches/series 2016-12-17 03:43:34.000000000 +0100 +++ new/ghc-8.0.1/debian/patches/series 2017-05-04 10:57:54.924973081 +0200 @@ -15,3 +15,4 @@ osdecommitmemory-compat.patch smp-arm-fix.patch R_X86_64_REX_GOTPCRELX +powerpcspe-disable-FPU-code.patch diff -Nru old/ghc-8.0.1/debian/rules new/ghc-8.0.1/debian/rules --- old/ghc-8.0.1/debian/rules 2016-11-14 17:07:27.000000000 +0100 +++ new/ghc-8.0.1/debian/rules 2017-05-04 10:59:42.672900592 +0200 @@ -38,7 +38,7 @@ BUILD_HADDOCK_DOCS=YES DEB_HOOGLE_TXT_DIR = /usr/lib/ghc-doc/hoogle/ -ifeq (x32,$(DEB_HOST_ARCH)) +ifneq (,$(findstring $(DEB_HOST_ARCH), powerpcspe x32)) EXTRA_CONFIGURE_FLAGS += --enable-unregisterised endif diff -Nru old/ghc-8.0.1/mk/project.mk.in new/ghc-8.0.1/mk/project.mk.in --- old/ghc-8.0.1/mk/project.mk.in 2016-05-16 19:08:53.000000000 +0200 +++ new/ghc-8.0.1/mk/project.mk.in 2017-05-04 10:57:54.000000000 +0200 @@ -162,3 +162,6 @@ ifeq "$(TargetArch_CPP)" "arm" ARM_ISA=@ARM_ISA@ endif +ifeq "$(TargetArch_CPP)" "powerpc" +POWERPC_SOFT_FLOAT=@powerpc_HOST_ARCH_SOFT_FLOAT@ +endif diff -Nru old/ghc-8.0.1/rts/ghc.mk new/ghc-8.0.1/rts/ghc.mk --- old/ghc-8.0.1/rts/ghc.mk 2016-05-16 19:08:53.000000000 +0200 +++ new/ghc-8.0.1/rts/ghc.mk 2017-05-04 10:57:54.000000000 +0200 @@ -55,9 +55,12 @@ endif # this matches substrings of powerpc64le, including "powerpc" and "powerpc64" ifneq "$(findstring $(TargetArch_CPP), powerpc64le)" "" +# and this matches soft-float PPC (#12075) +ifneq "$(POWERPC_NO_FPRS)" "YES" rts_S_SRCS += rts/StgCRunAsm.S endif endif +endif ifeq "$(GhcUnregisterised)" "YES" GENAPPLY_OPTS = -u