diff options
author | Janne Blomqvist <jb@gcc.gnu.org> | 2018-09-21 21:12:59 +0300 |
---|---|---|
committer | Janne Blomqvist <jb@gcc.gnu.org> | 2018-09-21 21:12:59 +0300 |
commit | edaaef601d0d6d263fba87b42d6d04c99dd23dba (patch) | |
tree | 1eae37a9045b327759b9ea32319467c34314ddb6 /libgfortran/configure.ac | |
parent | 5b4dd0158308d1a3effffd6316f1b39fdd1ad120 (diff) | |
download | gcc-edaaef601d0d6d263fba87b42d6d04c99dd23dba.zip gcc-edaaef601d0d6d263fba87b42d6d04c99dd23dba.tar.gz gcc-edaaef601d0d6d263fba87b42d6d04c99dd23dba.tar.bz2 |
Use vectored writes when reporting errors and warnings.
When producing error and warning messages, libgfortran writes a
message by using many system calls. By using vectored writes (the
POSIX writev function) when available and feasible to use without
major surgery, we reduce the chance that output gets intermingled with
other output to stderr.
In practice, this is done by introducing a new function estr_writev in
addition to the existing estr_write. In order to use this, the old
st_vprintf is removed, replaced by direct calls of vsnprintf, allowing
more message batching.
Regtested on x86_64-pc-linux-gnu.
libgfortran/ChangeLog:
2018-09-21 Janne Blomqvist <jb@gcc.gnu.org>
* config.h.in: Regenerated.
* configure: Regenerated.
* configure.ac: Check for writev and sys/uio.h.
* libgfortran.h: Include sys/uio.h.
(st_vprintf): Remove prototype.
(struct iovec): Define if not available.
(estr_writev): New prototype.
* runtime/backtrace.c (error_callback): Use estr_writev.
* runtime/error.c (ST_VPRINTF_SIZE): Remove.
(estr_writev): New function.
(st_vprintf): Remove.
(gf_vsnprintf): New function.
(ST_ERRBUF_SIZE): New macro.
(st_printf): Use vsnprintf.
(os_error): Use estr_writev.
(runtime_error): Use vsnprintf and estr_writev.
(runtime_error_at): Likewise.
(runtime_warning_at): Likewise.
(internal_error): Use estr_writev.
(generate_error_common): Likewise.
(generate_warning): Likewise.
(notify_std): Likewise.
* runtime/pause.c (pause_string): Likewise.
* runtime/stop.c (report_exception): Likewise.
(stop_string): Likewise.
(error_stop_string): Likewise.
From-SVN: r264487
Diffstat (limited to 'libgfortran/configure.ac')
-rw-r--r-- | libgfortran/configure.ac | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac index 05952aa..64f7b9a 100644 --- a/libgfortran/configure.ac +++ b/libgfortran/configure.ac @@ -276,7 +276,7 @@ AC_CHECK_TYPES([ptrdiff_t]) # check header files (we assume C89 is available, so don't check for that) AC_CHECK_HEADERS_ONCE(unistd.h sys/random.h sys/time.h sys/times.h \ -sys/resource.h sys/types.h sys/stat.h sys/wait.h \ +sys/resource.h sys/types.h sys/stat.h sys/uio.h sys/wait.h \ floatingpoint.h ieeefp.h fenv.h fptrap.h \ fpxcp.h pwd.h complex.h xlocale.h) @@ -315,7 +315,7 @@ else AC_CHECK_FUNCS_ONCE(getrusage times mkstemp strtof strtold snprintf \ ftruncate chsize chdir getentropy getlogin gethostname kill link symlink \ sleep ttyname \ - alarm access fork setmode fcntl \ + alarm access fork setmode fcntl writev \ gettimeofday stat fstat lstat getpwuid vsnprintf dup \ getcwd localtime_r gmtime_r getpwuid_r ttyname_r clock_gettime \ getgid getpid getuid geteuid umask getegid \ |