aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
AgeCommit message (Collapse)AuthorFilesLines
2021-01-04Update copyright years.Jakub Jelinek9991-9992/+9992
2021-01-02Daily bump.GCC Administrator1-0/+4
2021-01-01Rotate ChangeLog files - step 2 - remove 2020 entries from ChangeLog files.Jakub Jelinek1-8771/+1
Can't be committed together with the previous one due to the ChangeLog vs. other files restrictions.
2021-01-01Rotate ChangeLog files - part 1 - add ChangeLog-2020.Jakub Jelinek1-0/+8776
2021-01-01 Jakub Jelinek <jakub@redhat.com> gcc/ * ChangeLog-2020: Rotate ChangeLog. New file. gcc/ada/ * ChangeLog-2020: Rotate ChangeLog. New file. gcc/cp/ * ChangeLog-2020: Rotate ChangeLog. New file. gcc/d/ * ChangeLog-2020: Rotate ChangeLog. New file. gcc/fortran/ * ChangeLog-2020: Rotate ChangeLog. New file. gcc/testsuite/ * ChangeLog-2020: Rotate ChangeLog. New file. libgfortran/ * ChangeLog-2020: Rotate ChangeLog. New file. libstdc++-v3/ * ChangeLog-2020: Rotate ChangeLog. New file.
2020-12-28Daily bump.GCC Administrator1-0/+10
2020-12-27libstdc++: Update link to Arm ABIGerald Pfeifer2-2/+2
libstdc++-v3: 2020-12-27 Gerald Pfeifer <gerald@pfeifer.com> * doc/xml/manual/abi.xml: Update link to Arm ABI. * doc/html/manual/abi.html: Regenerate.
2020-12-27libstdc++: Move Valgrind references to httpsGerald Pfeifer2-4/+4
libstdc++-v3: 2020-12-27 Gerald Pfeifer <gerald@pfeifer.com> * doc/xml/manual/debug.xml: Move Valgrind references to https. * doc/html/manual/debug.html: Regenerate.
2020-12-27Daily bump.GCC Administrator1-0/+6
2020-12-26libstdc++: Update link to Intel/GNU compatibility paperGerald Pfeifer2-2/+2
libstdc++-v3: 2020-12-26 Gerald Pfeifer <gerald@pfeifer.com> * doc/xml/manual/abi.xml: Update link to Intel's compatibility with GNU compilers document. * doc/html/manual/abi.html: Regenerate.
2020-12-26Daily bump.GCC Administrator1-0/+11
2020-12-25libstdc++: Update link to Java docsGerald Pfeifer2-2/+2
libstdc++-v3: 2020-12-25 Gerald Pfeifer <gerald@pfeifer.com> * doc/xml/manual/messages.xml: Update link to Java docs. * doc/html/manual/facets.html: Ditto.
2020-12-25libstdc++: Convert three doxygen.nl links to httpsGerald Pfeifer2-6/+6
libstdc++-v3: 2020-12-25 Gerald Pfeifer <gerald@pfeifer.com> * doc/xml/manual/documentation_hacking.xml: Convert three links to doxygen.nl to https. * doc/html/manual/documentation_hacking.html: Regenerate.
2020-12-24Daily bump.GCC Administrator1-0/+4
2020-12-23Account for VxWorks headers in libstdc++ test on namesOlivier Hainque1-0/+41
Undefine various macros unexpectedly defined by VxWorks headers. for libstdc++-v3/ChangeLog * testsuite/17_intro/names.cc: Account for VxWorks headers.
2020-12-22Daily bump.GCC Administrator1-0/+20
2020-12-21libstdc++: Disable floating-point std::to_chars on unsupported targetsPatrick Palka7-4/+33
This patch conditionally disables the floating-point std::to_chars implementation on targets whose float and double aren't IEEE binary32 and binary64, until a proper fallback can be added for such targets. This fixes a bootstrap failure on non-IEEE-754 FP targets such as vax-netbsdelf. The new preprocessor tests in c++config that detect the binary32 and binary64 formats were copied from gcc/testsuite/gcc.dg/float-exact-1.c. libstdc++-v3/ChangeLog: * include/bits/c++config (_GLIBCXX_FLOAT_IS_IEEE_BINARY_32): Define this macro. (_GLIBCXX_DOUBLE_IS_IEEE_BINARY_64): Likewise. * include/std/charconv (to_chars): Use these macros to conditionally hide the overloads for floating-point types. * src/c++17/floating_to_chars.cc: Use the macros to conditionally disable this file. (floating_type_traits<float>): Remove redundant static assert. (floating_type_traits<double>): Likewise. * testsuite/20_util/to_chars/double.cc: Run this test only on ieee-floats effective targets. * testsuite/20_util/to_chars/float.cc: Likewise. * testsuite/20_util/to_chars/long_double.cc: Likewise. * testsuite/lib/libstdc++.exp (check_effective_target_ieee-floats): Define new proc for detecting whether float and double have the IEEE binary32 and binary64 formats.
2020-12-21Daily bump.GCC Administrator1-0/+4
2020-12-20libstdc++: Fix indentation in <semaphore>Jonathan Wakely1-1/+2
libstdc++-v3/ChangeLog: * include/std/semaphore: Fix indentation.
2020-12-19Daily bump.GCC Administrator1-0/+64
2020-12-18libstdc++: Fix mistake in PR98374 change [PR98377]Patrick Palka1-1/+1
The #ifdef RADIXCHAR directive should be moved one line up so that it also guards the outer if statement, or else when RADIXCHAR is not defined the outer if statement will end up nonsensically guarding the declaration of output_length_upper_bound a few lines below it. libstdc++-v3/ChangeLog: PR libstdc++/98377 * src/c++17/floating_to_chars.cc (__floating_to_chars_precision): Fix mistake.
2020-12-18libstdc++: Fix build failure on AArch64 ILP32 [PR98370]Patrick Palka1-1/+1
This should fix a build failure on AArch64 ILP32 due to int32_t mapping to long int instead of int on this platform, which causes type deduction to fail in the below call to std::max as reported in the PR. libstdc++-v3/ChangeLog: PR libstdc++/98370 * src/c++17/floating_to_chars.cc (__floating_to_chars_shortest): Provide explicit template arguments to the call to std::max.
2020-12-18libstdc++: Fix build failure due to missing <langinfo.h> [PR98374]Patrick Palka1-1/+5
This should fix a build failure on Windows which lacks <langinfo.h>, from which we use nl_langinfo() to obtain the radix character of the current locale. (We can't use the more portable localeconv() from <clocale> to obtain the radix character of the current locale here because it's not thread-safe, unfortunately.) This change means that on Windows and other such platforms, we'll just always assume the radix character used by printf is '.' when formatting a long double through it. libstdc++-v3/ChangeLog: PR libstdc++/98374 * src/c++17/floating_to_chars.cc: Guard include of <langinfo.h> with __has_include. (__floating_to_chars_precision) [!defined(RADIXCHAR)]: Don't attempt to obtain the radix character of the current locale, just assume it's '.'.
2020-12-18libstdc++: Check FE_TONEAREST is defined before using itPatrick Palka2-6/+6
We need to test that FE_TONEAREST is defined before we may use it along with fegetround/fesetround to adjust the floating-point rounding mode. This fixes a build failure with older versions of newlib. libstdc++-v3/ChangeLog: * src/c++17/floating_from_chars.cc (from_chars_impl) [!defined(FE_TONEAREST)]: Don't adjust the rounding mode. * src/c++17/floating_to_chars.cc (__floating_to_chars_precision): Likewise.
2020-12-17libstdc++: Import MSVC floating-point std::to_chars testcasesPatrick Palka2-0/+61142
The testcases are imported almost verbatim, with the only change being to the -double_nan and -float_nan testcases. We expect these values to be formatted as "-nan" instead of "-nan(ind)". libstdc++-v3/ChangeLog: * testsuite/20_util/to_chars/double.cc: New test, consisting of testcases imported from the MSVC STL testsuite. * testsuite/20_util/to_chars/float.cc: Likewise.
2020-12-17libstdc++: Add floating-point std::to_chars implementationPatrick Palka6-1/+1796
This implements the floating-point std::to_chars overloads for float, double and long double. We use the Ryu library to compute the shortest round-trippable fixed and scientific forms for float, double and long double. We also use Ryu for performing explicit-precision fixed and scientific formatting for float and double. For explicit-precision formatting for long double we fall back to using printf. Hexadecimal formatting for float, double and long double is implemented from scratch. The supported long double binary formats are binary64, binary80 (x86 80-bit extended precision), binary128 and ibm128. Much of the complexity of the implementation is in computing the exact output length before handing it off to Ryu (which doesn't do bounds checking). In some cases it's hard to compute the output length beforehand, so in these cases we instead compute an upper bound on the output length and use a sufficiently-sized intermediate buffer only if necessary. Another source of complexity is in the general-with-precision formatting mode, where we need to do zero-trimming of the string returned by Ryu, and where we also take care to avoid having to format the number through Ryu a second time when the general formatting mode resolves to fixed (which we determine by doing a scientific formatting first and inspecting the scientific exponent). We avoid going through Ryu twice by instead transforming the scientific form to the corresponding fixed form via in-place string manipulation. This implementation is non-conforming in a couple of ways: 1. For the shortest hexadecimal formatting, we currently follow the Microsoft implementation's decision to be consistent with the output of printf's '%a' specifier at the expense of sometimes not printing the shortest representation. For example, the shortest hex form for the number 1.08p+0 is 2.1p-1, but we output the former instead of the latter, as does printf. 2. The Ryu routine generic_binary_to_decimal that we use for performing shortest formatting for large floating point types is implemented using the __int128 type, but some targets with a large long double type lack __int128 (e.g. i686), so we can't perform shortest formatting of long double on such targets through Ryu. As a temporary stopgap this patch makes the long double to_chars overloads just dispatch to the double overloads on these targets, which means we lose precision in the output. (We could potentially fix this by writing a specialized version of Ryu's generic_binary_to_decimal routine that uses uint64_t instead of __int128.) [Though I wonder if there's a better way to work around the lack of __int128 on i686 specifically?] 3. Our shortest formatting for __ibm128 doesn't guarantee the round-trip property if the difference between the high- and low-order exponent is large. This is because we treat __ibm128 as if it has a contiguous 105-bit mantissa by merging the mantissas of the high- and low-order parts (using code extracted from glibc), so we potentially lose precision from the low-order part. This seems to be consistent with how glibc printf formats __ibm128. libstdc++-v3/ChangeLog: * config/abi/pre/gnu.ver: Add new exports. * include/std/charconv (to_chars): Declare the floating-point overloads for float, double and long double. * src/c++17/Makefile.am (sources): Add floating_to_chars.cc. * src/c++17/Makefile.in: Regenerate. * src/c++17/floating_to_chars.cc: New file. (to_chars): Define for float, double and long double. * testsuite/20_util/to_chars/long_double.cc: New test.
2020-12-17libstdc++: Apply modifications to our local copy of RyuPatrick Palka8-236/+45
This performs the following modifications to our local copy of Ryu in order to make it more readily usable for our std::to_chars implementation: * Remove all #includes * Remove copy_special_str routines * Adjust the exponent formatting to match printf * Remove some functions we're not going to use * Add an out-parameter to d2exp_buffered_n for the scientific exponent * Store the sign bit inside struct floating_decimal_[32|64] * Rename [df]2s_buffered_n and change their return type * Make generic_binary_to_decimal take the bit representation in parts libstdc++-v3/ChangeLog: * src/c++17/ryu/common.h, src/c++17/ryu/d2fixed.c, src/c++17/ryu/d2fixed_full_table.h, src/c++17/ryu/d2s.c, src/c++17/ryu/d2s_intrinsics.h, src/c++17/ryu/f2s.c, src/c++17/ryu/f2s_intrinsics.h, src/c++17/ryu/generic_128.c: Apply local modifications.
2020-12-17libstdc++: Import parts of the Ryu libraryPatrick Palka13-0/+8024
This imports the source files from the Ryu library that define d2s_buffered_n, f2s_buffered_n, d2fixed_buffered_n, d2exp_buffered_n and generic_binary_to_decimal, which we're going to use as the base of our std::to_chars implementation. libstdc++-v3/ChangeLog: * src/c++17/ryu/MERGE: New file. * src/c++17/ryu/common.h, src/c++17/ryu/d2fixed.c, src/c++17/ryu/d2fixed_full_table.h, src/c++17/ryu/d2s.c, src/c++17/ryu/d2s_full_table.h, src/c++17/ryu/d2s_intrinsics.h, src/c++17/ryu/digit_table.h, src/c++17/ryu/f2s.c, src/c++17/ryu/f2s_intrinsics.h, src/c++17/ryu/generic_128.c, src/c++17/ryu/generic_128.h, src/c++17/ryu/ryu_generic_128.h: Import these files from the Ryu library.
2020-12-18Daily bump.GCC Administrator1-0/+33
2020-12-17libstdc++: Test errno macros directly for all targets [PR 93151]Jonathan Wakely3-39/+39
This applies the same changes to the djgpp and mingw versions of error_constants.h as r11-6137 did for the generic version. All of these constants are defined as macros by <errno.h> on these targets, so we can just test the macro directly instead of checking for it at configure time. libstdc++-v3/ChangeLog: * config/os/djgpp/error_constants.h: Test POSIX errno macros directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros. * config/os/mingw32-w64/error_constants.h: Likewise. * config/os/mingw32/error_constants.h: Likewise.
2020-12-17libstdc++: Fix condition for gthreads-timed effective-targetJonathan Wakely1-1/+1
The refactoring in r11-5500 altered the condition for the gthreads-timed test from #if to #ifdef. For some reason that macro is always defined, rather than being defined to 1 or undefined like most of our autoconf macros. That means the test always passes now, even for targets where the macro is defined to 0 (specifically, Darwin). That causes some tests to FAIL when they should have been UNSUPPORTED. This restores the previous behaviour. libstdc++-v3/ChangeLog: * testsuite/lib/libstdc++.exp (check_v3_target_gthreads_timed): Fix condition for _GTHREAD_USE_MUTEX_TIMEDLOCK test.
2020-12-17libstdc++: Fix -Wunused warningJonathan Wakely1-1/+2
As noted in PR 66146 comment 35, there is a new warning in the new std::call_once implementation. libstdc++-v3/ChangeLog: * src/c++11/mutex.cc (std::once_flag::_M_finish): Add maybe_unused attribute to variable used in assertion.
2020-12-17libstdc++: Fix preprocessor condition [PR 98344]Jonathan Wakely1-1/+1
libstdc++-v3/ChangeLog: PR libstdc++/98344 * include/bits/semaphore_base.h: Fix preprocessor condition.
2020-12-17libstdc++: Move std::hash<std::thread::id> to <bits/std_thread.h>Jonathan Wakely2-12/+12
This makes the hash function available without including the whole of <thread>, which is needed for <barrier>. libstdc++-v3/ChangeLog: * include/bits/std_thread.h (hash<thread::id>): Move here, from ... * include/std/thread (hash<thread::id>): ... here.
2020-12-17libstdc++: Regenerate autoconf filesJonathan Wakely2-688/+0
I forgot to regenerate these files in r11-6137. libstdc++-v3/ChangeLog: * config.h.in: Regenerate. * configure: Regenerate.
2020-12-17Daily bump.GCC Administrator1-0/+134
2020-12-16libstdc++: Add C++ runtime support for new 128-bit long double formatJonathan Wakely44-311/+1380
This adds support for the new __ieee128 long double format on powerpc64le targets. Most of the complexity comes from wanting a single libstdc++.so library that contains the symbols needed by code compiled with both -mabi=ibmlongdouble and -mabi=ieeelongdouble (and not forgetting -mlong-double-64 as well!) In a few places this just requires an extra overload, for example std::from_chars has to be overloaded for both forms of long double. That can be done in a single translation unit that defines overloads for 'long double' and also '__ieee128', so that user code including <charconv> will be able to link to a definition for either type of long double. Those are the easy cases. The difficult parts are (as for the std::string ABI transition) the I/O and locale facets. In order to be able to write either form of long double to an ostream such as std::cout we need the locale to contain a std::num_put facet that can handle both forms. The same approach is taken as was already done for supporting 64-bit long double and 128-bit long double: adding extra overloads of do_put to the facet class. On targets where the new long double code is enabled, the facets that are registered in the locale at program startup have additional overloads so that they can work with any long double type. Where this fails to work is if user code installs its own facet, which will probably not have the additional overloads and so will only be able to output one or the other type. In practice the number of users expecting to be able to use their own locale facets in code using a mix of -mabi=ibmlongdouble and -mabi=ieeelongdouble is probably close to zero. libstdc++-v3/ChangeLog: * Makefile.in: Regenerate. * config.h.in: Regenerate. * config/abi/pre/gnu.ver: Make patterns less greedy. * config/os/gnu-linux/ldbl-ieee128-extra.ver: New file with patterns for IEEE128 long double symbols. * configure: Regenerate. * configure.ac: Enable alternative 128-bit long double format on powerpc64*-*-linux*. * doc/Makefile.in: Regenerate. * fragment.am: Regenerate. * include/Makefile.am: Set _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT. * include/Makefile.in: Regenerate. * include/bits/c++config: Define inline namespace for new long double symbols. Don't define _GLIBCXX_USE_FLOAT128 when it's the same type as long double. * include/bits/locale_classes.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (locale::_Impl::_M_init_extra_ldbl128): Declare new member function. * include/bits/locale_facets.h (_GLIBCXX_NUM_FACETS): Simplify by only counting narrow character facets. (_GLIBCXX_NUM_CXX11_FACETS): Likewise. (_GLIBCXX_NUM_LBDL_ALT128_FACETS): New. [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (num_get::__do_get): Define vtable placeholder for __ibm128 long double type. [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (num_get::__do_get): Declare vtable placeholder for __ibm128 long double type. [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (num_put::__do_put): Likewise. * include/bits/locale_facets.tcc [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (num_get::__do_get, num_put::__do_put): Define. * include/bits/locale_facets_nonio.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (money_get::__do_get): Declare vtable placeholder for __ibm128 long double type. [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (money_put::__do_put): Likewise. * include/bits/locale_facets_nonio.tcc [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__] (money_get::__do_get, money_put::__do_put): Define. * include/ext/numeric_traits.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (__numeric_traits<__ibm128>, __numeric_traits<__ieee128>): Define. * libsupc++/Makefile.in: Regenerate. * po/Makefile.in: Regenerate. * python/Makefile.in: Regenerate. * src/Makefile.am: Add compatibility-ldbl-alt128.cc and compatibility-ldbl-alt128-cxx11.cc sources and recipes for objects. * src/Makefile.in: Regenerate. * src/c++11/Makefile.in: Regenerate. * src/c++11/compatibility-ldbl-alt128-cxx11.cc: New file defining symbols using the old 128-bit long double format, for the cxx11 ABI. * src/c++11/compatibility-ldbl-alt128.cc: Likewise, for the gcc4-compatible ABI. * src/c++11/compatibility-ldbl-facets-aliases.h: New header for long double compat aliases. * src/c++11/cow-locale_init.cc: Add comment. * src/c++11/cxx11-locale-inst.cc: Define C and C_is_char unconditionally. * src/c++11/cxx11-wlocale-inst.cc: Add sanity check. Include locale-inst.cc directly, not via cxx11-locale-inst.cc. * src/c++11/locale-inst-monetary.h: New header for monetary category instantiations. * src/c++11/locale-inst-numeric.h: New header for numeric category instantiations. * src/c++11/locale-inst.cc: Include new headers for monetary, numeric, and long double definitions. * src/c++11/wlocale-inst.cc: Remove long double compat aliases that are defined in new header now. * src/c++17/Makefile.am: Use -mabi=ibmlongdouble for floating_from_chars.cc. * src/c++17/Makefile.in: Regenerate. * src/c++17/floating_from_chars.cc (from_chars_impl): Add if-constexpr branch for __ieee128. (from_chars): Overload for __ieee128. * src/c++20/Makefile.in: Regenerate. * src/c++98/Makefile.in: Regenerate. * src/c++98/locale_init.cc (num_facets): Adjust calculation. (locale::_Impl::_Impl(size_t)): Call _M_init_extra_ldbl128. * src/c++98/localename.cc (num_facets): Adjust calculation. (locale::_Impl::_Impl(const char*, size_t)): Call _M_init_extra_ldbl128. * src/filesystem/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. * testsuite/util/testsuite_abi.cc: Add new symbol versions. Allow new symbols to be added to GLIBCXX_IEEE128_3.4.29 and CXXABI_IEEE128_1.3.13 too. * testsuite/26_numerics/complex/abi_tag.cc: Add u9__ieee128 to regex matching expected symbols.
2020-12-16libstdc++: Simplify built-in detection in <utility>Jonathan Wakely1-11/+5
Now that GCC supports __has_builtin there is no need to test whether it's defined, we can just use it unconditionally. libstdc++-v3/ChangeLog: * include/std/utility: Use __has_builtin without checking if it's defined.
2020-12-16libstdc++: Warn if __STRICT_ANSI has been undefinedJonathan Wakely1-0/+9
Recent changes to use __int128 as an integer-like type in <ranges> and to optimize std::uniform_int_distribution mean that the library relies on __int128 more heavily than in the past. The library expects that if __int128 is supported then either __GLIBCXX_TYPE_INT_N_0 is defined (and we treat is like the standard integer types), or __STRICT_ANSI__ is defined (and we need to add special handling for __int128 as a non-standard integer type). If users compile with -std=c++NN -U__STRICT_ANSI__ then it puts the library into a broken and inconsistent state, where the compiler doesn't define the __GLIBCXX_TYPE_INT_N_0 macro, but the library thinks it doesn't need special handling for __int128. What the user should do is compile with -std=gnu++NN instead. This adds a warning if it appears that __int128 is supported but neither __GLIBCXX_TYPE_INT_N_0 nor __STRICT_ANSI__ is defined. libstdc++-v3/ChangeLog: * include/bits/c++config: Warn if __STRICT_ANSI__ state is inconsistent with __GLIBCXX_TYPE_INT_N_0.
2020-12-16libstdc++: Only use __builtin_sprintf if supported [PR 96083]Jonathan Wakely1-0/+16
Clang doesn't support __builtin_sprintf, so use std::sprintf instead. libstdc++-v3/ChangeLog: PR libstdc++/96083 * include/ext/throw_allocator.h: Use __has_builtin to check for __builtin_sprintf support, and use std::sprtinf if necessary.
2020-12-16libstdc++: Fix errors from Library Fundamentals TS headers in C++11 [PR 98319]Jonathan Wakely4-60/+45
Currently the <experimental/random>, <experimental/source_location> and <experimental/utility> headers can be included in C++98 and C++11 modes, but gives errors. With this change they can be included, but define nothing. libstdc++-v3/ChangeLog: PR libstdc++/98319 * include/experimental/random: Only define contents for C++14 and later. * include/experimental/source_location: Likewise. * include/experimental/utility: Likewise. * testsuite/experimental/feat-lib-fund.cc: Include all LFTS headers that are present. Allow test to run for all modes.
2020-12-16libstdc++: Add performance test for atomic_flag [PR 46447]Jonathan Wakely1-0/+71
This adds a test to compare the performance of std::atomic_flag with similar operations on std::atomic_uchar and std::atomic_int. libstdc++-v3/ChangeLog: PR libstdc++/46447 * testsuite/performance/29_atomics/atomic_flag.cc: New test.
2020-12-16libstdc++: Test errno macros directly, not via autoconf [PR 93151]Jonathan Wakely5-60/+53
This fixes a bug caused by a mismatch between the macros defined by <errno.h> when GCC is built and the macros defined by <errno.h> when users include <system_error>. If the user code is compiled with _XOPEN_SOURCE defined to 500 or 600, Darwin suppresses the ENOTRECOVERABLE and EOWNERDEAD macros, which are not defined by SUSv3 (aka POSIX.1-2001). Since POSIX requires the errno macros to be macros (and not variables or enumerators) we can just test for them directly using the preprocessor. That means that <system_error> will match what is actuallydefined when it's included, not what was defined when GCC was built. With that change there is no need for the GLIBCXX_CHECK_SYSTEM_ERROR configure checks and they can be removed. libstdc++-v3/ChangeLog: PR libstdc++/93151 * acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Remove. * configure.ac: Regenerate. * config/os/generic/error_constants.h: Test POSIX errno macros directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros. * testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc: Likewise. * testsuite/19_diagnostics/headers/system_error/93151.cc: New test.
2020-12-16Daily bump.GCC Administrator1-0/+65
2020-12-15libstdc++: Remove init_priority attribute for Init object [PR 98108]Jonathan Wakely1-9/+1
This reverts commit cf4ed3b41594b6935a337fe0aaf8149eadf88751. libstdc++-v3/ChangeLog: PR libstdc++/98108 * include/std/iostream (__ioinit): Remove init_priority attribute.
2020-12-15libstdc++: Support libc with stdio-only I/O in libstdc++Keith Packard4-17/+69
The current libstdc++ basic_file_stdio.cc code assumes a POSIX API underneath the stdio implementation provided by the host libc. This means that the host must provide a fairly broad POSIX file API, including read, write, open, close, lseek and ioctl. This patch changes basic_file_stdio.cc to only use basic ANSI-C stdio functions, allowing it to be used with libc implementations like picolibc which may not have a POSIX operating system underneath. This is enabled by a new --enable-cstdio=stdio_pure configure option. Aided-by: Jonathan Wakely <jwakely@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com> libstdc++-v3/ChangeLog: * acinclude.m4 (GLIBCXX_ENABLE_CSTDIO): Allow "stdio_pure" option and define _GLIBCXX_USE_PURE_STDIO when it is used. Also add "stdio_posix" option as an alias for "stdio". * config/io/basic_file_stdio.cc [_GLIBCXX_USE_PURE_STDIO]: Only use defined stdio entry points for all I/O operations, without direct calls to underlying POSIX functions. * config.h.in: Regenerate. * configure: Regenerate.
2020-12-15libstdc++: Fix the test for rvalue stream extractionVille Voutilainen1-0/+2
libstdc++-v3/ChangeLog: * testsuite/27_io/rvalue_streams.cc: Run the extraction to a char* for C++17 and lower only.
2020-12-15libstdc++: Increase timeout for tests in debug modeJonathan Wakely4-2/+9
These tests FAIL when testing debug mode with a small tool_timeout value. Give them a longer relative timeout. libstdc++-v3/ChangeLog: * testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc: Add dg-timeout-factor directive. * testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc: Increase timeout factor from 2.0 to 3.0. * testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc: Likewise. * testsuite/lib/libstdc++.exp (check_effective_target_debug-mode): Define "debug-mode" as an effective-target keyword.
2020-12-15libstdc++: Do not define constexpr assertions for C++11Jonathan Wakely1-1/+1
There's no point even checking is_constant_evaluated() in C++11 mode, because the 'if' statement used for the assertion wouldn't be valid in a C++11 constexpr function anyway. libstdc++-v3/ChangeLog: * include/bits/c++config (__glibcxx_assert_1): Define as empty for C++11.
2020-12-15libstdc++: Fix required locales of a testcaseMarius Hillenbrand1-1/+3
The testsuite for libstdc++ aims to skips test cases for which not all required locales are installed. This patch adds missing directives about required locales to one test case to avoid false positive test failures on systems that have a partial set of locales installed. Verified by test suite runs that this patch changes the test case from FAIL to UNSUPPORTED when not all required locales are available and that the test case will run and PASS when the necessary locales have been added. libstdc++-v3/ChangeLog: * testsuite/22_locale/locale/cons/5.cc: Add missing directives for required locales.
2020-12-15libstdc++: Remove workaround for PR c++/78173Jonathan Wakely1-4/+1
Now that the G++ bug is fixed we no longer need to protect this partial specialization from complaining about subtracting void pointers. libstdc++-v3/ChangeLog: * include/bits/iterator_concepts.h (incrementable_traits<Tp>): Remove workaround for PR c++/78173.