Fix interleaving of Fortran STOP messages
authorKwok Cheung Yeung <kcy@codesourcery.com>
Wed, 12 Sep 2018 13:53:34 +0000 (13:53 +0000)
committerAndrew Stubbs <ams@gcc.gnu.org>
Wed, 12 Sep 2018 13:53:34 +0000 (13:53 +0000)
Fortran STOP and ERROR STOP use a different function to print the "STOP" string
and the message string.  On GCN this results in out-of-order output, such as
"<msg>ERROR STOP ".

This patch fixes the problem by making estr_write use the proper Fortran write,
not C printf, so both parts are now output the same way.  This also ensures
that both parts are output to STDERR (not that that means anything on GCN).

2018-09-12  Kwok Cheung Yeung  <kcy@codesourcery.com>

libgfortran/
* runtime/minimal.c (estr_write): Define in terms of write.

From-SVN: r264239

libgfortran/ChangeLog
libgfortran/runtime/minimal.c

index 00a07b1..1120d30 100644 (file)
@@ -1,3 +1,7 @@
+2018-09-12  Kwok Cheung Yeung  <kcy@codesourcery.com>
+
+       * runtime/minimal.c (estr_write): Define in terms of write.
+
 2018-09-12  Andrew Stubbs  <ams@codesourcery.com>
 
        * runtime/minimal.c (exit): Only work around nvptx bugs on nvptx.
index 8940f97..b6d26fd 100644 (file)
@@ -196,7 +196,7 @@ sys_abort (void)
 #undef st_printf
 #define st_printf printf
 #undef estr_write
-#define estr_write printf
+#define estr_write(X) write(STDERR_FILENO, (X), strlen (X))
 #if __nvptx__
 /* Map "exit" to "abort"; see PR85463 '[nvptx] "exit" in offloaded region
    doesn't terminate process'.  */