X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FRts.h;h=331840236469ea470316d2c3a9554a393185879c;hb=57fad22f920f13527a0e6f1ee26eb326580fcb1a;hp=59c8c2d3a6949bc631f3a4026900a35397f443ac;hpb=254528e32a007e508bb5967948ba02aa15c7e482;p=ghc-hetmet.git diff --git a/includes/Rts.h b/includes/Rts.h index 59c8c2d..3318402 100644 --- a/includes/Rts.h +++ b/includes/Rts.h @@ -48,6 +48,29 @@ extern "C" { #define ATTRIBUTE_ALIGNED(n) /*nothing*/ #endif +// Symbols that are extern, but private to the RTS, are declared +// with visibility "hidden" to hide them outside the RTS shared +// library. +#if !defined(mingw32_HOST_OS) +#define RTS_PRIVATE GNUC3_ATTRIBUTE(visibility("hidden")) +#else +#define RTS_PRIVATE /* disabled: RTS_PRIVATE */ +#endif + +#if __GNUC__ > 4 +#define BEGIN_RTS_PRIVATE #pragma GCC visibility push(hidden) +#define END_RTS_PRIVATE #pragma GCC visibility pop +#else +#define BEGIN_RTS_PRIVATE /* disabled: BEGIN_RTS_PRIVATE */ +#define END_RTS_PRIVATE /* disabled: END_RTS_PRIVATE */ +#endif + +#if __GNUC__ > 4 +#define RTS_UNLIKELY(p) __builtin_expect((p),0) +#else +#define RTS_UNLIKELY(p) p +#endif + /* Fix for mingw stat problem (done here so it's early enough) */ #ifdef mingw32_HOST_OS #define __MSVCRT__ 1 @@ -120,9 +143,16 @@ void _assertFail(const char *filename, unsigned int linenum) #define FMT_Word64 "lu" #define FMT_Int64 "ld" #else +#if defined(mingw32_HOST_OS) +/* mingw doesn't understand %llu/%lld - it treats them as 32-bit + rather than 64-bit */ +#define FMT_Word64 "I64u" +#define FMT_Int64 "I64d" +#else #define FMT_Word64 "llu" #define FMT_Int64 "lld" #endif +#endif /* ----------------------------------------------------------------------------- Include everything STG-ish