X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FRtsMessages.c;h=6e75abc8a5b24ff95c3e43b40d72e8a52b1741a4;hp=362b369f4fd1de99f2e1c0a2eefe72477e5ceabc;hb=e5c3b478b3cd1707cf122833822f44b2ac09b8e9;hpb=c9c5430453f73208fa5d516a39cbbdd784444441 diff --git a/rts/RtsMessages.c b/rts/RtsMessages.c index 362b369..6e75abc 100644 --- a/rts/RtsMessages.c +++ b/rts/RtsMessages.c @@ -9,6 +9,8 @@ #include "PosixSource.h" #include "Rts.h" +#include "eventlog/EventLog.h" + #include #include #include @@ -128,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) @@ -161,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); } @@ -187,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); @@ -239,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"); }