You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-lang/ghc/files/ghc-6.12.3-powerpc-darwin-n...

38 lines
1.4 KiB

Tue Nov 30 06:30:14 PST 2010 pho@cielonegro.org
* FIX #1845 (unconditional relative branch out of range)
Don't use mmap on powerpc-apple-darwin as mmap doesn't support
reallocating but we need to allocate jump islands just after each
object images. Otherwise relative branches to jump islands can fail
due to 24-bits displacement overflow.
diff -rN -u old-ghc/rts/Linker.c new-ghc/rts/Linker.c
--- old-ghc/rts/Linker.c 2011-04-19 01:37:03.000000000 -0700
+++ new-ghc/rts/Linker.c 2011-04-19 01:37:04.000000000 -0700
@@ -69,7 +69,15 @@
#include <sys/wait.h>
#endif
-#if defined(linux_HOST_OS) || defined(freebsd_HOST_OS) || defined(dragonfly_HOST_OS) || defined(netbsd_HOST_OS) || defined(openbsd_HOST_OS) || defined(darwin_HOST_OS)
+#if defined(linux_HOST_OS ) || defined(freebsd_HOST_OS) || \
+ defined(dragonfly_HOST_OS) || defined(netbsd_HOST_OS ) || \
+ defined(openbsd_HOST_OS ) || \
+ ( defined(darwin_HOST_OS ) && !defined(powerpc_HOST_ARCH) )
+/* Don't use mmap on powerpc-apple-darwin as mmap doesn't support
+ * reallocating but we need to allocate jump islands just after each
+ * object images. Otherwise relative branches to jump islands can fail
+ * due to 24-bits displacement overflow.
+ */
#define USE_MMAP
#include <fcntl.h>
#include <sys/mman.h>
@@ -1841,6 +1849,9 @@
int fd;
#else
FILE *f;
+# if defined(darwin_HOST_OS)
+ int misalignment;
+# endif
#endif
IF_DEBUG(linker, debugBelch("loadObj %s\n", path));