X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRtsMessages.c;h=6e75abc8a5b24ff95c3e43b40d72e8a52b1741a4;hb=0885017a4e92fe5710d1427c214adb87b92987e5;hp=53a910e7567d0366ce46b8c55b1c9f5c339367b1;hpb=ab1e183aa7801f9260a9cbb6edbd553cf8249b25;p=ghc-hetmet.git diff --git a/rts/RtsMessages.c b/rts/RtsMessages.c index 53a910e..6e75abc 100644 --- a/rts/RtsMessages.c +++ b/rts/RtsMessages.c @@ -9,7 +9,11 @@ #include "PosixSource.h" #include "Rts.h" +#include "eventlog/EventLog.h" + #include +#include +#include #ifdef HAVE_WINDOWS_H #include @@ -126,7 +130,7 @@ isGUIApp(void) #define xstr(s) str(s) #define str(s) #s -void +void GNU_ATTRIBUTE(__noreturn__) rtsFatalInternalErrorFn(const char *s, va_list ap) { #if defined(cygwin32_HOST_OS) || defined (mingw32_HOST_OS) @@ -159,6 +163,10 @@ rtsFatalInternalErrorFn(const char *s, va_list ap) fflush(stderr); } +#ifdef TRACING + if (RtsFlags.TraceFlags.tracing == TRACE_EVENTLOG) endEventLogging(); +#endif + abort(); // stg_exit(EXIT_INTERNAL_ERROR); } @@ -185,7 +193,7 @@ rtsErrorMsgFn(const char *s, va_list ap) #endif { /* don't fflush(stdout); WORKAROUND bug in Linux glibc */ - if (prog_argv != NULL && prog_name != NULL) { + if (prog_name != NULL) { fprintf(stderr, "%s: ", prog_name); } vfprintf(stderr, s, ap); @@ -237,7 +245,12 @@ rtsSysErrorMsgFn(const char *s, va_list ap) } vfprintf(stderr, s, ap); if (syserr) { +#if defined(cygwin32_HOST_OS) || defined (mingw32_HOST_OS) + // Win32 error messages have a terminating \n + fprintf(stderr, ": %s", syserr); +#else fprintf(stderr, ": %s\n", syserr); +#endif } else { fprintf(stderr, "\n"); }