summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2010-07-09 15:03:24 +0000
committerSergei Trofimovich <slyfox@gentoo.org>2010-07-09 15:03:24 +0000
commit539a7f64c70c7fa3492ca65415e12c6d3b39f5de (patch)
treeaaf312023bf939c3df9c48d668ea8d2ddcb6f5b3 /dev-lang/ghc
parentmarked ~ia64 (diff)
downloadgentoo-2-539a7f64c70c7fa3492ca65415e12c6d3b39f5de.tar.gz
gentoo-2-539a7f64c70c7fa3492ca65415e12c6d3b39f5de.tar.bz2
gentoo-2-539a7f64c70c7fa3492ca65415e12c6d3b39f5de.zip
Marked ~ia64 (as now we have ia64 binaries for ghc)
(Portage version: 2.1.8.3/cvs/Linux x86_64)
Diffstat (limited to 'dev-lang/ghc')
-rw-r--r--dev-lang/ghc/ChangeLog9
-rw-r--r--dev-lang/ghc/files/ghc-6.10.4-ia64-fixed-relax.patch35
-rw-r--r--dev-lang/ghc/files/ghc-6.10.4-ia64-storage-manager-fix.patch63
-rw-r--r--dev-lang/ghc/files/ghc-6.12.3-ia64-fixed-relax.patch35
-rw-r--r--dev-lang/ghc/files/ghc-6.12.3-ia64-storage-manager-fix.patch62
-rw-r--r--dev-lang/ghc/ghc-6.10.4-r1.ebuild36
-rw-r--r--dev-lang/ghc/ghc-6.12.3.ebuild35
7 files changed, 246 insertions, 29 deletions
diff --git a/dev-lang/ghc/ChangeLog b/dev-lang/ghc/ChangeLog
index 4f321297de08..fcabab979d01 100644
--- a/dev-lang/ghc/ChangeLog
+++ b/dev-lang/ghc/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for dev-lang/ghc
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ChangeLog,v 1.181 2010/07/07 22:18:57 slyfox Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ChangeLog,v 1.182 2010/07/09 15:03:24 slyfox Exp $
+
+ 09 Jul 2010; Sergei Trofimovich <slyfox@gentoo.org> ghc-6.10.4-r1.ebuild,
+ +files/ghc-6.10.4-ia64-fixed-relax.patch,
+ +files/ghc-6.10.4-ia64-storage-manager-fix.patch, ghc-6.12.3.ebuild,
+ +files/ghc-6.12.3-ia64-fixed-relax.patch,
+ +files/ghc-6.12.3-ia64-storage-manager-fix.patch:
+ Added binaries for ia64 so readded ~ia64 keywords for 6.10.4 and 6.12.3
07 Jul 2010; Sergei Trofimovich <slyfox@gentoo.org> -ghc-6.10.4.ebuild,
ghc-6.10.4-r1.ebuild, ghc-6.12.3.ebuild,
diff --git a/dev-lang/ghc/files/ghc-6.10.4-ia64-fixed-relax.patch b/dev-lang/ghc/files/ghc-6.10.4-ia64-fixed-relax.patch
new file mode 100644
index 000000000000..b9fa2925bb69
--- /dev/null
+++ b/dev-lang/ghc/files/ghc-6.10.4-ia64-fixed-relax.patch
@@ -0,0 +1,35 @@
+commit dcdb5df8bc0e973b856e88a7b78f88f947453feb
+Author: Sergei Trofimovich <slyfox@gentoo.org>
+Date: Tue Jul 6 11:38:47 2010 +0300
+
+ Fixing link failure of compiler on ia64 ('-Wl,' prefixed value passed directly to ld)
+
+ /usr/bin/ld -Wl,--relax -r -o dist-stage1/build/HSghc-6.10.4.o \
+ dist-stage1/build/BasicTypes.o dist-stage1/build/DataCon.o ...
+ /usr/bin/ld: unrecognized option '-Wl,--relax'
+
+ If we just drop '-Wl,' part it will not help as '-r' and '--relax' are incompatible.
+
+ Looks like '-Wl,--relax' was skipped by earlier binutils' ld as unknown option.
+ Removing ia64 specific path.
+
+ Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
+
+diff --git a/compiler/Makefile b/compiler/Makefile
+index 0e7457b..17deab2 100644
+--- a/compiler/Makefile
++++ b/compiler/Makefile
+@@ -130,13 +130,6 @@ ifeq "$(TargetOS_CPP)" "openbsd"
+ COMMON_CONFIGURE_FLAGS += --ld-options=-E
+ endif
+
+-ifeq "$(GhcUnregisterised)" "NO"
+-ifeq "$(HOSTPLATFORM)" "ia64-unknown-linux"
+-# needed for generating proper relocation in large binaries: trac #856
+-COMMON_CONFIGURE_FLAGS += --ld-option=-Wl,--relax
+-endif
+-endif
+-
+ # We need to turn on profiling either if we have been asked to
+ # (GhcLibProfiled = YES) or if we want GHC itself to be compiled with
+ # profiling enabled (GhcProfiled = YES).
diff --git a/dev-lang/ghc/files/ghc-6.10.4-ia64-storage-manager-fix.patch b/dev-lang/ghc/files/ghc-6.10.4-ia64-storage-manager-fix.patch
new file mode 100644
index 000000000000..37daea5d55ca
--- /dev/null
+++ b/dev-lang/ghc/files/ghc-6.10.4-ia64-storage-manager-fix.patch
@@ -0,0 +1,63 @@
+storage manager: preserve upper address bits on 64bit machines (thanks to zygoloid)
+
+the issue: durin ia64 ghc bootstrap (both 6.10.4 and 6.12.3) I
+got the failure on stage2 phase:
+ "inplace/bin/ghc-stage2" -H32m -O -H64m -O0 -w ...
+ ghc-stage2: internal error: evacuate: strange closure type 15
+ (GHC version 6.12.3 for ia64_unknown_linux)
+ Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
+ make[1]: *** [libraries/dph/dph-base/dist-install/build/Data/Array/Parallel/Base/Hyperstrict.o] Aborted
+
+I attached gdb and got backtrace:
+
+Breakpoint 1 at 0x400000000469ec31: file rts/RtsMessages.c, line 39.
+(gdb) run -B/var/tmp/portage/dev-lang/ghc-6.12.3/work/ghc-6.12.3/inplace/bin --info
+Starting program: /var/tmp/portage/dev-lang/ghc-6.12.3/work/ghc-6.12.3/inplace/lib/ghc-stage2 -B/var/tmp/portage/dev-lang/
+ghc-6.12.3/work/ghc-6.12.3/inplace/bin --info
+[Thread debugging using libthread_db enabled]
+
+Breakpoint 1, barf (s=0x40000000047915b0 "evacuate: strange closure type %d") at rts/RtsMessages.c:39
+39 va_start(ap,s);
+(gdb) bt
+#0 barf (s=0x40000000047915b0 "evacuate: strange closure type %d") at rts/RtsMessages.c:39
+#1 0x400000000474a1e0 in evacuate (p=0x6000000000147958) at rts/sm/Evac.c:756
+#2 0x40000000046d68c0 in scavenge_srt (srt=0x6000000000147958, srt_bitmap=7) at rts/sm/Scav.c:348
+...
+
+> 16:52:53 < zygoloid> slyfox: i'm no ghc expert but it looks like HEAP_ALLOCED_GC(q)
+> is returning true for a FUN_STATIC closure
+> 17:18:43 < zygoloid> try: p HEAP_ALLOCED_miss((unsigned long)(*p) >> 20, *p)
+> 17:19:12 < slyfox> (gdb) p HEAP_ALLOCED_miss((unsigned long)(*p) >> 20, *p)
+> 17:19:12 < slyfox> $1 = 0
+> 17:19:40 < zygoloid> i /think/ that means the mblock_cache is broken
+> 17:22:45 < zygoloid> i can't help further. however i am suspicious that you seem to have pointers with similar-looking low 33
+> bits and different high 4 bits, and it looks like such pointers get put into the same bucket in
+> mblock_cache.
+...
+> 17:36:16 < zygoloid> slyfox: try changing the definition of MbcCacheLine to StgWord64, see if that helps
+> 17:36:31 < zygoloid> that's in includes/rts/storage/MBlock.h
+And it helped!
+
+diff --git a/rts/sm/MBlock.h b/rts/sm/MBlock.h
+index 516fb7f..725d32f 100644
+--- a/rts/sm/MBlock.h
++++ b/rts/sm/MBlock.h
+@@ -117,7 +117,17 @@ extern StgWord8 mblock_map[];
+
+ #define MBC_LINE_BITS 0
+ #define MBC_TAG_BITS 15
+-typedef StgWord32 MbcCacheLine; // could use 16, but 32 was faster
++
++#if x86_64_HOST_ARCH
++// 32bits are enough for 'entry' as modern amd64 boxes have
++// only 48bit sized virtual addres.
++typedef StgWord32 MbcCacheLine;
++#else
++// 32bits is not enough here as some arches (like ia64) use
++// upper address bits to distinct memory areas.
++typedef StgWord64 MbcCacheLine;
++#endif
++
+ typedef StgWord8 MBlockMapLine;
+
+ #define MBLOCK_MAP_LINE(p) (((StgWord)p & 0xffffffff) >> (MBLOCK_SHIFT + MBC_LINE_BITS))
diff --git a/dev-lang/ghc/files/ghc-6.12.3-ia64-fixed-relax.patch b/dev-lang/ghc/files/ghc-6.12.3-ia64-fixed-relax.patch
new file mode 100644
index 000000000000..37bfab110fd0
--- /dev/null
+++ b/dev-lang/ghc/files/ghc-6.12.3-ia64-fixed-relax.patch
@@ -0,0 +1,35 @@
+commit 7b45030b81fb0588b858400c051f9f7c10ef2760
+Author: Sergei Trofimovich <slyfox@gentoo.org>
+Date: Tue Jul 6 11:39:18 2010 +0300
+
+ Fixing link failure of compiler on ia64 ('-Wl,' prefixed value passed directly to ld)
+
+ /usr/bin/ld -Wl,--relax -r -o dist-stage1/build/HSghc-6.10.4.o \
+ dist-stage1/build/BasicTypes.o dist-stage1/build/DataCon.o ...
+ /usr/bin/ld: unrecognized option '-Wl,--relax'
+
+ If we just drop '-Wl,' part it will not help as '-r' and '--relax' are incompatible.
+
+ Looks like '-Wl,--relax' was skipped by earlier binutils' ld as unknown option.
+ Removing ia64 specific path.
+
+ Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
+
+diff --git a/compiler/ghc.mk b/compiler/ghc.mk
+index 6b25efa..29d3ade 100644
+--- a/compiler/ghc.mk
++++ b/compiler/ghc.mk
+@@ -337,13 +337,6 @@ ifeq "$(TargetOS_CPP)" "openbsd"
+ compiler_CONFIGURE_OPTS += --ld-options=-E
+ endif
+
+-ifeq "$(GhcUnregisterised)" "NO"
+-ifeq "$(HOSTPLATFORM)" "ia64-unknown-linux"
+-# needed for generating proper relocation in large binaries: trac #856
+-compiler_CONFIGURE_OPTS += --ld-option=-Wl,--relax
+-endif
+-endif
+-
+ # We need to turn on profiling either if we have been asked to
+ # (GhcLibProfiled = YES) or if we want GHC itself to be compiled with
+ # profiling enabled (GhcProfiled = YES).
diff --git a/dev-lang/ghc/files/ghc-6.12.3-ia64-storage-manager-fix.patch b/dev-lang/ghc/files/ghc-6.12.3-ia64-storage-manager-fix.patch
new file mode 100644
index 000000000000..1458dcc7d8b6
--- /dev/null
+++ b/dev-lang/ghc/files/ghc-6.12.3-ia64-storage-manager-fix.patch
@@ -0,0 +1,62 @@
+storage manager: preserve upper address bits on 64bit machines (thanks to zygoloid)
+
+the issue: durin ia64 ghc bootstrap (both 6.10.4 and 6.12.3) I
+got the failure on stage2 phase:
+ "inplace/bin/ghc-stage2" -H32m -O -H64m -O0 -w ...
+ ghc-stage2: internal error: evacuate: strange closure type 15
+ (GHC version 6.12.3 for ia64_unknown_linux)
+ Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
+ make[1]: *** [libraries/dph/dph-base/dist-install/build/Data/Array/Parallel/Base/Hyperstrict.o] Aborted
+
+I attached gdb and got backtrace:
+
+Breakpoint 1 at 0x400000000469ec31: file rts/RtsMessages.c, line 39.
+(gdb) run -B/var/tmp/portage/dev-lang/ghc-6.12.3/work/ghc-6.12.3/inplace/bin --info
+Starting program: /var/tmp/portage/dev-lang/ghc-6.12.3/work/ghc-6.12.3/inplace/lib/ghc-stage2 -B/var/tmp/portage/dev-lang/ghc-6.12.3/work/ghc-6.12.3/inplace/bin --info
+[Thread debugging using libthread_db enabled]
+
+Breakpoint 1, barf (s=0x40000000047915b0 "evacuate: strange closure type %d") at rts/RtsMessages.c:39
+39 va_start(ap,s);
+(gdb) bt
+#0 barf (s=0x40000000047915b0 "evacuate: strange closure type %d") at rts/RtsMessages.c:39
+#1 0x400000000474a1e0 in evacuate (p=0x6000000000147958) at rts/sm/Evac.c:756
+#2 0x40000000046d68c0 in scavenge_srt (srt=0x6000000000147958, srt_bitmap=7) at rts/sm/Scav.c:348
+...
+
+> 16:52:53 < zygoloid> slyfox: i'm no ghc expert but it looks like HEAP_ALLOCED_GC(q)
+> is returning true for a FUN_STATIC closure
+> 17:18:43 < zygoloid> try: p HEAP_ALLOCED_miss((unsigned long)(*p) >> 20, *p)
+> 17:19:12 < slyfox> (gdb) p HEAP_ALLOCED_miss((unsigned long)(*p) >> 20, *p)
+> 17:19:12 < slyfox> $1 = 0
+> 17:19:40 < zygoloid> i /think/ that means the mblock_cache is broken
+> 17:22:45 < zygoloid> i can't help further. however i am suspicious that you seem to have pointers with similar-looking low 33
+> bits and different high 4 bits, and it looks like such pointers get put into the same bucket in
+> mblock_cache.
+...
+> 17:36:16 < zygoloid> slyfox: try changing the definition of MbcCacheLine to StgWord64, see if that helps
+> 17:36:31 < zygoloid> that's in includes/rts/storage/MBlock.h
+And it helped!
+
+diff --git a/includes/rts/storage/MBlock.h b/includes/rts/storage/MBlock.h
+index 0943d4c..a113498 100644
+--- a/includes/rts/storage/MBlock.h
++++ b/includes/rts/storage/MBlock.h
+@@ -126,7 +126,17 @@ extern StgWord8 mblock_map[];
+
+ #define MBC_LINE_BITS 0
+ #define MBC_TAG_BITS 15
+-typedef StgWord32 MbcCacheLine; // could use 16, but 32 was faster
++
++#if x86_64_HOST_ARCH
++// 32bits are enough for 'entry' as modern amd64 boxes have
++// only 48bit sized virtual addres.
++typedef StgWord32 MbcCacheLine;
++#else
++// 32bits is not enough here as some arches (like ia64) use
++// upper address bits to distinct memory areas.
++typedef StgWord64 MbcCacheLine;
++#endif
++
+ typedef StgWord8 MBlockMapLine;
+
+ #define MBLOCK_MAP_LINE(p) (((StgWord)p & 0xffffffff) >> (MBLOCK_SHIFT + MBC_LINE_BITS))
diff --git a/dev-lang/ghc/ghc-6.10.4-r1.ebuild b/dev-lang/ghc/ghc-6.10.4-r1.ebuild
index 1a238f495e1b..18f03a040e1b 100644
--- a/dev-lang/ghc/ghc-6.10.4-r1.ebuild
+++ b/dev-lang/ghc/ghc-6.10.4-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ghc-6.10.4-r1.ebuild,v 1.6 2010/07/07 22:18:57 slyfox Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ghc-6.10.4-r1.ebuild,v 1.7 2010/07/09 15:03:24 slyfox Exp $
# Brief explanation of the bootstrap logic:
#
@@ -43,22 +43,17 @@ arch_binaries=""
arch_binaries="$arch_binaries alpha? ( http://code.haskell.org/~ivanm/ghc-bin-${PV}-alpha.tbz2 )"
arch_binaries="$arch_binaries x86? ( http://code.haskell.org/~ivanm/ghc-bin-${PV}-x86.tbz2 )"
arch_binaries="$arch_binaries amd64? ( http://haskell.org/~kolmodin/ghc-bin-${PV}-amd64.tbz2 )"
+arch_binaries="$arch_binaries ia64? ( http://code.haskell.org/~slyfox/ghc-ia64/ghc-bin-${PV}-ia64.tbz2 )"
arch_binaries="$arch_binaries sparc? ( http://haskell.org/~duncan/ghc/ghc-bin-${PV}-sparc.tbz2 )"
arch_binaries="$arch_binaries ppc64? ( http://code.haskell.org/~slyfox/ghc-ppc64/ghc-bin-${PV}-ppc64.tbz2 )"
-arch_binaries="$arch_binaries ppc? ( mirror://gentoo/ghc-bin-${PV}-ppc.tbz2 )"
-
-#arch_binaries="$arch_binaries alpha? ( mirror://gentoo/ghc-bin-${PV}-alpha.tbz2 )"
-#arch_binaries="$arch_binaries amd64? ( mirror://gentoo/ghc-bin-${PV}-amd64.tbz2 )"
-#arch_binaries="$arch_binaries ia64? ( mirror://gentoo/ghc-bin-${PV}-ia64.tbz2 )"
-#arch_binaries="$arch_binaries sparc? ( mirror://gentoo/ghc-bin-${PV}-sparc.tbz2 )"
-#arch_binaries="$arch_binaries x86? ( mirror://gentoo/ghc-bin-${PV}-x86.tbz2 )"
+arch_binaries="$arch_binaries ppc? ( mirror://gentoo/ghc-bin-${PV}-ppc.tbz2 )"
SRC_URI="!binary? ( http://haskell.org/ghc/dist/${EXTRA_SRC_URI}/${P}-src.tar.bz2 )
!ghcbootstrap? ( $arch_binaries )"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
IUSE="binary doc ghcbootstrap"
RDEPEND="
@@ -197,7 +192,13 @@ src_unpack() {
# http://hackage.haskell.org/trac/ghc/ticket/3730
epatch "${FILESDIR}/ghc-6.10.4-libm-detection.patch"
- # as we have changed the build system with the readline patch
+ # -r and --relax are incompatible
+ epatch "${FILESDIR}/ghc-6.10.4-ia64-fixed-relax.patch"
+
+ # prevent from wiping upper address bits used in cache lookup
+ epatch "${FILESDIR}/ghc-6.10.4-ia64-storage-manager-fix.patch"
+
+ # as we have changed the build system
eautoreconf
fi
}
@@ -231,17 +232,24 @@ src_compile() {
# portage logging) reported as bug #111183
echo "SRC_HC_OPTS+=-w" >> mk/build.mk
- # GHC build system knows to build unregisterised on alpha,
- # but we have to tell it to build unregisterised on some arches
- # ppc64: EvilMangler currently does not understand some TOCs
+ # some arches do not support ELF parsing for ghci module loading
+ # PPC64: never worked (should be easy to implement)
+ # alpha: never worked
if use alpha || use ppc64; then
- echo "GhcUnregisterised=YES" >> mk/build.mk
echo "GhcWithInterpreter=NO" >> mk/build.mk
+ fi
+
+ # we have to tell it to build unregisterised on some arches
+ # ppc64: EvilMangler currently does not understand some TOCs
+ # ia64: EvilMangler bitrot
+ if use alpha || use hppa || use ia64 || use ppc64; then
+ echo "GhcUnregisterised=YES" >> mk/build.mk
echo "GhcWithNativeCodeGen=NO" >> mk/build.mk
echo "SplitObjs=NO" >> mk/build.mk
echo "GhcRTSWays := debug" >> mk/build.mk
echo "GhcNotThreaded=YES" >> mk/build.mk
fi
+
# Have "ld -r --relax" problem with split-objs on sparc:
if use sparc; then
echo "SplitObjs=NO" >> mk/build.mk
diff --git a/dev-lang/ghc/ghc-6.12.3.ebuild b/dev-lang/ghc/ghc-6.12.3.ebuild
index 9014f2d5aefd..652e5513487a 100644
--- a/dev-lang/ghc/ghc-6.12.3.ebuild
+++ b/dev-lang/ghc/ghc-6.12.3.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ghc-6.12.3.ebuild,v 1.4 2010/07/07 22:18:57 slyfox Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ghc-6.12.3.ebuild,v 1.5 2010/07/09 15:03:24 slyfox Exp $
# Brief explanation of the bootstrap logic:
#
@@ -38,20 +38,15 @@ arch_binaries=""
arch_binaries="$arch_binaries alpha? ( http://code.haskell.org/~slyfox/ghc-alpha/ghc-bin-${PV}-alpha.tbz2 )"
arch_binaries="$arch_binaries x86? ( mirror://gentoo/ghc-bin-${PV}-x86.tbz2 )"
arch_binaries="$arch_binaries amd64? ( mirror://gentoo/ghc-bin-${PV}-amd64.tbz2 )"
+arch_binaries="$arch_binaries ia64? ( http://code.haskell.org/~slyfox/ghc-ia64/ghc-bin-${PV}-ia64.tbz2 )"
#arch_binaries="$arch_binaries sparc? ( http://haskell.org/~duncan/ghc/ghc-bin-${PV}-sparc.tbz2 )"
arch_binaries="$arch_binaries ppc64? ( mirror://gentoo/ghc-bin-${PV}-ppc64.tbz2 )"
-#arch_binaries="$arch_binaries alpha? ( mirror://gentoo/ghc-bin-${PV}-alpha.tbz2 )"
-#arch_binaries="$arch_binaries amd64? ( mirror://gentoo/ghc-bin-${PV}-amd64.tbz2 )"
-#arch_binaries="$arch_binaries ia64? ( mirror://gentoo/ghc-bin-${PV}-ia64.tbz2 )"
-#arch_binaries="$arch_binaries sparc? ( mirror://gentoo/ghc-bin-${PV}-sparc.tbz2 )"
-#arch_binaries="$arch_binaries x86? ( mirror://gentoo/ghc-bin-${PV}-x86.tbz2 )"
-
SRC_URI="!binary? ( http://darcs.haskell.org/download/dist/${PV}/${P}-src.tar.bz2 )
!ghcbootstrap? ( $arch_binaries )"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~ppc64 ~x86"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc64 ~x86"
IUSE="binary doc ghcbootstrap"
RDEPEND="
@@ -202,10 +197,15 @@ src_unpack() {
epatch "${FILESDIR}/ghc-6.12.1-configure-CHOST.patch"
epatch "${FILESDIR}/ghc-6.12.2-configure-CHOST-part2.patch"
+ # -r and --relax are incompatible
+ epatch "${FILESDIR}/ghc-6.12.3-ia64-fixed-relax.patch"
+
+ # prevent from wiping upper address bits used in cache lookup
+ epatch "${FILESDIR}/ghc-6.12.3-ia64-storage-manager-fix.patch"
+
# fixes build failure of adjustor code
epatch "${FILESDIR}/ghc-6.12.3-alpha-use-libffi-for-foreign-import-wrapper.patch"
-
- # as we have changed the build system with the readline patch
+ # as we have changed the build system
eautoreconf
fi
}
@@ -242,17 +242,24 @@ src_compile() {
# portage logging) reported as bug #111183
echo "SRC_HC_OPTS+=-w" >> mk/build.mk
- # GHC build system knows to build unregisterised on alpha,
- # but we have to tell it to build unregisterised on some arches
- # ppc64: EvilMangler currently does not understand some TOCs
+ # some arches do not support ELF parsing for ghci module loading
+ # PPC64: never worked (should be easy to implement)
+ # alpha: never worked
if use alpha || use ppc64; then
- echo "GhcUnregisterised=YES" >> mk/build.mk
echo "GhcWithInterpreter=NO" >> mk/build.mk
+ fi
+
+ # we have to tell it to build unregisterised on some arches
+ # ppc64: EvilMangler currently does not understand some TOCs
+ # ia64: EvilMangler bitrot
+ if use alpha || use hppa || use ia64 || use ppc64; then
+ echo "GhcUnregisterised=YES" >> mk/build.mk
echo "GhcWithNativeCodeGen=NO" >> mk/build.mk
echo "SplitObjs=NO" >> mk/build.mk
echo "GhcRTSWays := debug" >> mk/build.mk
echo "GhcNotThreaded=YES" >> mk/build.mk
fi
+
# Have "ld -r --relax" problem with split-objs on sparc:
if use sparc; then
echo "SplitObjs=NO" >> mk/build.mk