summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libraries/base/Control/Exception.hs4
-rw-r--r--libraries/base/Debug/Trace.hs4
-rw-r--r--libraries/base/cbits/PrelIOUtils.c9
-rw-r--r--libraries/base/include/HsBase.h3
4 files changed, 18 insertions, 2 deletions
diff --git a/libraries/base/Control/Exception.hs b/libraries/base/Control/Exception.hs
index 3fc1139ff8..14bdef138c 100644
--- a/libraries/base/Control/Exception.hs
+++ b/libraries/base/Control/Exception.hs
@@ -581,7 +581,9 @@ uncaughtExceptionHandler = unsafePerformIO (newIORef defaultHandler)
withCString msg $ \cmsg ->
errorBelch cfmt cmsg
-foreign import ccall unsafe "RtsMessages.h errorBelch"
+-- don't use errorBelch() directly, because we cannot call varargs functions
+-- using the FFI.
+foreign import ccall unsafe "HsBase.h errorBelch2"
errorBelch :: CString -> CString -> IO ()
setUncaughtExceptionHandler :: (Exception -> IO ()) -> IO ()
diff --git a/libraries/base/Debug/Trace.hs b/libraries/base/Debug/Trace.hs
index c30c8111d1..742044e4d4 100644
--- a/libraries/base/Debug/Trace.hs
+++ b/libraries/base/Debug/Trace.hs
@@ -41,7 +41,9 @@ putTraceMsg msg = do
withCString msg $ \cmsg ->
debugBelch cfmt cmsg
-foreign import ccall unsafe "RtsMessages.h debugBelch"
+-- don't use debugBelch() directly, because we cannot call varargs functions
+-- using the FFI.
+foreign import ccall unsafe "HsBase.h debugBelch2"
debugBelch :: CString -> CString -> IO ()
#endif
diff --git a/libraries/base/cbits/PrelIOUtils.c b/libraries/base/cbits/PrelIOUtils.c
index f37c4b6726..556736e86b 100644
--- a/libraries/base/cbits/PrelIOUtils.c
+++ b/libraries/base/cbits/PrelIOUtils.c
@@ -7,3 +7,12 @@
#define INLINE
#include "HsBase.h"
+void errorBelch2(const char*s, char *t)
+{
+ return errorBelch(s,t);
+}
+
+void debugBelch2(const char*s, char *t)
+{
+ return debugBelch(s,t);
+}
diff --git a/libraries/base/include/HsBase.h b/libraries/base/include/HsBase.h
index 8e5676abe4..f69e9cf656 100644
--- a/libraries/base/include/HsBase.h
+++ b/libraries/base/include/HsBase.h
@@ -732,5 +732,8 @@ INLINE void * __hscore_from_intptr (intptr_t n) { return (void *)n; }
INLINE uintptr_t __hscore_to_uintptr (void *p) { return (uintptr_t)p; }
INLINE intptr_t __hscore_to_intptr (void *p) { return (intptr_t)p; }
+void errorBelch2(const char*s, char *t);
+void debugBelch2(const char*s, char *t);
+
#endif /* __HSBASE_H__ */