openbsd-ports/lang/ghc/patches/patch-rts_Linker_c
kili 04c1e03900 Bugfix udpate to ghc-7.8.4.
Also, use a new(er) bootstrapper; note that we have to use 7.8.3
for this, because if the built ghc and the bootstrapper have identical
versions, things will fail badly. May be it's not the ghc but the
cabal version which is problematic, but at the moment, I really
don'y call about *this* problem.
Still marked as broken. I hope to send promised diffs and new ports
for discussion tomorrow and then enable ghc and haskell-platform
on monday.
2015-01-01 19:25:36 +00:00

54 lines
1.6 KiB
Plaintext

$OpenBSD: patch-rts_Linker_c,v 1.9 2015/01/01 19:25:36 kili Exp $
Workaround error: unknown symbol '__guard_local'.
Dissable check for .init_array sections, we don't have them.
--- rts/Linker.c.orig Mon Dec 15 15:36:16 2014
+++ rts/Linker.c Mon Dec 29 10:24:49 2014
@@ -849,6 +849,14 @@ typedef struct _RtsSymbolVal {
#define RTS_DARWIN_ONLY_SYMBOLS
#endif
+#if defined(openbsd_HOST_OS)
+#define RTS_OPENBSD_ONLY_SYMBOLS \
+ SymE_NeedsProto(__guard_local) \
+ SymE_NeedsProto(__stack_smash_handler)
+#else
+#define RTS_OPENBSD_ONLY_SYMBOLS
+#endif
+
#ifndef SMP
# define MAIN_CAP_SYM SymI_HasProto(MainCapability)
#else
@@ -1434,6 +1442,7 @@ RTS_POSIX_ONLY_SYMBOLS
RTS_MINGW_ONLY_SYMBOLS
RTS_CYGWIN_ONLY_SYMBOLS
RTS_DARWIN_ONLY_SYMBOLS
+RTS_OPENBSD_ONLY_SYMBOLS
RTS_LIBGCC_SYMBOLS
RTS_LIBFFI_SYMBOLS
#undef SymI_NeedsProto
@@ -1469,6 +1478,7 @@ static RtsSymbolVal rtsSyms[] = {
RTS_MINGW_ONLY_SYMBOLS
RTS_CYGWIN_ONLY_SYMBOLS
RTS_DARWIN_ONLY_SYMBOLS
+ RTS_OPENBSD_ONLY_SYMBOLS
RTS_LIBGCC_SYMBOLS
RTS_LIBFFI_SYMBOLS
#if defined(darwin_HOST_OS) && defined(i386_HOST_ARCH)
@@ -4981,11 +4991,13 @@ static int getSectionKind_ELF( Elf_Shdr *hdr, int *is_
return SECTIONKIND_CODE_OR_RODATA;
}
+#ifndef openbsd_HOST_OS
if (hdr->sh_type == SHT_INIT_ARRAY
&& (hdr->sh_flags & SHF_ALLOC) && (hdr->sh_flags & SHF_WRITE)) {
/* .init_array section */
return SECTIONKIND_INIT_ARRAY;
}
+#endif
if (hdr->sh_type == SHT_NOBITS
&& (hdr->sh_flags & SHF_ALLOC) && (hdr->sh_flags & SHF_WRITE)) {