parent
867f158875
commit
33e19124c9
@ -1,27 +0,0 @@
|
|||||||
Description: Use native x86_64 instructions on x32
|
|
||||||
This patch enables a few native 64-bit integer instructions
|
|
||||||
on x32 which are available on this architecture despite using
|
|
||||||
32-bit pointers. These instructions are present on x86_64 but
|
|
||||||
not on x86 and ghc checks the size of (void *) to determine
|
|
||||||
that. This method fails on x32 since despite using 32-bit
|
|
||||||
pointers and hence sizeof(void *) == 4, it still uses the
|
|
||||||
full x86_64 instruction set and software-emulated variants
|
|
||||||
of the aforementioned 64-bit integer instructions are
|
|
||||||
therefore not present in the toolchain which will make ghc
|
|
||||||
fail to build on x32.
|
|
||||||
See: https://ghc.haskell.org/trac/ghc/ticket/11571
|
|
||||||
.
|
|
||||||
|
|
||||||
Index: ghc-8.0.2/rts/RtsSymbols.c
|
|
||||||
===================================================================
|
|
||||||
--- ghc-8.0.2.orig/rts/RtsSymbols.c
|
|
||||||
+++ ghc-8.0.2/rts/RtsSymbols.c
|
|
||||||
@@ -857,7 +857,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
// 64-bit support functions in libgcc.a
|
|
||||||
-#if defined(__GNUC__) && SIZEOF_VOID_P <= 4 && !defined(_ABIN32)
|
|
||||||
+#if defined(__GNUC__) && SIZEOF_VOID_P <= 4 && !defined(_ABIN32) && !(defined(__x86_64__) && defined(__ILP32__))
|
|
||||||
#define RTS_LIBGCC_SYMBOLS \
|
|
||||||
SymI_NeedsProto(__divdi3) \
|
|
||||||
SymI_NeedsProto(__udivdi3) \
|
|
Loading…
Reference in new issue