diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2020-10-28 13:19:21 +0000 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2020-10-28 13:19:21 +0000 |
commit | 0bc199fc5d4eef5a20ced20df892e5e3b8821b60 (patch) | |
tree | 4a5bf3d02e15c7ce9eed8cec5ca87fd79d1a980a | |
parent | 2acb33103c4cbc6766d8707ad58aa5cc9a804719 (diff) | |
download | gcc-0bc199fc5d4eef5a20ced20df892e5e3b8821b60.zip gcc-0bc199fc5d4eef5a20ced20df892e5e3b8821b60.tar.gz gcc-0bc199fc5d4eef5a20ced20df892e5e3b8821b60.tar.bz2 |
libstdc++: Override BUFSIZ for Windows targets [PR 94268]
This replaces uses of BUFSIZ with a new _GLIBCXX_BUFSIZ macro that can
be overridden in target-specific config headers.
That allows the mingw and mingw-w64 targets to override it, because
BUFSIZ is apparently defined to 512, resulting in poor performance. The
MSVCRT stdio apparently uses 4096, so we use that too.
libstdc++-v3/ChangeLog:
PR libstdc++/94268
* config/os/mingw32-w64/os_defines.h (_GLIBCXX_BUFSIZ):
Define.
* config/os/mingw32/os_defines.h (_GLIBCXX_BUFSIZ):
Define.
* include/bits/fstream.tcc: Use _GLIBCXX_BUFSIZ instead
of BUFSIZ.
* include/ext/stdio_filebuf.h: Likewise.
* include/std/fstream (_GLIBCXX_BUFSIZ): Define.
-rw-r--r-- | libstdc++-v3/config/os/mingw32-w64/os_defines.h | 3 | ||||
-rw-r--r-- | libstdc++-v3/config/os/mingw32/os_defines.h | 3 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/fstream.tcc | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/ext/stdio_filebuf.h | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/std/fstream | 5 |
5 files changed, 14 insertions, 3 deletions
diff --git a/libstdc++-v3/config/os/mingw32-w64/os_defines.h b/libstdc++-v3/config/os/mingw32-w64/os_defines.h index e535f6c..39bdedd 100644 --- a/libstdc++-v3/config/os/mingw32-w64/os_defines.h +++ b/libstdc++-v3/config/os/mingw32-w64/os_defines.h @@ -90,4 +90,7 @@ #define _GLIBCXX_USE_CRT_RAND_S 1 +// See libstdc++/94268 +#define _GLIBCXX_BUFSIZ 4096 + #endif diff --git a/libstdc++-v3/config/os/mingw32/os_defines.h b/libstdc++-v3/config/os/mingw32/os_defines.h index 1fee89c..9d2f2bd 100644 --- a/libstdc++-v3/config/os/mingw32/os_defines.h +++ b/libstdc++-v3/config/os/mingw32/os_defines.h @@ -78,4 +78,7 @@ // See libstdc++/59807 #define _GTHREAD_USE_MUTEX_INIT_FUNC 1 +// See libstdc++/94268 +#define _GLIBCXX_BUFSIZ 4096 + #endif diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc index 81d00c4..a4ebbb8 100644 --- a/libstdc++-v3/include/bits/fstream.tcc +++ b/libstdc++-v3/include/bits/fstream.tcc @@ -80,7 +80,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION basic_filebuf<_CharT, _Traits>:: basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock), _M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(), - _M_state_last(), _M_buf(0), _M_buf_size(BUFSIZ), + _M_state_last(), _M_buf(0), _M_buf_size(_GLIBCXX_BUFSIZ), _M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(), _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false), _M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0), diff --git a/libstdc++-v3/include/ext/stdio_filebuf.h b/libstdc++-v3/include/ext/stdio_filebuf.h index fb95bec..3b29728 100644 --- a/libstdc++-v3/include/ext/stdio_filebuf.h +++ b/libstdc++-v3/include/ext/stdio_filebuf.h @@ -75,7 +75,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * closed when the stdio_filebuf is closed/destroyed. */ stdio_filebuf(int __fd, std::ios_base::openmode __mode, - size_t __size = static_cast<size_t>(BUFSIZ)); + size_t __size = static_cast<size_t>(_GLIBCXX_BUFSIZ)); /** * @param __f An open @c FILE*. @@ -88,7 +88,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * stdio_filebuf is closed/destroyed. */ stdio_filebuf(std::__c_file* __f, std::ios_base::openmode __mode, - size_t __size = static_cast<size_t>(BUFSIZ)); + size_t __size = static_cast<size_t>(_GLIBCXX_BUFSIZ)); /** * Closes the external data stream if the file descriptor constructor diff --git a/libstdc++-v3/include/std/fstream b/libstdc++-v3/include/std/fstream index efc99d1..d884a15 100644 --- a/libstdc++-v3/include/std/fstream +++ b/libstdc++-v3/include/std/fstream @@ -44,6 +44,11 @@ #include <string> // For std::string overloads. #endif +// This can be overridden by the target's os_defines.h +#ifndef _GLIBCXX_BUFSIZ +# define _GLIBCXX_BUFSIZ BUFSIZ +#endif + namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION |