summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2018-12-18 23:17:45 +0000
committerBen Gamari <ben@well-typed.com>2018-12-29 11:20:49 -0500
commit1638350f0629365f20e97554e872d85b75f48d73 (patch)
treeda47cfcd274f26fdae84f6ffd825eb82d6b0e812
parent9bce364125b55407e632d9a2061d09c6f346fa71 (diff)
downloadhaskell-1638350f0629365f20e97554e872d85b75f48d73.tar.gz
rts: fix build failure on OpenBSD (_DYNAMIC symbol collision)
Summary: Build failure on OpenBSD-6.4 the the following: ``` rts/RtsSymbols.c:994:1: error: error: redefinition of '_DYNAMIC' as different kind of symbol | 994 | RTS_OPENBSD_ONLY_SYMBOLS | ^ RTS_OPENBSD_ONLY_SYMBOLS ^ ``` On OpenBSD `_DYNAMIC` was always defined in `<elf.h>` headers but used not to be included. The change explicitly includes `<elf.h>` as a source of symbol definition. Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> Test Plan: build-tested on OpenBSD-6.4 Reviewers: bgamari, erikd, simonmar Subscribers: rwbarton, carter GHC Trac Issues: #15945 Differential Revision: https://phabricator.haskell.org/D5461
-rw-r--r--rts/RtsSymbols.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/rts/RtsSymbols.c b/rts/RtsSymbols.c
index 5091c90dad..123ee76778 100644
--- a/rts/RtsSymbols.c
+++ b/rts/RtsSymbols.c
@@ -27,6 +27,10 @@
#include <shfolder.h> /* SHGetFolderPathW */
#endif
+#if defined(openbsd_HOST_OS)
+#include <elf.h> /* _DYNAMIC */
+#endif
+
/* -----------------------------------------------------------------------------
* Symbols to be inserted into the RTS symbol table.
*/
@@ -280,7 +284,7 @@
#if defined(openbsd_HOST_OS)
#define RTS_OPENBSD_ONLY_SYMBOLS \
SymE_NeedsProto(__guard_local) \
- SymE_NeedsProto(_DYNAMIC)
+ SymE_HasProto(_DYNAMIC)
#else
#define RTS_OPENBSD_ONLY_SYMBOLS
#endif