diff options
Diffstat (limited to 'libstdc++-v3')
74 files changed, 2267 insertions, 397 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 59c7843..461cc8a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,338 @@ +2022-04-27 Jakub Jelinek <jakub@redhat.com> + + * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update. + * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update. + * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update. + * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update. + * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update. + * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update. + * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update. + * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update. + +2022-04-27 Jonathan Wakely <jwakely@redhat.com> + + * python/libstdcxx/v6/printers.py (SharedPointerPrinter): Add + support for atomic<shared_ptr<T>> and atomic<weak_ptr<T>>. + (StdAtomicPrinter): New printer. + (build_libstdcxx_dictionary): Register new printer. + * testsuite/libstdc++-prettyprinters/cxx11.cc: Test std::atomic. + * testsuite/libstdc++-prettyprinters/cxx20.cc: Test atomic smart + pointers. + +2022-04-26 Jonathan Wakely <jwakely@redhat.com> + + * include/bits/shared_ptr_atomic.h (atomic<shared_ptr>): Add + constructor for constant initialization from nullptr_t. + * testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc: + Check for new constructor. + +2022-04-26 Jonathan Wakely <jwakely@redhat.com> + + * include/bits/fs_path.h (hash<filesystem::path>): Define. + * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: + Check std::hash specialization. + +2022-04-25 Jonathan Wakely <jwakely@redhat.com> + + * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define + conditionally. + * include/bits/unique_ptr.h (__cpp_lib_constexpr_memory): + Define for C++23. + (default_delete, default_delete<T[]>, __uniq_ptr_impl) + (unique_ptr, unique_ptr<T[], D>): Add constexpr to all member + functions. + * include/std/version (__cpp_lib_constexpr_memory): Define new + value for C++23. + * testsuite/20_util/unique_ptr/assign/constexpr.cc: New test. + * testsuite/20_util/unique_ptr/comparison/constexpr.cc: New test. + * testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc: New test. + * testsuite/20_util/unique_ptr/creation/constexpr.cc: New test. + * testsuite/20_util/unique_ptr/modifiers/constexpr.cc: New test. + * testsuite/20_util/unique_ptr/specialized_algorithms/constexpr.cc: + New test. + +2022-04-25 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/105375 + * include/std/future (packaged_task): Add deduction guides. + * testsuite/30_threads/packaged_task/cons/deduction.cc: New test. + +2022-04-25 Philipp Fent <fent@in.tum.de> + + * python/libstdcxx/v6/printers.py (StdSpanPrinter._iterator): + Rename as iterator. + (StdInitializerListPrinter): Define new printer. + (build_libstdcxx_dictionary): Register new printer. + * testsuite/libstdc++-prettyprinters/cxx11.cc: Check printer for + initializer_list. + +2022-04-22 Thomas W Rodgers <trodgers@redhat.com> + + PR libstdc++/102994 + * include/bits/atomic_base.h (atomic_flag::notify_one, + notify_all): Remove const qualification. + (__atomic_base::notify_one, notify_all): Likewise. + * include/std/atomic (atomic<bool>::notify_one, notify_all): + Likewise. + (atomic::notify_one, notify_all): Likewise. + (atomic<T*>::notify_one, notify_all): Likewise. + (atomic_notify_one, atomic_notify_all): Likewise. + * testsuite/29_atomics/atomic/wait_notify/102994.cc: Adjust test + to account for change in notify_one/notify_all signature. + +2022-04-21 Patrick Palka <ppalka@redhat.com> + + * include/std/charconv (__from_chars_alnum_to_val_table): + Simplify initialization of __lower/__upper_letters. + (__from_chars_alnum_to_val): Default the template parameter to + false. + * src/c++17/floating_from_chars.cc (starts_with_ci): Don't + assume the uppercase and lowercase letters are contiguous. + (__floating_from_chars_hex): Likewise. + +2022-04-21 Patrick Palka <ppalka@redhat.com> + + PR c++/105297 + PR c++/105322 + * include/std/charconv (__from_chars_alnum_to_val): Make + initializer for __table dependent in an artificial way. + +2022-04-21 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/105324 + * src/c++17/floating_from_chars.cc (buffer_resource::do_allocate): + Remove assertion. + * testsuite/20_util/from_chars/pr105324.cc: New test. + +2022-04-20 Jonathan Wakely <jwakely@redhat.com> + + * testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc: + Check correct feature test macro. + +2022-04-20 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/93602 + * doc/xml/manual/prerequisites.xml: Document libiconv + workarounds. + * doc/html/manual/setup.html: Regenerate. + * src/Makefile.am (CXXLINK): Add $(LTLIBICONV). + * src/Makefile.in: Regenerate. + +2022-04-19 Patrick Palka <ppalka@redhat.com> + + * src/c++17/floating_to_chars.cc (_GLIBCXX_ASSERTIONS): Don't + define. + (__floating_to_chars_shortest): Add __builtin_unreachable calls to + squelch false-positive -Wmaybe-uninitialized and -Wreturn-type + warnings. + (__floating_to_chars_precision): Likewise. + +2022-04-19 Philipp Fent <fent@in.tum.de> + + * python/libstdcxx/v6/printers.py (StdSpanPrinter): Define. + * testsuite/libstdc++-prettyprinters/cxx20.cc: Test it. + +2022-04-19 Jonathan Wakely <jwakely@redhat.com> + + * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Fix shell operators. + * configure: Regenerate. + +2022-04-18 Patrick Palka <ppalka@redhat.com> + + * include/std/charconv (__from_chars_pow2_base): Manually + unroll the first iteration of the main loop and simplify + accordingly. + +2022-04-15 Patrick Palka <ppalka@redhat.com> + + PR libstdc++/104858 + * include/bits/ranges_algo.h (__minmax_fn): Avoid dereferencing + __first twice at the start. + * testsuite/25_algorithms/minmax/constrained.cc (test06): New test. + +2022-04-15 Patrick Palka <ppalka@redhat.com> + + * include/std/charconv (__from_chars_alnum_to_val_table): Define. + (__from_chars_alnum_to_val): Define. + (__from_chars_binary): Rename to ... + (__from_chars_pow2_base): ... this. Generalize to handle any + power-of-two base using __from_chars_alnum_to_val. + (__from_chars_digit): Optimize digit recognition to a single + test instead of two tests. Use [[__unlikely___]] attribute. + (__from_chars_alpha_to_num): Remove. + (__from_chars_alnum): Use __from_chars_alnum_to_val. Use a + nested loop for the overflow case. Maintain a lower bound + on the number of available bits in the result and use it to + omit the overflow check. + (from_chars): Adjust appropriately. + * src/c++17/floating_from_chars.cc (ascii_to_hexit): Remove. + (__floating_from_chars_hex): Use __from_chars_alnum_to_val + to recognize a hex digit instead. + +2022-04-14 Palmer Dabbelt <palmer@rivosinc.com> + + * acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY): Force auto to mutex + for RISC-V. + * configure: Regenerate. + +2022-04-14 Jonathan Wakely <jwakely@redhat.com> + + * doc/xml/manual/intro.xml: Fix comment. + +2022-04-14 Jonathan Wakely <jwakely@redhat.com> + + * include/precompiled/stdc++.h: Include <stacktrace> and + <stdatomic.h> for C++23. + +2022-04-14 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/105269 + * include/bits/stl_vector.h (__cpp_lib_constexpr_vector): + Define. + * include/c_compatibility/stdatomic.h (__cpp_lib_stdatomic_h): + Define. + * include/std/optional (__cpp_lib_optional): Define new value + for C++23. + (__cpp_lib_monadic_optional): Remove. + * include/std/version (__cpp_lib_constexpr_vector): Define. + (__cpp_lib_stdatomic_h): Define. + (__cpp_lib_optional): Define new value for C++23. + (__cpp_lib_monadic_optional): Remove. + * testsuite/20_util/optional/monadic/and_then.cc: Adjust. + * testsuite/20_util/optional/requirements.cc: Adjust for C++23. + * testsuite/20_util/optional/version.cc: Likewise. + * testsuite/23_containers/vector/cons/constexpr.cc: Check + feature test macro. + * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: + Likewise. + * testsuite/20_util/optional/monadic/version.cc: Removed. + * testsuite/23_containers/vector/requirements/version.cc: New test. + * testsuite/29_atomics/headers/stdatomic.h/version.cc: New test. + +2022-04-12 Jonathan Wakely <jwakely@redhat.com> + + * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Check for mmap. + * config.h.in: Regenerate. + * configure: Regenerate. + +2022-04-12 Jonathan Wakely <jwakely@redhat.com> + + * include/std/stacktrace (basic_stacktrace::current): Reallocate + a smaller container if the unused capacity is larger than the + used size. + +2022-04-12 Jonathan Wakely <jwakely@redhat.com> + + * include/std/stacktrace (basic_stacktrace): Use _Impl::_M_clone + or _Impl::_M_assign to initialize elements in allocated storage. + (basic_stacktrace::_M_clear()): Use _Impl::_M_resize instead of + _Impl::_M_destroy. + (basic_stacktrace::_Impl::_M_destroy()): Replace with ... + (basic_stacktrace::_Impl::_M_resize(size_type, allocator&)): New + function. + (basic_stacktrace::_Impl::_M_push_back): Use _M_xclone. Construct + new element using allocator. + (basic_stacktrace::_Impl::_M_clone): New function. + (basic_stacktrace::_Impl::_M_xclone): New function. + (basic_stacktrace::_Impl::_M_assign): New function. + +2022-04-12 Jonathan Wakely <jwakely@redhat.com> + + * include/std/stacktrace (basic_stacktrace::_Impl::_M_allocate): + Use nothrow new instead of try block for std::allocator. + (basic_stacktrace::_Impl::_M_deallocate): Use delete for + std::allocator. + +2022-04-12 Jonathan Wakely <jwakely@redhat.com> + + * include/std/stacktrace (basic_stacktrace::current): Replace + calls to _M_reserve and _S_curr_cb with call to _M_prepare. + Check return value of backtrace_simple when max depth given. + (basic_stacktrace::_M_reserve): Remove. + (basic_stacktrace::_S_curr_cb): Remove. + (basic_stacktrace::_M_prepare(size_type)): New function to + reserve initial capacity and return callback. + (basic_stacktrace::_Impl::_M_allocate): Remove check for 0 < n + and remove redundant zeroing of _M_frames and _M_capacity. + (basic_stacktrace::_Impl::_M_push_back): Add [[unlikely]] + attribute. Assign _Impl instead of swapping. + * testsuite/19_diagnostics/stacktrace/current.cc: New test. + +2022-04-11 Jonathan Wakely <jwakely@redhat.com> + + * include/std/stacktrace (basic_stacktrace::_Impl::_M_allocate): + Change [[unlikely]] attribute to [[likely]]. + +2022-04-11 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/105031 + * include/std/stacktrace (basic_stacktrace::basic_stacktrace): + Fix allocator usage in constructors. + (basic_stacktrace::operator=(const basic_stacktrace&)): Do not + try to reallocate using const allocator. + (basic_stacktrace::operator=(basic_stacktrace&&)): Fix + if-constexpr with non-constant condition. Do not allocate new + storage if allocator propagates. Do not set _M_size if + allocation fails. + (basic_stacktrace::swap(basic_stacktrace&)): Fix typo. Add + assertion that non-propagating allocators are equal. + * testsuite/19_diagnostics/stacktrace/stacktrace.cc: New test. + +2022-04-11 Jonathan Wakely <jwakely@redhat.com> + + * include/std/stacktrace (basic_stacktrace::current): Duplicate + implementation into each overload. Add noinline attribute and + skip current frame. + (basic_stacktrace::max_size()): Call _Impl::_S_max_size. + (basic_stacktrace::_S_curr_cb()): New function defining lambda. + (basic_stacktrace::_Impl::_S_max_size): New function defining + maximum size in terms of allocator and size_type. + (basic_stacktrace::_Impl::_M_allocate): Check against + max_size(). + * testsuite/19_diagnostics/stacktrace/entry.cc: Call function + for non-constexpr checks. Check line number is correct. + +2022-04-11 Jonathan Wakely <jwakely@redhat.com> + + * testsuite/20_util/stacktrace/entry.cc: Moved to... + * testsuite/19_diagnostics/stacktrace/entry.cc: ...here. + * testsuite/20_util/stacktrace/synopsis.cc: Moved to... + * testsuite/19_diagnostics/stacktrace/synopsis.cc: ...here. + * testsuite/20_util/stacktrace/version.cc: Moved to... + * testsuite/19_diagnostics/stacktrace/version.cc: ...here. + +2022-04-11 Jonathan Wakely <jwakely@redhat.com> + + * include/experimental/bits/fs_path.h (path): Define special + members after path::_Cmpt is complete. + +2022-04-08 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/105153 + * include/std/expected + (expected<void,E>::expected(expected<U,G>&&)): Fix constraints. + * testsuite/20_util/expected/cons.cc: Check constructor. + +2022-04-08 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/105154 + * include/std/expected (expected<void, E>::swap): Set + _M_has_value to false for objects that previously had a value. + * testsuite/20_util/expected/swap.cc: Fix test to check void + specialization. + +2022-04-08 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/105146 + * include/std/expected (bad_expected_access): Move constructor + parameter. + * testsuite/20_util/expected/bad.cc: New test. + +2022-04-07 Hans-Peter Nilsson <hp@axis.com> + + * testsuite/20_util/expected/requirements.cc: Correct minimal-size + test. + 2022-04-02 Jakub Jelinek <jakub@redhat.com> PR libstdc++/105128 diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index f53461c..138bd58d 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -3612,6 +3612,9 @@ AC_DEFUN([GLIBCXX_ENABLE_LOCK_POLICY], [ dnl Why don't we check 8-byte CAS for sparc64, where _Atomic_word is long?! dnl New targets should only check for CAS for the _Atomic_word type. AC_TRY_COMPILE([ + #if defined __riscv + # error "Defaulting to mutex-based locks for ABI compatibility" + #endif #if ! defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 # error "No 2-byte compare-and-swap" #elif ! defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 @@ -5003,18 +5006,41 @@ elf64) elfsize=64 ;; esac BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DBACKTRACE_ELF_SIZE=$elfsize" - ALLOC_FILE=alloc.lo - AC_SUBST(ALLOC_FILE) - VIEW_FILE=read.lo - AC_SUBST(VIEW_FILE) - AC_MSG_CHECKING([whether to build libbacktrace support]) - if test "$enable_libstdcxx_backtrace" == "auto"; then + if test "$enable_libstdcxx_backtrace" = "auto"; then enable_libstdcxx_backtrace=no fi - if test "$enable_libstdcxx_backtrace" == "yes"; then + if test "$enable_libstdcxx_backtrace" = "yes"; then BACKTRACE_SUPPORTED=1 - BACKTRACE_USES_MALLOC=1 + + AC_CHECK_HEADERS(sys/mman.h) + case "${host}" in + *-*-msdosdjgpp) # DJGPP has sys/man.h, but no mmap + have_mmap=no ;; + *-*-*) + have_mmap="$ac_cv_header_sys_mman_h" ;; + esac + + if test "$have_mmap" = "no"; then + VIEW_FILE=read.lo + ALLOC_FILE=alloc.lo + else + VIEW_FILE=mmapio.lo + AC_PREPROC_IFELSE([AC_LANG_SOURCE([ + #include <sys/mman.h> + #if !defined(MAP_ANONYMOUS) && !defined(MAP_ANON) + #error no MAP_ANONYMOUS + #endif + ])], [ALLOC_FILE=mmap.lo], [ALLOC_FILE=alloc.lo]) + fi + AC_SUBST(VIEW_FILE) + AC_SUBST(ALLOC_FILE) + + BACKTRACE_USES_MALLOC=0 + if test "$ALLOC_FILE" = "alloc.lo"; then + BACKTRACE_USES_MALLOC=1 + fi + if test "$ac_has_gthreads" = "yes"; then BACKTRACE_SUPPORTS_THREADS=1 else @@ -5031,7 +5057,7 @@ BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DBACKTRACE_ELF_SIZE=$elfsize" BACKTRACE_SUPPORTS_THREADS=0 fi AC_MSG_RESULT($enable_libstdcxx_backtrace) - GLIBCXX_CONDITIONAL(ENABLE_BACKTRACE, [test "$enable_libstdcxx_backtrace" != no]) + GLIBCXX_CONDITIONAL(ENABLE_BACKTRACE, [test "$enable_libstdcxx_backtrace" = yes]) ]) # Macros from the top-level gcc directory. diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in index f6212de..f30a8c5 100644 --- a/libstdc++-v3/config.h.in +++ b/libstdc++-v3/config.h.in @@ -420,6 +420,9 @@ /* Define to 1 if you have the <sys/machine.h> header file. */ #undef HAVE_SYS_MACHINE_H +/* Define to 1 if you have the <sys/mman.h> header file. */ +#undef HAVE_SYS_MMAN_H + /* Define to 1 if you have the <sys/param.h> header file. */ #undef HAVE_SYS_PARAM_H diff --git a/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt index 898c8e1..c8ccecb 100644 --- a/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt @@ -475,6 +475,7 @@ FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPPKc@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4 @@ -485,6 +486,7 @@ FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPPKw@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4 @@ -954,6 +956,7 @@ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -973,6 +976,7 @@ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1225,6 +1229,7 @@ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_week FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -1244,6 +1249,7 @@ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_week FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -2818,6 +2824,7 @@ FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16__time_get_state17_M_finalize_stateEP2tm@@GLIBCXX_3.4.30 FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 @@ -2928,7 +2935,8 @@ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21 FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11 -FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.30 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11 @@ -4153,6 +4161,7 @@ FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11 FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 +FUNC:_ZSt21__glibcxx_assert_failPKciS0_S0_@@GLIBCXX_3.4.30 FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4 FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 @@ -4522,6 +4531,7 @@ OBJECT:0:GLIBCXX_3.4.27 OBJECT:0:GLIBCXX_3.4.28 OBJECT:0:GLIBCXX_3.4.29 OBJECT:0:GLIBCXX_3.4.3 +OBJECT:0:GLIBCXX_3.4.30 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 OBJECT:0:GLIBCXX_3.4.6 diff --git a/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt index 259cfdb..facc208 100644 --- a/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt @@ -475,6 +475,7 @@ FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPPKc@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4 @@ -485,6 +486,7 @@ FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPPKw@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4 @@ -954,6 +956,7 @@ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -973,6 +976,7 @@ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1225,6 +1229,7 @@ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_week FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -1244,6 +1249,7 @@ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_week FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -2818,6 +2824,7 @@ FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16__time_get_state17_M_finalize_stateEP2tm@@GLIBCXX_3.4.30 FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 @@ -2928,7 +2935,8 @@ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21 FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11 -FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.30 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11 @@ -4153,6 +4161,7 @@ FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11 FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 +FUNC:_ZSt21__glibcxx_assert_failPKciS0_S0_@@GLIBCXX_3.4.30 FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4 FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 @@ -4523,6 +4532,7 @@ OBJECT:0:GLIBCXX_3.4.27 OBJECT:0:GLIBCXX_3.4.28 OBJECT:0:GLIBCXX_3.4.29 OBJECT:0:GLIBCXX_3.4.3 +OBJECT:0:GLIBCXX_3.4.30 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 OBJECT:0:GLIBCXX_3.4.6 diff --git a/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt index 92cf176..0209003 100644 --- a/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt @@ -475,6 +475,7 @@ FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPPKc@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4 @@ -485,6 +486,7 @@ FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPPKw@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4 @@ -1096,6 +1098,7 @@ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1115,6 +1118,7 @@ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1367,6 +1371,7 @@ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_week FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -1386,6 +1391,7 @@ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_week FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -2968,6 +2974,7 @@ FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16__time_get_state17_M_finalize_stateEP2tm@@GLIBCXX_3.4.30 FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 @@ -3118,7 +3125,8 @@ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21 FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11 -FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.30 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11 @@ -4345,6 +4353,7 @@ FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11 FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 +FUNC:_ZSt21__glibcxx_assert_failPKciS0_S0_@@GLIBCXX_3.4.30 FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4 FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 @@ -4760,6 +4769,7 @@ OBJECT:0:GLIBCXX_3.4.27 OBJECT:0:GLIBCXX_3.4.28 OBJECT:0:GLIBCXX_3.4.29 OBJECT:0:GLIBCXX_3.4.3 +OBJECT:0:GLIBCXX_3.4.30 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 OBJECT:0:GLIBCXX_3.4.6 diff --git a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt index 92cf176..0209003 100644 --- a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt @@ -475,6 +475,7 @@ FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPPKc@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4 @@ -485,6 +486,7 @@ FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPPKw@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4 @@ -1096,6 +1098,7 @@ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1115,6 +1118,7 @@ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1367,6 +1371,7 @@ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_week FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -1386,6 +1391,7 @@ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_week FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -2968,6 +2974,7 @@ FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16__time_get_state17_M_finalize_stateEP2tm@@GLIBCXX_3.4.30 FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 @@ -3118,7 +3125,8 @@ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21 FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11 -FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.30 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11 @@ -4345,6 +4353,7 @@ FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11 FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 +FUNC:_ZSt21__glibcxx_assert_failPKciS0_S0_@@GLIBCXX_3.4.30 FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4 FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 @@ -4760,6 +4769,7 @@ OBJECT:0:GLIBCXX_3.4.27 OBJECT:0:GLIBCXX_3.4.28 OBJECT:0:GLIBCXX_3.4.29 OBJECT:0:GLIBCXX_3.4.3 +OBJECT:0:GLIBCXX_3.4.30 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 OBJECT:0:GLIBCXX_3.4.6 diff --git a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt index 941c96e..773ee73 100644 --- a/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt @@ -475,6 +475,7 @@ FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPPKc@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4 @@ -485,6 +486,7 @@ FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPPKw@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4 @@ -1226,6 +1228,7 @@ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1245,6 +1248,7 @@ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1497,6 +1501,7 @@ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_week FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -1516,6 +1521,7 @@ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_week FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -3106,6 +3112,7 @@ FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16__time_get_state17_M_finalize_stateEP2tm@@GLIBCXX_3.4.30 FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 @@ -3121,6 +3128,7 @@ FUNC:_ZNSt16invalid_argumentD2Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt16nested_exceptionD0Ev@@CXXABI_1.3.5 FUNC:_ZNSt16nested_exceptionD1Ev@@CXXABI_1.3.5 FUNC:_ZNSt16nested_exceptionD2Ev@@CXXABI_1.3.5 +FUNC:_ZNSt17__gnu_cxx_ieee12816__convert_from_vERKP15__locale_structPciPKcz@@GLIBCXX_IEEE128_3.4.30 FUNC:_ZNSt17__gnu_cxx_ieee1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@@GLIBCXX_IEEE128_3.4.29 FUNC:_ZNSt17__gnu_cxx_ieee1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@@GLIBCXX_IEEE128_3.4.29 FUNC:_ZNSt17__gnu_cxx_ieee1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCXX_IEEE128_3.4.29 @@ -3276,7 +3284,8 @@ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21 FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11 -FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.30 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11 @@ -4505,6 +4514,7 @@ FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11 FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 +FUNC:_ZSt21__glibcxx_assert_failPKciS0_S0_@@GLIBCXX_3.4.30 FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4 FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 @@ -4944,6 +4954,7 @@ OBJECT:0:GLIBCXX_3.4.27 OBJECT:0:GLIBCXX_3.4.28 OBJECT:0:GLIBCXX_3.4.29 OBJECT:0:GLIBCXX_3.4.3 +OBJECT:0:GLIBCXX_3.4.30 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 OBJECT:0:GLIBCXX_3.4.6 @@ -4951,6 +4962,7 @@ OBJECT:0:GLIBCXX_3.4.7 OBJECT:0:GLIBCXX_3.4.8 OBJECT:0:GLIBCXX_3.4.9 OBJECT:0:GLIBCXX_IEEE128_3.4.29 +OBJECT:0:GLIBCXX_IEEE128_3.4.30 OBJECT:0:GLIBCXX_LDBL_3.4 OBJECT:0:GLIBCXX_LDBL_3.4.10 OBJECT:0:GLIBCXX_LDBL_3.4.21 diff --git a/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt index ba9f8bc..7624325 100644 --- a/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt @@ -475,6 +475,7 @@ FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPPKc@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4 @@ -485,6 +486,7 @@ FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPPKw@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4 @@ -1096,6 +1098,7 @@ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1115,6 +1118,7 @@ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1367,6 +1371,7 @@ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_week FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -1386,6 +1391,7 @@ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_week FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -2968,6 +2974,7 @@ FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16__time_get_state17_M_finalize_stateEP2tm@@GLIBCXX_3.4.30 FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 @@ -3118,7 +3125,8 @@ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21 FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11 -FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.30 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11 @@ -4345,6 +4353,7 @@ FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11 FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 +FUNC:_ZSt21__glibcxx_assert_failPKciS0_S0_@@GLIBCXX_3.4.30 FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4 FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 @@ -4760,6 +4769,7 @@ OBJECT:0:GLIBCXX_3.4.27 OBJECT:0:GLIBCXX_3.4.28 OBJECT:0:GLIBCXX_3.4.29 OBJECT:0:GLIBCXX_3.4.3 +OBJECT:0:GLIBCXX_3.4.30 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 OBJECT:0:GLIBCXX_3.4.6 diff --git a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt index 259cfdb..facc208 100644 --- a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt @@ -475,6 +475,7 @@ FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPPKc@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4 @@ -485,6 +486,7 @@ FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPPKw@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4 @@ -954,6 +956,7 @@ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -973,6 +976,7 @@ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1225,6 +1229,7 @@ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_week FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -1244,6 +1249,7 @@ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_week FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -2818,6 +2824,7 @@ FUNC:_ZNSt16__numpunct_cacheIwEC2Ej@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16__time_get_state17_M_finalize_stateEP2tm@@GLIBCXX_3.4.30 FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 @@ -2928,7 +2935,8 @@ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21 FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11 -FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.30 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11 @@ -4153,6 +4161,7 @@ FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11 FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 +FUNC:_ZSt21__glibcxx_assert_failPKciS0_S0_@@GLIBCXX_3.4.30 FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4 FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 @@ -4523,6 +4532,7 @@ OBJECT:0:GLIBCXX_3.4.27 OBJECT:0:GLIBCXX_3.4.28 OBJECT:0:GLIBCXX_3.4.29 OBJECT:0:GLIBCXX_3.4.3 +OBJECT:0:GLIBCXX_3.4.30 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 OBJECT:0:GLIBCXX_3.4.6 diff --git a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt index 4cb3ae9..859a110 100644 --- a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt +++ b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt @@ -475,6 +475,7 @@ FUNC:_ZNKSt10moneypunctIwLb1EE8groupingEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIcE15_M_am_pm_formatEPPKc@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCXX_3.4 @@ -485,6 +486,7 @@ FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE8_M_am_pmEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt11__timepunctIwE15_M_am_pm_formatEPPKw@@GLIBCXX_3.4.30 FUNC:_ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@@GLIBCXX_3.4 FUNC:_ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@@GLIBCXX_3.4 @@ -954,6 +956,7 @@ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_ FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -973,6 +976,7 @@ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_ FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4.21 +FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_@@GLIBCXX_3.4.21 FUNC:_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 @@ -1225,6 +1229,7 @@ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_week FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -1244,6 +1249,7 @@ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_week FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 +FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwRSt16__time_get_state@@GLIBCXX_3.4.30 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21 FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 @@ -2818,6 +2824,7 @@ FUNC:_ZNSt16__numpunct_cacheIwEC2Em@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16__time_get_state17_M_finalize_stateEP2tm@@GLIBCXX_3.4.30 FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 @@ -2928,7 +2935,8 @@ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21 FUNC:_ZNSt18condition_variable10notify_allEv@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11 -FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.11 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@@GLIBCXX_3.4.30 +FUNC:_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11 @@ -4153,6 +4161,7 @@ FUNC:_ZSt20__throw_system_errori@@GLIBCXX_3.4.11 FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 +FUNC:_ZSt21__glibcxx_assert_failPKciS0_S0_@@GLIBCXX_3.4.30 FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4 FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 @@ -4523,6 +4532,7 @@ OBJECT:0:GLIBCXX_3.4.27 OBJECT:0:GLIBCXX_3.4.28 OBJECT:0:GLIBCXX_3.4.29 OBJECT:0:GLIBCXX_3.4.3 +OBJECT:0:GLIBCXX_3.4.30 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 OBJECT:0:GLIBCXX_3.4.6 diff --git a/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver b/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver index e9520a6..b37199e 100644 --- a/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver +++ b/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver @@ -28,7 +28,6 @@ GLIBCXX_8.0 { { std::*; std::__8::*; - std::random_device::* }; # operator new(size_t) diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index ef80912..9b94fd7 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -681,8 +681,8 @@ BACKTRACE_SUPPORTS_THREADS BACKTRACE_USES_MALLOC BACKTRACE_SUPPORTED BACKTRACE_CPPFLAGS -VIEW_FILE ALLOC_FILE +VIEW_FILE FORMAT_FILE ENABLE_FILESYSTEM_TS_FALSE ENABLE_FILESYSTEM_TS_TRUE @@ -16190,9 +16190,12 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_save_CXXFLAGS="$CXXFLAGS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ + #if defined __riscv + # error "Defaulting to mutex-based locks for ABI compatibility" + #endif #if ! defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 # error "No 2-byte compare-and-swap" #elif ! defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 @@ -16240,7 +16243,7 @@ $as_echo "mutex" >&6; } # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 16243 "configure" +#line 16246 "configure" int main() { _Decimal32 d1; @@ -16282,7 +16285,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 16285 "configure" +#line 16288 "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; @@ -77463,19 +77466,62 @@ elf64) elfsize=64 ;; esac BACKTRACE_CPPFLAGS="$BACKTRACE_CPPFLAGS -DBACKTRACE_ELF_SIZE=$elfsize" - ALLOC_FILE=alloc.lo - - VIEW_FILE=read.lo - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build libbacktrace support" >&5 $as_echo_n "checking whether to build libbacktrace support... " >&6; } - if test "$enable_libstdcxx_backtrace" == "auto"; then + if test "$enable_libstdcxx_backtrace" = "auto"; then enable_libstdcxx_backtrace=no fi - if test "$enable_libstdcxx_backtrace" == "yes"; then + if test "$enable_libstdcxx_backtrace" = "yes"; then BACKTRACE_SUPPORTED=1 - BACKTRACE_USES_MALLOC=1 + + for ac_header in sys/mman.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_mman_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_MMAN_H 1 +_ACEOF + +fi + +done + + case "${host}" in + *-*-msdosdjgpp) # DJGPP has sys/man.h, but no mmap + have_mmap=no ;; + *-*-*) + have_mmap="$ac_cv_header_sys_mman_h" ;; + esac + + if test "$have_mmap" = "no"; then + VIEW_FILE=read.lo + ALLOC_FILE=alloc.lo + else + VIEW_FILE=mmapio.lo + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include <sys/mman.h> + #if !defined(MAP_ANONYMOUS) && !defined(MAP_ANON) + #error no MAP_ANONYMOUS + #endif + +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ALLOC_FILE=mmap.lo +else + ALLOC_FILE=alloc.lo +fi +rm -f conftest.err conftest.i conftest.$ac_ext + fi + + + + BACKTRACE_USES_MALLOC=0 + if test "$ALLOC_FILE" = "alloc.lo"; then + BACKTRACE_USES_MALLOC=1 + fi + if test "$ac_has_gthreads" = "yes"; then BACKTRACE_SUPPORTS_THREADS=1 else @@ -78517,7 +78563,7 @@ else fi - if test "$enable_libstdcxx_backtrace" != no; then + if test "$enable_libstdcxx_backtrace" = yes; then ENABLE_BACKTRACE_TRUE= ENABLE_BACKTRACE_FALSE='#' else diff --git a/libstdc++-v3/doc/html/manual/setup.html b/libstdc++-v3/doc/html/manual/setup.html index 636a440..069354b 100644 --- a/libstdc++-v3/doc/html/manual/setup.html +++ b/libstdc++-v3/doc/html/manual/setup.html @@ -42,6 +42,39 @@ </p><p> Finally, a few system-specific requirements: </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">linux</span></dt><dd><p> + The 'gnu' locale model makes use of <code class="function">iconv</code> + for character set conversions. The relevant functions are provided + by Glibc and so are always available, however they can also be + provided by the separate GNU libiconv library. If GNU libiconv is + found when GCC is built (e.g., because its headers are installed + in <code class="filename">/usr/local/include</code>) + then the <code class="filename">libstdc++.so.6</code> library will have a + run-time dependency on <code class="filename">libiconv.so.2</code>. + If you do not want that run-time dependency then you should do + one of the following: + </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> + Uninstall the libiconv headers before building GCC. + Glibc already provides <code class="function">iconv</code> so you should + not need libiconv anyway. + </p></li><li class="listitem"><p> + <a class="link" href="../"> + Download</a> the libiconv sources and extract them into the + top level of the GCC source tree, e.g., + </p><pre class="programlisting"> +wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz +tar xf libiconv-1.16.tar.gz +ln -s libiconv-1.16 libiconv +</pre><p> + This will build libiconv as part of building GCC and link to + it statically, so there is no <code class="filename">libiconv.so.2</code> + dependency. + </p></li><li class="listitem"><p> + Configure GCC with <code class="option">--with-libiconv-type=static</code>. + This requires the static <code class="filename">libiconv.a</code> library, + which is not installed by default. You might need to reinstall + libiconv using the <code class="option">--enable-static</code> configure + option to get the static library. + </p></li></ul></div><p> If GCC 3.1.0 or later on is being used on GNU/Linux, an attempt will be made to use "C" library functionality necessary for C++ named locale support. For GCC 4.6.0 and later, this diff --git a/libstdc++-v3/doc/xml/manual/intro.xml b/libstdc++-v3/doc/xml/manual/intro.xml index 86ed696..548b632 100644 --- a/libstdc++-v3/doc/xml/manual/intro.xml +++ b/libstdc++-v3/doc/xml/manual/intro.xml @@ -55,7 +55,7 @@ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr24733.xml"> </xi:include> - <!-- Section 01.7 : Status C++ IS 24733 --> + <!-- Section 01.7 : Status C++ IS 29124 --> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxis29124.xml"> </xi:include> </section> diff --git a/libstdc++-v3/doc/xml/manual/prerequisites.xml b/libstdc++-v3/doc/xml/manual/prerequisites.xml index 22e90a7..8799487 100644 --- a/libstdc++-v3/doc/xml/manual/prerequisites.xml +++ b/libstdc++-v3/doc/xml/manual/prerequisites.xml @@ -50,6 +50,56 @@ <listitem> <para> + The 'gnu' locale model makes use of <function>iconv</function> + for character set conversions. The relevant functions are provided + by Glibc and so are always available, however they can also be + provided by the separate GNU libiconv library. If GNU libiconv is + found when GCC is built (e.g., because its headers are installed + in <filename class="directory">/usr/local/include</filename>) + then the <filename>libstdc++.so.6</filename> library will have a + run-time dependency on <filename>libiconv.so.2</filename>. + If you do not want that run-time dependency then you should do + one of the following: + </para> + <itemizedlist> + <listitem> + <para> + Uninstall the libiconv headers before building GCC. + Glibc already provides <function>iconv</function> so you should + not need libiconv anyway. + </para> + </listitem> + <listitem> + <para> + <link linkend="https://www.gnu.org/software/libiconv/#downloading"> + Download</link> the libiconv sources and extract them into the + top level of the GCC source tree, e.g., + </para> +<programlisting> +wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz +tar xf libiconv-1.16.tar.gz +ln -s libiconv-1.16 libiconv +</programlisting> + <para> + This will build libiconv as part of building GCC and link to + it statically, so there is no <filename>libiconv.so.2</filename> + dependency. + </para> + </listitem> + <listitem> + <para> + Configure GCC with <option>--with-libiconv-type=static</option>. + This requires the static <filename>libiconv.a</filename> library, + which is not installed by default. You might need to reinstall + libiconv using the <option>--enable-static</option> configure + option to get the static library. + </para> + </listitem> + </itemizedlist> + </listitem> + + <listitem> + <para> If GCC 3.1.0 or later on is being used on GNU/Linux, an attempt will be made to use "C" library functionality necessary for C++ named locale support. For GCC 4.6.0 and later, this diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index 2cad848..5cf217d 100644 --- a/libstdc++-v3/include/bits/atomic_base.h +++ b/libstdc++-v3/include/bits/atomic_base.h @@ -252,13 +252,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // TODO add const volatile overload _GLIBCXX_ALWAYS_INLINE void - notify_one() const noexcept + notify_one() noexcept { std::__atomic_notify_address(&_M_i, false); } // TODO add const volatile overload _GLIBCXX_ALWAYS_INLINE void - notify_all() const noexcept + notify_all() noexcept { std::__atomic_notify_address(&_M_i, true); } // TODO add const volatile overload @@ -600,13 +600,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // TODO add const volatile overload _GLIBCXX_ALWAYS_INLINE void - notify_one() const noexcept + notify_one() noexcept { std::__atomic_notify_address(&_M_i, false); } // TODO add const volatile overload _GLIBCXX_ALWAYS_INLINE void - notify_all() const noexcept + notify_all() noexcept { std::__atomic_notify_address(&_M_i, true); } // TODO add const volatile overload diff --git a/libstdc++-v3/include/bits/fs_path.h b/libstdc++-v3/include/bits/fs_path.h index 9e06fa6..d6202fd 100644 --- a/libstdc++-v3/include/bits/fs_path.h +++ b/libstdc++-v3/include/bits/fs_path.h @@ -1416,6 +1416,16 @@ extern template class __shared_ptr<const filesystem::filesystem_error::_Impl>; /// @endcond +// _GLIBCXX_RESOLVE_LIB_DEFECTS +// 3657. std::hash<std::filesystem::path> is not enabled +template<> + struct hash<filesystem::path> + { + size_t + operator()(const filesystem::path& __p) const noexcept + { return filesystem::hash_value(__p); } + }; + _GLIBCXX_END_NAMESPACE_VERSION } // namespace std diff --git a/libstdc++-v3/include/bits/ptr_traits.h b/libstdc++-v3/include/bits/ptr_traits.h index c85e6d4..047efa5 100644 --- a/libstdc++-v3/include/bits/ptr_traits.h +++ b/libstdc++-v3/include/bits/ptr_traits.h @@ -36,7 +36,10 @@ #if __cplusplus > 201703L #include <concepts> -#define __cpp_lib_constexpr_memory 201811L +# ifndef __cpp_lib_constexpr_memory +// Defined to a newer value in bits/unique_ptr.h for C++23 +# define __cpp_lib_constexpr_memory 201811L +# endif namespace __gnu_debug { struct _Safe_iterator_base; } #endif diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h index 62dc605..3d30fb1 100644 --- a/libstdc++-v3/include/bits/ranges_algo.h +++ b/libstdc++-v3/include/bits/ranges_algo.h @@ -3084,7 +3084,7 @@ namespace ranges auto __last = ranges::end(__r); __glibcxx_assert(__first != __last); auto __comp_proj = __detail::__make_comp_proj(__comp, __proj); - minmax_result<range_value_t<_Range>> __result = {*__first, *__first}; + minmax_result<range_value_t<_Range>> __result = {*__first, __result.min}; if (++__first == __last) return __result; else diff --git a/libstdc++-v3/include/bits/shared_ptr_atomic.h b/libstdc++-v3/include/bits/shared_ptr_atomic.h index 9e4df7d..ff86432 100644 --- a/libstdc++-v3/include/bits/shared_ptr_atomic.h +++ b/libstdc++-v3/include/bits/shared_ptr_atomic.h @@ -573,6 +573,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr atomic() noexcept = default; + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3661. constinit atomic<shared_ptr<T>> a(nullptr); should work + constexpr atomic(nullptr_t) noexcept : atomic() { } + atomic(shared_ptr<_Tp> __r) noexcept : _M_impl(std::move(__r)) { } diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h index 8e2fcc6..b4ff398 100644 --- a/libstdc++-v3/include/bits/stl_vector.h +++ b/libstdc++-v3/include/bits/stl_vector.h @@ -62,8 +62,9 @@ #if __cplusplus >= 201103L #include <initializer_list> #endif -#if __cplusplus > 201703L +#if __cplusplus >= 202002L # include <compare> +#define __cpp_lib_constexpr_vector 201907L #endif #include <debug/assertions.h> diff --git a/libstdc++-v3/include/bits/unique_ptr.h b/libstdc++-v3/include/bits/unique_ptr.h index 8f4430f..ad60fad 100644 --- a/libstdc++-v3/include/bits/unique_ptr.h +++ b/libstdc++-v3/include/bits/unique_ptr.h @@ -41,6 +41,14 @@ # include <ostream> #endif +#if __cplusplus > 202002L && __cpp_constexpr_dynamic_alloc +# if __cpp_lib_constexpr_memory < 202202L +// Defined with older value in bits/ptr_traits.h for C++20 +# undef __cpp_lib_constexpr_memory +# define __cpp_lib_constexpr_memory 202202L +# endif +#endif + namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -72,9 +80,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION */ template<typename _Up, typename = _Require<is_convertible<_Up*, _Tp*>>> + _GLIBCXX23_CONSTEXPR default_delete(const default_delete<_Up>&) noexcept { } /// Calls `delete __ptr` + _GLIBCXX23_CONSTEXPR void operator()(_Tp* __ptr) const { @@ -108,10 +118,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION */ template<typename _Up, typename = _Require<is_convertible<_Up(*)[], _Tp(*)[]>>> + _GLIBCXX23_CONSTEXPR default_delete(const default_delete<_Up[]>&) noexcept { } /// Calls `delete[] __ptr` template<typename _Up> + _GLIBCXX23_CONSTEXPR typename enable_if<is_convertible<_Up(*)[], _Tp(*)[]>::value>::type operator()(_Up* __ptr) const { @@ -152,16 +164,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION " or an lvalue reference type" ); __uniq_ptr_impl() = default; + _GLIBCXX23_CONSTEXPR __uniq_ptr_impl(pointer __p) : _M_t() { _M_ptr() = __p; } template<typename _Del> - __uniq_ptr_impl(pointer __p, _Del&& __d) + _GLIBCXX23_CONSTEXPR + __uniq_ptr_impl(pointer __p, _Del&& __d) : _M_t(__p, std::forward<_Del>(__d)) { } + _GLIBCXX23_CONSTEXPR __uniq_ptr_impl(__uniq_ptr_impl&& __u) noexcept : _M_t(std::move(__u._M_t)) { __u._M_ptr() = nullptr; } + _GLIBCXX23_CONSTEXPR __uniq_ptr_impl& operator=(__uniq_ptr_impl&& __u) noexcept { reset(__u.release()); @@ -169,11 +185,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return *this; } + _GLIBCXX23_CONSTEXPR pointer& _M_ptr() noexcept { return std::get<0>(_M_t); } + _GLIBCXX23_CONSTEXPR pointer _M_ptr() const noexcept { return std::get<0>(_M_t); } + _GLIBCXX23_CONSTEXPR _Dp& _M_deleter() noexcept { return std::get<1>(_M_t); } + _GLIBCXX23_CONSTEXPR const _Dp& _M_deleter() const noexcept { return std::get<1>(_M_t); } + _GLIBCXX23_CONSTEXPR void reset(pointer __p) noexcept { const pointer __old_p = _M_ptr(); @@ -182,6 +203,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_deleter()(__old_p); } + _GLIBCXX23_CONSTEXPR pointer release() noexcept { pointer __p = _M_ptr(); @@ -189,6 +211,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __p; } + _GLIBCXX23_CONSTEXPR void swap(__uniq_ptr_impl& __rhs) noexcept { @@ -281,6 +304,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * The deleter will be value-initialized. */ template<typename _Del = _Dp, typename = _DeleterConstraint<_Del>> + _GLIBCXX23_CONSTEXPR explicit unique_ptr(pointer __p) noexcept : _M_t(__p) @@ -295,6 +319,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION */ template<typename _Del = deleter_type, typename = _Require<is_copy_constructible<_Del>>> + _GLIBCXX23_CONSTEXPR unique_ptr(pointer __p, const deleter_type& __d) noexcept : _M_t(__p, __d) { } @@ -307,6 +332,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION */ template<typename _Del = deleter_type, typename = _Require<is_move_constructible<_Del>>> + _GLIBCXX23_CONSTEXPR unique_ptr(pointer __p, __enable_if_t<!is_lvalue_reference<_Del>::value, _Del&&> __d) noexcept @@ -315,6 +341,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _Del = deleter_type, typename _DelUnref = typename remove_reference<_Del>::type> + _GLIBCXX23_CONSTEXPR unique_ptr(pointer, __enable_if_t<is_lvalue_reference<_Del>::value, _DelUnref&&>) = delete; @@ -341,6 +368,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __conditional_t<is_reference<_Dp>::value, is_same<_Ep, _Dp>, is_convertible<_Ep, _Dp>>>> + _GLIBCXX23_CONSTEXPR unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) { } @@ -356,6 +384,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif /// Destructor, invokes the deleter if the stored pointer is not null. +#if __cplusplus > 202002L && __cpp_constexpr_dynamic_alloc + constexpr +#endif ~unique_ptr() noexcept { static_assert(__is_invocable<deleter_type&, pointer>::value, @@ -382,6 +413,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * Invokes the deleter if this object owns a pointer. */ template<typename _Up, typename _Ep> + _GLIBCXX23_CONSTEXPR typename enable_if< __and_< __safe_conversion_up<_Up, _Ep>, is_assignable<deleter_type&, _Ep&&> @@ -395,6 +427,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } /// Reset the %unique_ptr to empty, invoking the deleter if necessary. + _GLIBCXX23_CONSTEXPR unique_ptr& operator=(nullptr_t) noexcept { @@ -405,6 +438,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Observers. /// Dereference the stored pointer. + _GLIBCXX23_CONSTEXPR typename add_lvalue_reference<element_type>::type operator*() const noexcept(noexcept(*std::declval<pointer>())) { @@ -413,6 +447,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } /// Return the stored pointer. + _GLIBCXX23_CONSTEXPR pointer operator->() const noexcept { @@ -421,27 +456,32 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } /// Return the stored pointer. + _GLIBCXX23_CONSTEXPR pointer get() const noexcept { return _M_t._M_ptr(); } /// Return a reference to the stored deleter. + _GLIBCXX23_CONSTEXPR deleter_type& get_deleter() noexcept { return _M_t._M_deleter(); } /// Return a reference to the stored deleter. + _GLIBCXX23_CONSTEXPR const deleter_type& get_deleter() const noexcept { return _M_t._M_deleter(); } /// Return @c true if the stored pointer is not null. + _GLIBCXX23_CONSTEXPR explicit operator bool() const noexcept { return get() == pointer() ? false : true; } // Modifiers. /// Release ownership of any stored pointer. + _GLIBCXX23_CONSTEXPR pointer release() noexcept { return _M_t.release(); } @@ -452,6 +492,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * * The deleter will be invoked if a pointer is already owned. */ + _GLIBCXX23_CONSTEXPR void reset(pointer __p = pointer()) noexcept { @@ -461,6 +502,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } /// Exchange the pointer and deleter with another object. + _GLIBCXX23_CONSTEXPR void swap(unique_ptr& __u) noexcept { @@ -551,6 +593,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename = _DeleterConstraint<_Vp>, typename = typename enable_if< __safe_conversion_raw<_Up>::value, bool>::type> + _GLIBCXX23_CONSTEXPR explicit unique_ptr(_Up __p) noexcept : _M_t(__p) @@ -567,8 +610,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _Up, typename _Del = deleter_type, typename = _Require<__safe_conversion_raw<_Up>, is_copy_constructible<_Del>>> - unique_ptr(_Up __p, const deleter_type& __d) noexcept - : _M_t(__p, __d) { } + _GLIBCXX23_CONSTEXPR + unique_ptr(_Up __p, const deleter_type& __d) noexcept + : _M_t(__p, __d) { } /** Takes ownership of a pointer. * @@ -581,6 +625,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _Up, typename _Del = deleter_type, typename = _Require<__safe_conversion_raw<_Up>, is_move_constructible<_Del>>> + _GLIBCXX23_CONSTEXPR unique_ptr(_Up __p, __enable_if_t<!is_lvalue_reference<_Del>::value, _Del&&> __d) noexcept @@ -608,11 +653,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __conditional_t<is_reference<_Dp>::value, is_same<_Ep, _Dp>, is_convertible<_Ep, _Dp>>>> + _GLIBCXX23_CONSTEXPR unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) { } /// Destructor, invokes the deleter if the stored pointer is not null. +#if __cplusplus > 202002L && __cpp_constexpr_dynamic_alloc + constexpr +#endif ~unique_ptr() { auto& __ptr = _M_t._M_ptr(); @@ -638,6 +687,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * Invokes the deleter if this object owns a pointer. */ template<typename _Up, typename _Ep> + _GLIBCXX23_CONSTEXPR typename enable_if<__and_<__safe_conversion_up<_Up, _Ep>, is_assignable<deleter_type&, _Ep&&> @@ -651,6 +701,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } /// Reset the %unique_ptr to empty, invoking the deleter if necessary. + _GLIBCXX23_CONSTEXPR unique_ptr& operator=(nullptr_t) noexcept { @@ -661,6 +712,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Observers. /// Access an element of owned array. + _GLIBCXX23_CONSTEXPR typename std::add_lvalue_reference<element_type>::type operator[](size_t __i) const { @@ -669,27 +721,32 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } /// Return the stored pointer. + _GLIBCXX23_CONSTEXPR pointer get() const noexcept { return _M_t._M_ptr(); } /// Return a reference to the stored deleter. + _GLIBCXX23_CONSTEXPR deleter_type& get_deleter() noexcept { return _M_t._M_deleter(); } /// Return a reference to the stored deleter. + _GLIBCXX23_CONSTEXPR const deleter_type& get_deleter() const noexcept { return _M_t._M_deleter(); } /// Return @c true if the stored pointer is not null. + _GLIBCXX23_CONSTEXPR explicit operator bool() const noexcept { return get() == pointer() ? false : true; } // Modifiers. /// Release ownership of any stored pointer. + _GLIBCXX23_CONSTEXPR pointer release() noexcept { return _M_t.release(); } @@ -712,14 +769,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > > >> + _GLIBCXX23_CONSTEXPR void reset(_Up __p) noexcept { _M_t.reset(std::move(__p)); } + _GLIBCXX23_CONSTEXPR void reset(nullptr_t = nullptr) noexcept { reset(pointer()); } /// Exchange the pointer and deleter with another object. + _GLIBCXX23_CONSTEXPR void swap(unique_ptr& __u) noexcept { @@ -740,6 +800,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 // Constrained free swap overload, see p0185r1 + _GLIBCXX23_CONSTEXPR typename enable_if<__is_swappable<_Dp>::value>::type #else void @@ -758,41 +819,47 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Equality operator for unique_ptr objects, compares the owned pointers template<typename _Tp, typename _Dp, typename _Up, typename _Ep> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator==(const unique_ptr<_Tp, _Dp>& __x, const unique_ptr<_Up, _Ep>& __y) { return __x.get() == __y.get(); } /// unique_ptr comparison with nullptr template<typename _Tp, typename _Dp> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept { return !__x; } #ifndef __cpp_lib_three_way_comparison /// unique_ptr comparison with nullptr template<typename _Tp, typename _Dp> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD + inline bool operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept { return !__x; } /// Inequality operator for unique_ptr objects, compares the owned pointers template<typename _Tp, typename _Dp, typename _Up, typename _Ep> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD + inline bool operator!=(const unique_ptr<_Tp, _Dp>& __x, const unique_ptr<_Up, _Ep>& __y) { return __x.get() != __y.get(); } /// unique_ptr comparison with nullptr template<typename _Tp, typename _Dp> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD + inline bool operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept { return (bool)__x; } /// unique_ptr comparison with nullptr template<typename _Tp, typename _Dp> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD + inline bool operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept { return (bool)__x; } #endif // three way comparison @@ -800,7 +867,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Relational operator for unique_ptr objects, compares the owned pointers template<typename _Tp, typename _Dp, typename _Up, typename _Ep> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator<(const unique_ptr<_Tp, _Dp>& __x, const unique_ptr<_Up, _Ep>& __y) { @@ -812,7 +880,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// unique_ptr comparison with nullptr template<typename _Tp, typename _Dp> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) { return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(__x.get(), @@ -821,7 +890,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// unique_ptr comparison with nullptr template<typename _Tp, typename _Dp> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) { return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(nullptr, @@ -831,34 +901,39 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Relational operator for unique_ptr objects, compares the owned pointers template<typename _Tp, typename _Dp, typename _Up, typename _Ep> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator<=(const unique_ptr<_Tp, _Dp>& __x, const unique_ptr<_Up, _Ep>& __y) { return !(__y < __x); } /// unique_ptr comparison with nullptr template<typename _Tp, typename _Dp> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) { return !(nullptr < __x); } /// unique_ptr comparison with nullptr template<typename _Tp, typename _Dp> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) { return !(__x < nullptr); } /// Relational operator for unique_ptr objects, compares the owned pointers template<typename _Tp, typename _Dp, typename _Up, typename _Ep> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator>(const unique_ptr<_Tp, _Dp>& __x, const unique_ptr<_Up, _Ep>& __y) { return (__y < __x); } /// unique_ptr comparison with nullptr template<typename _Tp, typename _Dp> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) { return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(nullptr, @@ -867,7 +942,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// unique_ptr comparison with nullptr template<typename _Tp, typename _Dp> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) { return std::less<typename unique_ptr<_Tp, _Dp>::pointer>()(__x.get(), @@ -877,14 +953,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Relational operator for unique_ptr objects, compares the owned pointers template<typename _Tp, typename _Dp, typename _Up, typename _Ep> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator>=(const unique_ptr<_Tp, _Dp>& __x, const unique_ptr<_Up, _Ep>& __y) { return !(__x < __y); } /// unique_ptr comparison with nullptr template<typename _Tp, typename _Dp> - _GLIBCXX_NODISCARD inline bool + _GLIBCXX_NODISCARD _GLIBCXX23_CONSTEXPR + inline bool operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) { return !(__x < nullptr); } @@ -898,6 +976,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _Tp, typename _Dp, typename _Up, typename _Ep> requires three_way_comparable_with<typename unique_ptr<_Tp, _Dp>::pointer, typename unique_ptr<_Up, _Ep>::pointer> + _GLIBCXX23_CONSTEXPR inline compare_three_way_result_t<typename unique_ptr<_Tp, _Dp>::pointer, typename unique_ptr<_Up, _Ep>::pointer> @@ -907,6 +986,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _Tp, typename _Dp> requires three_way_comparable<typename unique_ptr<_Tp, _Dp>::pointer> + _GLIBCXX23_CONSTEXPR inline compare_three_way_result_t<typename unique_ptr<_Tp, _Dp>::pointer> operator<=>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) @@ -979,6 +1059,7 @@ namespace __detail * @relates unique_ptr */ template<typename _Tp, typename... _Args> + _GLIBCXX23_CONSTEXPR inline __detail::__unique_ptr_t<_Tp> make_unique(_Args&&... __args) { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); } @@ -993,6 +1074,7 @@ namespace __detail * The array elements are value-initialized. */ template<typename _Tp> + _GLIBCXX23_CONSTEXPR inline __detail::__unique_ptr_array_t<_Tp> make_unique(size_t __num) { return unique_ptr<_Tp>(new remove_extent_t<_Tp>[__num]()); } @@ -1014,6 +1096,7 @@ namespace __detail * @relates unique_ptr */ template<typename _Tp> + _GLIBCXX23_CONSTEXPR inline __detail::__unique_ptr_t<_Tp> make_unique_for_overwrite() { return unique_ptr<_Tp>(new _Tp); } @@ -1026,6 +1109,7 @@ namespace __detail * @relates unique_ptr */ template<typename _Tp> + _GLIBCXX23_CONSTEXPR inline __detail::__unique_ptr_array_t<_Tp> make_unique_for_overwrite(size_t __num) { return unique_ptr<_Tp>(new remove_extent_t<_Tp>[__num]); } diff --git a/libstdc++-v3/include/c_compatibility/stdatomic.h b/libstdc++-v3/include/c_compatibility/stdatomic.h index c97cbac..a51a84c 100644 --- a/libstdc++-v3/include/c_compatibility/stdatomic.h +++ b/libstdc++-v3/include/c_compatibility/stdatomic.h @@ -32,6 +32,8 @@ #if __cplusplus > 202002L #include <atomic> +#define __cpp_lib_stdatomic_h 202011L + #define _Atomic(_Tp) std::atomic<_Tp> using std::memory_order; diff --git a/libstdc++-v3/include/experimental/bits/fs_path.h b/libstdc++-v3/include/experimental/bits/fs_path.h index 803df42..b0825ba 100644 --- a/libstdc++-v3/include/experimental/bits/fs_path.h +++ b/libstdc++-v3/include/experimental/bits/fs_path.h @@ -212,21 +212,11 @@ namespace __detail // constructors and destructor - path() noexcept { } + path() noexcept; + path(const path& __p); + path(path&& __p) noexcept; - path(const path& __p) = default; - - path(path&& __p) noexcept - : _M_pathname(std::move(__p._M_pathname)), _M_type(__p._M_type) - { - if (_M_type == _Type::_Multi) - _M_split_cmpts(); - __p.clear(); - } - - path(string_type&& __source) - : _M_pathname(std::move(__source)) - { _M_split_cmpts(); } + path(string_type&& __source); template<typename _Source, typename _Require = __detail::_Path<_Source>> @@ -256,11 +246,11 @@ namespace __detail : _M_pathname(_S_convert_loc(__first, __last, __loc)) { _M_split_cmpts(); } - ~path() = default; + ~path(); // assignments - path& operator=(const path& __p) = default; + path& operator=(const path& __p); path& operator=(path&& __p) noexcept; path& operator=(string_type&& __source); path& assign(string_type&& __source); @@ -449,11 +439,7 @@ namespace __detail _Multi, _Root_name, _Root_dir, _Filename }; - path(string_type __str, _Type __type) : _M_pathname(__str), _M_type(__type) - { - __glibcxx_assert(!empty()); - __glibcxx_assert(_M_type != _Type::_Multi); - } + path(string_type __str, _Type __type); enum class _Split { _Stem, _Extension }; @@ -908,6 +894,37 @@ namespace __detail bool _M_at_end; // only used when type != _Multi }; + inline + path::path() noexcept = default; + + inline + path::path(const path&) = default; + + inline + path::path(path&& __p) noexcept + : _M_pathname(std::move(__p._M_pathname)), + _M_cmpts(__p._M_cmpts), + _M_type(__p._M_type) + { __p.clear(); } + + inline + path::path(string_type&& __source) + : _M_pathname(std::move(__source)) + { _M_split_cmpts(); } + + inline + path::path(string_type __str, _Type __type) + : _M_pathname(__str), _M_type(__type) + { + __glibcxx_assert(!empty()); + __glibcxx_assert(_M_type != _Type::_Multi); + } + + inline + path::~path() = default; + + inline path& + path::operator=(const path& __p) = default; inline path& path::operator=(path&& __p) noexcept diff --git a/libstdc++-v3/include/precompiled/stdc++.h b/libstdc++-v3/include/precompiled/stdc++.h index 6d6d2ad..5ee1244 100644 --- a/libstdc++-v3/include/precompiled/stdc++.h +++ b/libstdc++-v3/include/precompiled/stdc++.h @@ -155,4 +155,8 @@ #if __cplusplus > 202002L #include <expected> #include <spanstream> +#if __has_include(<stacktrace>) +# include <stacktrace> +#endif +#include <stdatomic.h> #endif diff --git a/libstdc++-v3/include/std/atomic b/libstdc++-v3/include/std/atomic index bc57659..d819b6b 100644 --- a/libstdc++-v3/include/std/atomic +++ b/libstdc++-v3/include/std/atomic @@ -172,11 +172,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // TODO add const volatile overload void - notify_one() const noexcept + notify_one() noexcept { _M_base.notify_one(); } void - notify_all() const noexcept + notify_all() noexcept { _M_base.notify_all(); } #endif // __cpp_lib_atomic_wait }; @@ -399,11 +399,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // TODO add const volatile overload void - notify_one() const noexcept + notify_one() noexcept { std::__atomic_notify_address(&_M_i, false); } void - notify_all() const noexcept + notify_all() noexcept { std::__atomic_notify_address(&_M_i, true); } #endif // __cpp_lib_atomic_wait @@ -654,11 +654,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // TODO add const volatile overload void - notify_one() const noexcept + notify_one() noexcept { _M_b.notify_one(); } void - notify_all() const noexcept + notify_all() noexcept { _M_b.notify_all(); } #endif // __cpp_lib_atomic_wait @@ -1434,12 +1434,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _Tp> inline void - atomic_notify_one(const atomic<_Tp>* __a) noexcept + atomic_notify_one(atomic<_Tp>* __a) noexcept { __a->notify_one(); } template<typename _Tp> inline void - atomic_notify_all(const atomic<_Tp>* __a) noexcept + atomic_notify_all(atomic<_Tp>* __a) noexcept { __a->notify_all(); } #endif // __cpp_lib_atomic_wait diff --git a/libstdc++-v3/include/std/charconv b/libstdc++-v3/include/std/charconv index 2ce9c7d..218813e 100644 --- a/libstdc++-v3/include/std/charconv +++ b/libstdc++-v3/include/std/charconv @@ -407,176 +407,132 @@ namespace __detail return true; } - /// std::from_chars implementation for integers in base 2. - template<typename _Tp> + // Construct and return a lookup table that maps 0-9, A-Z and a-z to their + // corresponding base-36 value and maps all other characters to 127. + constexpr auto + __from_chars_alnum_to_val_table() + { + constexpr unsigned char __lower_letters[27] = "abcdefghijklmnopqrstuvwxyz"; + constexpr unsigned char __upper_letters[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + struct { unsigned char __data[1u << __CHAR_BIT__] = {}; } __table; + for (auto& __entry : __table.__data) + __entry = 127; + for (int __i = 0; __i < 10; ++__i) + __table.__data['0' + __i] = __i; + for (int __i = 0; __i < 26; ++__i) + { + __table.__data[__lower_letters[__i]] = 10 + __i; + __table.__data[__upper_letters[__i]] = 10 + __i; + } + return __table; + } + + // If _DecOnly is true: if the character is a decimal digit, then + // return its corresponding base-10 value, otherwise return a value >= 127. + // If _DecOnly is false: if the character is an alphanumeric digit, then + // return its corresponding base-36 value, otherwise return a value >= 127. + template<bool _DecOnly = false> + unsigned char + __from_chars_alnum_to_val(unsigned char __c) + { + if _GLIBCXX17_CONSTEXPR (_DecOnly) + return __c - '0'; + else + { + // This initializer is deliberately made dependent in order to work + // around modules bug PR105322. + static constexpr auto __table = (_DecOnly, __from_chars_alnum_to_val_table()); + return __table.__data[__c]; + } + } + + /// std::from_chars implementation for integers in a power-of-two base. + /// If _DecOnly is true, then we may assume __base is at most 8. + template<bool _DecOnly, typename _Tp> bool - __from_chars_binary(const char*& __first, const char* __last, _Tp& __val) + __from_chars_pow2_base(const char*& __first, const char* __last, _Tp& __val, + int __base) { static_assert(is_integral<_Tp>::value, "implementation bug"); static_assert(is_unsigned<_Tp>::value, "implementation bug"); + // __glibcxx_assert((__base & (__base - 1)) == 0); + // __glibcxx_assert(_DecOnly ? __base <= 8 : __base <= 32); + const int __log2_base = __countr_zero(__base); + const ptrdiff_t __len = __last - __first; ptrdiff_t __i = 0; while (__i < __len && __first[__i] == '0') ++__i; const ptrdiff_t __leading_zeroes = __i; + if (__i >= __len) [[__unlikely__]] + { + __first += __i; + return true; + } - while (__i < __len) + // Remember the leading significant digit value if necessary. + unsigned char __leading_c = 0; + if (__base != 2) { - const unsigned char __c = (unsigned)__first[__i] - '0'; - if (__c < 2) - __val = (__val << 1) | __c; - else + __leading_c = __from_chars_alnum_to_val<_DecOnly>(__first[__i]); + // __glibcxx_assert(__leading_c != 0); + if (__leading_c >= __base) [[__unlikely__]] + { + __first += __i; + return true; + } + __val = __leading_c; + ++__i; + } + + for (; __i < __len; ++__i) + { + const unsigned char __c = __from_chars_alnum_to_val<_DecOnly>(__first[__i]); + if (__c >= __base) break; - __i++; + __val = (__val << __log2_base) | __c; } __first += __i; - return (__i - __leading_zeroes) <= __gnu_cxx::__int_traits<_Tp>::__digits; + auto __significant_bits = (__i - __leading_zeroes) * __log2_base; + if (__base != 2) + // Compensate for a leading significant digit that didn't use all + // of its available bits. + __significant_bits -= __log2_base - __bit_width(__leading_c); + // __glibcxx_assert(__significant_bits >= 0); + return __significant_bits <= __gnu_cxx::__int_traits<_Tp>::__digits; } - /// std::from_chars implementation for integers in bases 3 to 10. - template<typename _Tp> + /// std::from_chars implementation for integers in any base. + /// If _DecOnly is true, then we may assume __base is at most 10. + template<bool _DecOnly, typename _Tp> bool - __from_chars_digit(const char*& __first, const char* __last, _Tp& __val, + __from_chars_alnum(const char*& __first, const char* __last, _Tp& __val, int __base) { - static_assert(is_integral<_Tp>::value, "implementation bug"); - static_assert(is_unsigned<_Tp>::value, "implementation bug"); + // __glibcxx_assert(!_DecOnly || __base <= 10); - auto __matches = [__base](char __c) { - return '0' <= __c && __c <= ('0' + (__base - 1)); - }; - - while (__first != __last) + const int __bits_per_digit = __bit_width(__base); + int __unused_bits_lower_bound = __gnu_cxx::__int_traits<_Tp>::__digits; + for (; __first != __last; ++__first) { - const char __c = *__first; - if (__matches(__c)) - { - if (!__raise_and_add(__val, __base, __c - '0')) - { - while (++__first != __last && __matches(*__first)) - ; - return false; - } - __first++; - } - else + const unsigned char __c = __from_chars_alnum_to_val<_DecOnly>(*__first); + if (__c >= __base) return true; - } - return true; - } - - constexpr char - __from_chars_alpha_to_num(char __c) - { - switch (__c) - { - case 'a': - case 'A': - return 10; - case 'b': - case 'B': - return 11; - case 'c': - case 'C': - return 12; - case 'd': - case 'D': - return 13; - case 'e': - case 'E': - return 14; - case 'f': - case 'F': - return 15; - case 'g': - case 'G': - return 16; - case 'h': - case 'H': - return 17; - case 'i': - case 'I': - return 18; - case 'j': - case 'J': - return 19; - case 'k': - case 'K': - return 20; - case 'l': - case 'L': - return 21; - case 'm': - case 'M': - return 22; - case 'n': - case 'N': - return 23; - case 'o': - case 'O': - return 24; - case 'p': - case 'P': - return 25; - case 'q': - case 'Q': - return 26; - case 'r': - case 'R': - return 27; - case 's': - case 'S': - return 28; - case 't': - case 'T': - return 29; - case 'u': - case 'U': - return 30; - case 'v': - case 'V': - return 31; - case 'w': - case 'W': - return 32; - case 'x': - case 'X': - return 33; - case 'y': - case 'Y': - return 34; - case 'z': - case 'Z': - return 35; - } - return 127; - } - /// std::from_chars implementation for integers in bases 11 to 36. - template<typename _Tp> - bool - __from_chars_alnum(const char*& __first, const char* __last, _Tp& __val, - int __base) - { - bool __valid = true; - while (__first != __last) - { - char __c = *__first; - if ('0' <= __c && __c <= '9') // isdigit - __c -= '0'; - else + __unused_bits_lower_bound -= __bits_per_digit; + if (__unused_bits_lower_bound >= 0) [[__likely__]] + // We're definitely not going to overflow. + __val = __val * __base + __c; + else if (!__raise_and_add(__val, __base, __c)) [[__unlikely__]] { - __c = __from_chars_alpha_to_num(__c); - if (__c >= __base) - break; + while (++__first != __last + && __from_chars_alnum_to_val<_DecOnly>(*__first) < __base) + ; + return false; } - - if (__builtin_expect(__valid, 1)) - __valid = __raise_and_add(__val, __base, __c); - __first++; } - return __valid; + return true; } template<typename _Tp> @@ -611,12 +567,17 @@ namespace __detail const auto __start = __first; bool __valid; - if (__base == 2) - __valid = __detail::__from_chars_binary(__first, __last, __val); + if ((__base & (__base - 1)) == 0) + { + if (__base <= 8) + __valid = __detail::__from_chars_pow2_base<true>(__first, __last, __val, __base); + else + __valid = __detail::__from_chars_pow2_base<false>(__first, __last, __val, __base); + } else if (__base <= 10) - __valid = __detail::__from_chars_digit(__first, __last, __val, __base); + __valid = __detail::__from_chars_alnum<true>(__first, __last, __val, __base); else - __valid = __detail::__from_chars_alnum(__first, __last, __val, __base); + __valid = __detail::__from_chars_alnum<false>(__first, __last, __val, __base); if (__builtin_expect(__first == __start, 0)) __res.ec = errc::invalid_argument; diff --git a/libstdc++-v3/include/std/expected b/libstdc++-v3/include/std/expected index 39d07cd..3446d6d 100644 --- a/libstdc++-v3/include/std/expected +++ b/libstdc++-v3/include/std/expected @@ -95,7 +95,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION class bad_expected_access : public bad_expected_access<void> { public: explicit - bad_expected_access(_Er __e) : _M_val(__e) { } + bad_expected_access(_Er __e) : _M_val(std::move(__e)) { } // XXX const char* what() const noexcept override; @@ -966,8 +966,8 @@ namespace __expected } template<typename _Up, typename _Gr> - requires is_void_v<_Tp> - && is_constructible_v<_Er, const _Gr&> + requires is_void_v<_Up> + && is_constructible_v<_Er, _Gr> && (!__cons_from_expected<_Up, _Gr>) constexpr explicit(!is_convertible_v<_Gr, _Er>) expected(expected<_Up, _Gr>&& __x) @@ -1104,6 +1104,7 @@ namespace __expected std::construct_at(__builtin_addressof(_M_unex), std::move(__x._M_unex)); // might throw std::destroy_at(__builtin_addressof(__x._M_unex)); + _M_has_value = false; __x._M_has_value = true; } } @@ -1115,6 +1116,7 @@ namespace __expected std::move(_M_unex)); // might throw std::destroy_at(__builtin_addressof(_M_unex)); _M_has_value = true; + __x._M_has_value = false; } else { diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future index cba40dc..a9268ca 100644 --- a/libstdc++-v3/include/std/future +++ b/libstdc++-v3/include/std/future @@ -1622,6 +1622,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } }; + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3117. Missing packaged_task deduction guides +#if __cpp_deduction_guides >= 201606 + template<typename _Res, typename... _ArgTypes> + packaged_task(_Res(*)(_ArgTypes...)) -> packaged_task<_Res(_ArgTypes...)>; + + template<typename _Fun, typename _Signature = typename + __function_guide_helper<decltype(&_Fun::operator())>::type> + packaged_task(_Fun) -> packaged_task<_Signature>; +#endif + /// swap template<typename _Res, typename... _ArgTypes> inline void diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional index d6aece4..791ef6f 100644 --- a/libstdc++-v3/include/std/optional +++ b/libstdc++-v3/include/std/optional @@ -60,10 +60,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @{ */ -#if __cplusplus == 201703L -# define __cpp_lib_optional 201606L -#else +#if __cplusplus > 202002L && __cpp_lib_concepts +# define __cpp_lib_optional 202110L +#elif __cplusplus >= 202002L # define __cpp_lib_optional 202106L +#else +# define __cpp_lib_optional 201606L #endif template<typename _Tp> @@ -1043,9 +1045,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return static_cast<_Tp>(std::forward<_Up>(__u)); } -#if __cplusplus > 202002L && __cpp_lib_concepts -#define __cpp_lib_monadic_optional 202110L - +#if __cpp_lib_optional >= 202110L // [optional.monadic] template<typename _Fn> diff --git a/libstdc++-v3/include/std/stacktrace b/libstdc++-v3/include/std/stacktrace index 623f44b..98ce923 100644 --- a/libstdc++-v3/include/std/stacktrace +++ b/libstdc++-v3/include/std/stacktrace @@ -30,12 +30,14 @@ #if __cplusplus > 202002L && _GLIBCXX_HAVE_STACKTRACE #include <compare> +#include <new> #include <string> #include <sstream> #include <bits/stl_algobase.h> #include <bits/stl_algo.h> #include <bits/stl_iterator.h> #include <bits/stl_uninitialized.h> +#include <ext/numeric_traits.h> #include <cxxabi.h> struct __glibcxx_backtrace_state; @@ -232,43 +234,75 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // [stacktrace.basic.ctor], creation and assignment + [[__gnu__::__noinline__]] static basic_stacktrace current(const allocator_type& __alloc = allocator_type()) noexcept { - return current(0, size_type(-1), __alloc); + basic_stacktrace __ret(__alloc); + if (auto __cb = __ret._M_prepare()) [[likely]] + { + auto __state = stacktrace_entry::_S_init(); + if (__glibcxx_backtrace_simple(__state, 1, __cb, nullptr, + std::__addressof(__ret))) + __ret._M_clear(); + } + return __ret; } + [[__gnu__::__noinline__]] static basic_stacktrace current(size_type __skip, const allocator_type& __alloc = allocator_type()) noexcept { - return current(__skip, size_type(-1), __alloc); + basic_stacktrace __ret(__alloc); + if (__skip >= __INT_MAX__) [[unlikely]] + return __ret; + if (auto __cb = __ret._M_prepare()) [[likely]] + { + auto __state = stacktrace_entry::_S_init(); + if (__glibcxx_backtrace_simple(__state, __skip + 1, __cb, nullptr, + std::__addressof(__ret))) + __ret._M_clear(); + } + + return __ret; } + [[__gnu__::__noinline__]] static basic_stacktrace current(size_type __skip, size_type __max_depth, const allocator_type& __alloc = allocator_type()) noexcept { __glibcxx_assert(__skip <= (size_type(-1) - __max_depth)); - auto __state = stacktrace_entry::_S_init(); basic_stacktrace __ret(__alloc); - if (!__ret._M_reserve(std::min<int>(__max_depth, 64))) + if (__max_depth == 0) [[unlikely]] return __ret; - - auto __cb = [](void* __data, uintptr_t __pc) { - auto& __s = *static_cast<basic_stacktrace*>(__data); - stacktrace_entry __f; - __f._M_pc = __pc; - if (__s._M_push_back(__f)) - return 0; - return 1; - }; - - if (__glibcxx_backtrace_simple(__state, __skip, +__cb, nullptr, - std::__addressof(__ret))) + if (__skip >= __INT_MAX__) [[unlikely]] + return __ret; + if (auto __cb = __ret._M_prepare(__max_depth)) [[likely]] { - __ret._M_clear(); + auto __state = stacktrace_entry::_S_init(); + int __err = __glibcxx_backtrace_simple(__state, __skip + 1, __cb, + nullptr, + std::__addressof(__ret)); + if (__err < 0) + __ret._M_clear(); + else if (__ret.size() > __max_depth) + { + __ret._M_impl._M_resize(__max_depth, __ret._M_alloc); + + if (__ret._M_impl._M_capacity / 2 >= __max_depth) + { + // shrink to fit + _Impl __tmp = __ret._M_impl._M_clone(__ret._M_alloc); + if (__tmp._M_capacity) + { + __ret._M_clear(); + __ret._M_impl = __tmp; + } + } + } } return __ret; } @@ -283,7 +317,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { } basic_stacktrace(const basic_stacktrace& __other) noexcept - : basic_stacktrace(__other, __other._M_alloc) + : basic_stacktrace(__other, + _AllocTraits::select_on_container_copy_construction(__other._M_alloc)) { } basic_stacktrace(basic_stacktrace&& __other) noexcept @@ -296,11 +331,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : _M_alloc(__alloc) { if (const auto __s = __other._M_impl._M_size) - if (auto __f = _M_impl._M_allocate(_M_alloc, __s)) - { - std::uninitialized_copy_n(__other.begin(), __s, __f); - _M_impl._M_size = __s; - } + _M_impl = __other._M_impl._M_clone(_M_alloc); } basic_stacktrace(basic_stacktrace&& __other, @@ -308,13 +339,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : _M_alloc(__alloc) { if constexpr (_Allocator::is_always_equal::value) - { - _M_impl = std::__exchange(__other._M_impl, {}); - } + _M_impl = std::__exchange(__other._M_impl, {}); else if (_M_alloc == __other._M_alloc) - { - _M_impl = std::__exchange(__other._M_impl, {}); - } + _M_impl = std::__exchange(__other._M_impl, {}); + else if (const auto __s = __other._M_impl._M_size) + _M_impl = __other._M_impl._M_clone(_M_alloc); } basic_stacktrace& @@ -343,25 +372,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Need to allocate new storage. _M_clear(); - // Use the allocator we will have after this function returns. - auto& __alloc = __pocca ? __other._M_alloc : _M_alloc; - if (auto __f = _M_impl._M_allocate(__alloc, __s)) - { - std::uninitialized_copy_n(__other.begin(), __s, __f); - _M_impl._M_size = __s; - } + if constexpr (__pocca) + _M_alloc = __other._M_alloc; + + _M_impl = __other._M_impl._M_clone(_M_alloc); } else { - // Current storage is large enough and can be freed by whichever - // allocator we will have after this function returns. - auto __to = std::copy_n(__other.begin(), __s, begin()); - std::destroy(__to, end()); - _M_impl._M_size = __s; - } + // Current storage is large enough. + _M_impl._M_resize(0, _M_alloc); + _M_impl._M_assign(__other._M_impl, _M_alloc); - if constexpr (__pocca) - _M_alloc = __other._M_alloc; + if constexpr (__pocca) + _M_alloc = __other._M_alloc; + } return *this; } @@ -379,31 +403,28 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION std::swap(_M_impl, __other._M_impl); else if (_M_alloc == __other._M_alloc) std::swap(_M_impl, __other._M_impl); - else + else if constexpr (__pocma) { - const auto __s = __other.size(); + // Free current storage and take ownership of __other's storage. + _M_clear(); + _M_impl = std::__exchange(__other._M_impl, {}); + } + else // Allocators are unequal and don't propagate. + { + const size_type __s = __other.size(); - if constexpr (__pocma || _M_impl._M_capacity < __s) + if (_M_impl._M_capacity < __s) { // Need to allocate new storage. _M_clear(); - - // Use the allocator we will have after this function returns. - auto& __alloc = __pocma ? __other._M_alloc : _M_alloc; - if (auto __f = _M_impl._M_allocate(__alloc, __s)) - std::uninitialized_copy_n(__other.begin(), __s, __f); + _M_impl = __other._M_impl._M_clone(_M_alloc); } else { // Current storage is large enough. - auto __first = __other.begin(); - auto __mid = __first + std::min(__s, _M_impl._M_size); - auto __last = __other.end(); - auto __to = std::copy(__first, __mid, begin()); - __to = std::uninitialized_copy(__mid, __last, __to); - std::destroy(__to, end()); + _M_impl._M_resize(0, _M_alloc); + _M_impl._M_assign(__other._M_impl, _M_alloc); } - _M_impl._M_size = __s; } if constexpr (__pocma) @@ -443,7 +464,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION [[nodiscard]] bool empty() const noexcept { return size() == 0; } size_type size() const noexcept { return _M_impl._M_size; } - size_type max_size() const noexcept { return size_type(-1); } + + size_type + max_size() const noexcept + { return _Impl::_S_max_size(_M_impl._M_alloc); } const_reference operator[](size_type __n) const noexcept @@ -482,19 +506,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void swap(basic_stacktrace& __other) noexcept { - std::swap(_M_impl. __other._M_impl); + std::swap(_M_impl, __other._M_impl); if constexpr (_AllocTraits::propagate_on_container_swap::value) std::swap(_M_alloc, __other._M_alloc); + else if constexpr (!_AllocTraits::is_always_equal::value) + { + __glibcxx_assert(_M_alloc == __other._M_alloc); + } } private: bool - _M_reserve(size_type __n) noexcept - { - return _M_impl._M_allocate(_M_alloc, __n) != nullptr; - } - - bool _M_push_back(const value_type& __x) noexcept { return _M_impl._M_push_back(_M_alloc, __x); @@ -503,10 +525,43 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void _M_clear() noexcept { - _M_impl._M_destroy(); + _M_impl._M_resize(0, _M_alloc); _M_impl._M_deallocate(_M_alloc); } + // Precondition: __max_depth != 0 + auto + _M_prepare(size_type __max_depth = -1) noexcept + -> int (*) (void*, uintptr_t) + { + auto __cb = +[](void* __data, uintptr_t __pc) { + auto& __s = *static_cast<basic_stacktrace*>(__data); + stacktrace_entry __f; + __f._M_pc = __pc; + if (__s._M_push_back(__f)) [[likely]] + return 0; // continue tracing + return -1; // stop tracing due to error + }; + + if (__max_depth > 128) + __max_depth = 64; // soft limit, _M_push_back will reallocate + else + __cb = [](void* __data, uintptr_t __pc) { + auto& __s = *static_cast<basic_stacktrace*>(__data); + stacktrace_entry __f; + __f._M_pc = __pc; + if (__s.size() == __s._M_impl._M_capacity) [[unlikely]] + return 1; // stop tracing due to reaching max depth + if (__s._M_push_back(__f)) [[likely]] + return 0; // continue tracing + return -1; // stop tracing due to error + }; + + if (_M_impl._M_allocate(_M_alloc, __max_depth)) [[likely]] + return __cb; + return nullptr; + } + struct _Impl { using pointer = typename _AllocTraits::pointer; @@ -515,21 +570,51 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION size_type _M_size = 0; size_type _M_capacity = 0; - // Precondition: _M_frames == nullptr + static size_type + _S_max_size(const allocator_type& __alloc) noexcept + { + const size_t __size_max = __gnu_cxx::__int_traits<size_type>::__max; + const size_t __alloc_max = _AllocTraits::max_size(__alloc); + return std::min(__size_max, __alloc_max); + } + +#if __has_builtin(__builtin_operator_new) >= 201802L +# define _GLIBCXX_OPERATOR_NEW __builtin_operator_new +# define _GLIBCXX_OPERATOR_DELETE __builtin_operator_delete +#else +# define _GLIBCXX_OPERATOR_NEW ::operator new +# define _GLIBCXX_OPERATOR_DELETE ::operator delete +#endif + + // Precondition: _M_frames == nullptr && __n != 0 pointer _M_allocate(allocator_type& __alloc, size_type __n) noexcept { - __try + if (__n <= _S_max_size(__alloc)) [[likely]] { - _M_frames = __n ? __alloc.allocate(__n) : nullptr; + if constexpr (is_same_v<allocator_type, allocator<value_type>>) + { + __n *= sizeof(value_type); + void* const __p = _GLIBCXX_OPERATOR_NEW (__n, nothrow_t{}); + if (__p == nullptr) [[unlikely]] + return nullptr; + _M_frames = static_cast<pointer>(__p); + } + else + { + __try + { + _M_frames = __alloc.allocate(__n); + } + __catch (const std::bad_alloc&) + { + return nullptr; + } + } _M_capacity = __n; + return _M_frames; } - __catch (...) - { - _M_frames = nullptr; - _M_capacity = 0; - } - return _M_frames; + return nullptr; } void @@ -537,38 +622,72 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { if (_M_capacity) { - __alloc.deallocate(_M_frames, _M_capacity); + if constexpr (is_same_v<allocator_type, allocator<value_type>>) + _GLIBCXX_OPERATOR_DELETE (static_cast<void*>(_M_frames), + _M_capacity * sizeof(value_type)); + else + __alloc.deallocate(_M_frames, _M_capacity); _M_frames = nullptr; _M_capacity = 0; } } +#undef _GLIBCXX_OPERATOR_DELETE +#undef _GLIBCXX_OPERATOR_NEW + + // Precondition: __n <= _M_size void - _M_destroy() noexcept + _M_resize(size_type __n, allocator_type& __alloc) noexcept { - std::destroy_n(_M_frames, _M_size); - _M_size = 0; + for (size_type __i = __n; __i < _M_size; ++__i) + _AllocTraits::destroy(__alloc, &_M_frames[__i]); + _M_size = __n; } bool _M_push_back(allocator_type& __alloc, const stacktrace_entry& __f) noexcept { - if (_M_size == _M_capacity) + if (_M_size == _M_capacity) [[unlikely]] { - _Impl __tmp; - if (auto __f = __tmp._M_allocate(__alloc, _M_capacity * 2)) - std::uninitialized_copy_n(_M_frames, _M_size, __f); - else + _Impl __tmp = _M_xclone(_M_capacity ? _M_capacity : 8, __alloc); + if (!__tmp._M_capacity) [[unlikely]] return false; + _M_resize(0, __alloc); _M_deallocate(__alloc); - std::swap(*this, __tmp); + *this = __tmp; } stacktrace_entry* __addr = std::to_address(_M_frames + _M_size++); - std::construct_at(__addr, __f); + _AllocTraits::construct(__alloc, __addr, __f); return true; } + // Precondition: _M_size != 0 + _Impl + _M_clone(allocator_type& __alloc) const noexcept + { + return _M_xclone(_M_size, __alloc); + } + + // Precondition: _M_size != 0 || __extra != 0 + _Impl + _M_xclone(size_type __extra, allocator_type& __alloc) const noexcept + { + _Impl __i; + if (__i._M_allocate(__alloc, _M_size + __extra)) [[likely]] + __i._M_assign(*this, __alloc); + return __i; + } + + // Precondition: _M_capacity >= __other._M_size + void + _M_assign(const _Impl& __other, allocator_type& __alloc) noexcept + { + std::__uninitialized_copy_a(__other._M_frames, + __other._M_frames + __other._M_size, + _M_frames, __alloc); + _M_size = __other._M_size; + } }; [[no_unique_address]] allocator_type _M_alloc{}; diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version index 51f2110..22280e1 100644 --- a/libstdc++-v3/include/std/version +++ b/libstdc++-v3/include/std/version @@ -257,6 +257,7 @@ #define __cpp_lib_constexpr_string_view 201811L #define __cpp_lib_constexpr_tuple 201811L #define __cpp_lib_constexpr_utility 201811L +#define __cpp_lib_constexpr_vector 201907L #define __cpp_lib_erase_if 202002L #define __cpp_lib_generic_unordered_lookup 201811L #define __cpp_lib_interpolate 201902L @@ -306,13 +307,18 @@ #if _GLIBCXX_HOSTED #define __cpp_lib_adaptor_iterator_pair_constructor 202106L +#if __cpp_constexpr_dynamic_alloc +# undef __cpp_lib_constexpr_memory +# define __cpp_lib_constexpr_memory 202202L +#endif #if __cpp_concepts >= 202002L # define __cpp_lib_expected 202202L #endif #define __cpp_lib_invoke_r 202106L #define __cpp_lib_ios_noreplace 202200L #if __cpp_lib_concepts -# define __cpp_lib_monadic_optional 202110L +# undef __cpp_lib_optional +# define __cpp_lib_optional 202110L #endif #define __cpp_lib_move_only_function 202110L #if __cpp_lib_span @@ -321,6 +327,7 @@ #if _GLIBCXX_HAVE_STACKTRACE # define __cpp_lib_stacktrace 202011L #endif +#define __cpp_lib_stdatomic_h 202011L #define __cpp_lib_string_contains 202011L #if _GLIBCXX_USE_CXX11_ABI // Only supported with cxx11-abi # define __cpp_lib_string_resize_and_overwrite 202110L diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py index f7a7f99..0bd793c 100644 --- a/libstdc++-v3/python/libstdcxx/v6/printers.py +++ b/libstdc++-v3/python/libstdcxx/v6/printers.py @@ -218,7 +218,7 @@ class SmartPtrIterator(Iterator): return ('get()', val) class SharedPointerPrinter: - "Print a shared_ptr or weak_ptr" + "Print a shared_ptr, weak_ptr, atomic<shared_ptr>, or atomic<weak_ptr>" def __init__ (self, typename, val): self.typename = strip_versioned_namespace(typename) @@ -228,9 +228,21 @@ class SharedPointerPrinter: def children (self): return SmartPtrIterator(self.pointer) + # Return the _Sp_counted_base<>* that holds the refcounts. + def _get_refcounts (self): + if self.typename == 'std::atomic': + # A tagged pointer is stored as uintptr_t. + ptr_val = self.val['_M_refcount']['_M_val']['_M_i'] + ptr_val = ptr_val - (ptr_val % 2) # clear lock bit + ptr_type = find_type(self.val['_M_refcount'].type, 'pointer') + return ptr_val.cast(ptr_type) + return self.val['_M_refcount']['_M_pi'] + def to_string (self): state = 'empty' - refcounts = self.val['_M_refcount']['_M_pi'] + refcounts = self._get_refcounts() + targ = self.val.type.template_argument(0) + if refcounts != 0: usecount = refcounts['_M_use_count'] weakcount = refcounts['_M_weak_count'] @@ -238,7 +250,7 @@ class SharedPointerPrinter: state = 'expired, weak count %d' % weakcount else: state = 'use count %d, weak count %d' % (usecount, weakcount - 1) - return '%s<%s> (%s)' % (self.typename, str(self.val.type.template_argument(0)), state) + return '%s<%s> (%s)' % (self.typename, str(targ), state) def _tuple_impl_get(val): "Return the tuple element stored in a _Tuple_impl<N, T> base class." @@ -1654,6 +1666,94 @@ class StdRegexStatePrinter: s = "{}, {}={}".format(s, v, self.val['_M_' + v]) return "{%s}" % (s) +class StdSpanPrinter: + "Print a std::span" + + class iterator(Iterator): + def __init__(self, begin, size): + self.count = 0 + self.begin = begin + self.size = size + + def __iter__ (self): + return self + + def __next__ (self): + if self.count == self.size: + raise StopIteration + + count = self.count + self.count = self.count + 1 + return '[%d]' % count, (self.begin + count).dereference() + + def __init__(self, typename, val): + self.typename = typename + self.val = val + if val.type.template_argument(1) == gdb.parse_and_eval('static_cast<std::size_t>(-1)'): + self.size = val['_M_extent']['_M_extent_value'] + else: + self.size = val.type.template_argument(1) + + def to_string(self): + return '%s of length %d' % (self.typename, self.size) + + def children(self): + return self.iterator(self.val['_M_ptr'], self.size) + + def display_hint(self): + return 'array' + +class StdInitializerListPrinter: + "Print a std::initializer_list" + + def __init__(self, typename, val): + self.typename = typename + self.val = val + self.size = val['_M_len'] + + def to_string(self): + return '%s of length %d' % (self.typename, self.size) + + def children(self): + return StdSpanPrinter.iterator(self.val['_M_array'], self.size) + + def display_hint(self): + return 'array' + +class StdAtomicPrinter: + "Print a std:atomic" + + def __init__(self, typename, val): + self.typename = typename + self.val = val + self.shptr_printer = None + self.value_type = self.val.type.template_argument(0) + if self.value_type.tag is not None: + typ = strip_versioned_namespace(self.value_type.tag) + if typ.startswith('std::shared_ptr<') or typ.startswith('std::weak_ptr<'): + impl = val['_M_impl'] + self.shptr_printer = SharedPointerPrinter(typename, impl) + self.children = self._shptr_children + + def _shptr_children(self): + return SmartPtrIterator(self.shptr_printer.pointer) + + def to_string(self): + if self.shptr_printer is not None: + return self.shptr_printer.to_string() + + if self.value_type.code == gdb.TYPE_CODE_INT: + val = self.val['_M_i'] + elif self.value_type.code == gdb.TYPE_CODE_FLT: + val = self.val['_M_fp'] + elif self.value_type.code == gdb.TYPE_CODE_PTR: + val = self.val['_M_b']['_M_p'] + elif self.value_type.code == gdb.TYPE_CODE_BOOL: + val = self.val['_M_base']['_M_i'] + else: + val = self.val['_M_i'] + return '%s<%s> = { %s }' % (self.typename, str(self.value_type), val) + # A "regular expression" printer which conforms to the # "SubPrettyPrinter" protocol from gdb.printing. class RxPrinter(object): @@ -2119,6 +2219,10 @@ def build_libstdcxx_dictionary (): libstdcxx_printer.add_version('std::tr1::', 'unordered_multiset', Tr1UnorderedSetPrinter) + libstdcxx_printer.add_version('std::', 'initializer_list', + StdInitializerListPrinter) + libstdcxx_printer.add_version('std::', 'atomic', StdAtomicPrinter) + # std::regex components libstdcxx_printer.add_version('std::__detail::', '_State', StdRegexStatePrinter) @@ -2170,6 +2274,7 @@ def build_libstdcxx_dictionary (): libstdcxx_printer.add_version('std::', 'partial_ordering', StdCmpCatPrinter) libstdcxx_printer.add_version('std::', 'weak_ordering', StdCmpCatPrinter) libstdcxx_printer.add_version('std::', 'strong_ordering', StdCmpCatPrinter) + libstdcxx_printer.add_version('std::', 'span', StdSpanPrinter) # Extensions. libstdcxx_printer.add_version('__gnu_cxx::', 'slist', StdSlistPrinter) diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index 18f5763..9c3f4ac 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -278,7 +278,9 @@ CXXLINK = \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXX) \ $(VTV_CXXLINKFLAGS) \ - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) \ + $(LTLDFLAGS) $(LTLIBICONV) \ + -o $@ # Symbol versioning for shared libraries. if ENABLE_SYMVERS diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index eeafb89..4a06f6c 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -643,7 +643,9 @@ CXXLINK = \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXX) \ $(VTV_CXXLINKFLAGS) \ - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) \ + $(LTLDFLAGS) $(LTLIBICONV) \ + -o $@ @ENABLE_SYMVERS_TRUE@CLEANFILES = libstdc++-symbols.ver $(version_dep) @ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist diff --git a/libstdc++-v3/src/c++17/floating_from_chars.cc b/libstdc++-v3/src/c++17/floating_from_chars.cc index 4aa2483..13de1e3 100644 --- a/libstdc++-v3/src/c++17/floating_from_chars.cc +++ b/libstdc++-v3/src/c++17/floating_from_chars.cc @@ -30,6 +30,7 @@ // Prefer to use std::pmr::string if possible, which requires the cxx11 ABI. #define _GLIBCXX_USE_CXX11_ABI 1 +#include <array> #include <charconv> #include <bit> #include <string> @@ -101,7 +102,6 @@ namespace return m_buf + std::__exchange(m_bytes, m_bytes + bytes); __glibcxx_assert(m_ptr == nullptr); - __glibcxx_assert(alignment != 1); m_ptr = operator new(bytes); m_bytes = bytes; @@ -451,30 +451,34 @@ namespace #endif // USE_STRTOD_FOR_FROM_CHARS #if _GLIBCXX_FLOAT_IS_IEEE_BINARY32 && _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 - // If the given ASCII character represents a hexit, return that hexit. - // Otherwise return -1. - int - ascii_to_hexit(char ch) - { - if (ch >= '0' && ch <= '9') - return ch - '0'; - if (ch >= 'a' && ch <= 'f') - return ch - 'a' + 10; - if (ch >= 'A' && ch <= 'F') - return ch - 'A' + 10; - return -1; - } - // Return true iff [FIRST,LAST) begins with PREFIX, ignoring case. + // PREFIX is assumed to not contain any uppercase letters. bool starts_with_ci(const char* first, const char* last, string_view prefix) { __glibcxx_requires_valid_range(first, last); - for (char ch : prefix) + // A lookup table that maps uppercase letters to lowercase and + // is otherwise the identity mapping. + static constexpr auto upper_to_lower_table = [] { + constexpr unsigned char lower_letters[27] = "abcdefghijklmnopqrstuvwxyz"; + constexpr unsigned char upper_letters[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + std::array<unsigned char, (1u << __CHAR_BIT__)> table = {}; + for (unsigned i = 0; i < table.size(); ++i) + table[i] = i; + for (unsigned i = 0; i < 26; ++i) + table[upper_letters[i]] = lower_letters[i]; + return table; + }(); + + if (last - first < static_cast<ptrdiff_t>(prefix.length())) + return false; + + for (const unsigned char pch : prefix) { - __glibcxx_assert(ch >= 'a' && ch <= 'z'); - if (first == last || (*first != ch && *first != ch - 32)) + // __glibcxx_assert(pch == upper_to_lower_table[pch]); + const unsigned char ch = *first; + if (ch != pch && upper_to_lower_table[ch] != pch) return false; ++first; } @@ -550,10 +554,8 @@ namespace ++first; break; } - else if ((ch >= '0' && ch <= '9') - || (ch >= 'a' && ch <= 'z') - || (ch >= 'A' && ch <= 'Z') - || ch == '_') + else if (ch == '_' + || __detail::__from_chars_alnum_to_val(ch) < 127) continue; else { @@ -614,8 +616,8 @@ namespace continue; } - int hexit = ascii_to_hexit(ch); - if (hexit == -1) + int hexit = __detail::__from_chars_alnum_to_val(ch); + if (hexit >= 16) break; seen_hexit = true; diff --git a/libstdc++-v3/src/c++17/floating_to_chars.cc b/libstdc++-v3/src/c++17/floating_to_chars.cc index 66bd457..4599d68 100644 --- a/libstdc++-v3/src/c++17/floating_to_chars.cc +++ b/libstdc++-v3/src/c++17/floating_to_chars.cc @@ -22,9 +22,6 @@ // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see // <http://www.gnu.org/licenses/>. -// Activate __glibcxx_assert within this file to shake out any bugs. -#define _GLIBCXX_ASSERTIONS 1 - #include <charconv> #include <bit> @@ -1114,6 +1111,7 @@ template<typename T> } __glibcxx_assert(false); + __builtin_unreachable(); } template<typename T> @@ -1202,6 +1200,8 @@ template<typename T> effective_precision = min(precision, max_eff_scientific_precision); output_specifier = "%.*Lg"; } + else + __builtin_unreachable(); const int excess_precision = (fmt != chars_format::general ? precision - effective_precision : 0); @@ -1234,6 +1234,8 @@ template<typename T> output_length_upper_bound = sign + strlen("0"); output_length_upper_bound += sizeof(radix) + effective_precision; } + else + __builtin_unreachable(); // Do the sprintf into the local buffer. char buffer[output_length_upper_bound+1]; @@ -1570,6 +1572,7 @@ template<typename T> } __glibcxx_assert(false); + __builtin_unreachable(); } // Define the overloads for float. diff --git a/libstdc++-v3/src/c++17/fs_ops.cc b/libstdc++-v3/src/c++17/fs_ops.cc index 4552a73..435368f 100644 --- a/libstdc++-v3/src/c++17/fs_ops.cc +++ b/libstdc++-v3/src/c++17/fs_ops.cc @@ -408,8 +408,12 @@ fs::copy(const path& from, const path& to, copy_options options, // set an unused bit in options to disable further recursion if (!is_set(options, copy_options::recursive)) options |= static_cast<copy_options>(4096); - for (const directory_entry& x : directory_iterator(from)) - copy(x.path(), to/x.path().filename(), options, ec); + for (const directory_entry& x : directory_iterator(from, ec)) + { + copy(x.path(), to/x.path().filename(), options, ec); + if (ec) + return; + } } // _GLIBCXX_RESOLVE_LIB_DEFECTS // 2683. filesystem::copy() says "no effects" diff --git a/libstdc++-v3/src/filesystem/ops.cc b/libstdc++-v3/src/filesystem/ops.cc index e2a2cef..98ddff5 100644 --- a/libstdc++-v3/src/filesystem/ops.cc +++ b/libstdc++-v3/src/filesystem/ops.cc @@ -350,8 +350,12 @@ fs::copy(const path& from, const path& to, copy_options options, // set an unused bit in options to disable further recursion if (!is_set(options, copy_options::recursive)) options |= static_cast<copy_options>(4096); - for (const directory_entry& x : directory_iterator(from)) - copy(x.path(), to/x.path().filename(), options, ec); + for (const directory_entry& x : directory_iterator(from, ec)) + { + copy(x.path(), to/x.path().filename(), options, ec); + if (ec) + return; + } } // _GLIBCXX_RESOLVE_LIB_DEFECTS // 2683. filesystem::copy() says "no effects" diff --git a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/current.cc b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/current.cc new file mode 100644 index 0000000..184e23b --- /dev/null +++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/current.cc @@ -0,0 +1,86 @@ +// { dg-options "-std=gnu++23 -lstdc++_libbacktrace" } +// { dg-do run { target c++23 } } +// { dg-require-effective-target stacktrace } + +#include <stacktrace> +#include <memory> +#include <new> +#include "testsuite_hooks.h" + +template<typename T> +struct Allocator +{ + using value_type = T; + using propagate_on_container_move_assignment = std::true_type; + + explicit + Allocator(unsigned max = -1u) : max_size(max) { } + + template<typename U> + Allocator(const Allocator<U>& a) : max_size(a.max_size) { } + + T* + allocate(std::size_t n) + { + if (n > max_size) + throw std::bad_alloc(); + + return std::allocator<T>().allocate(n); + } + + void + deallocate(T* p, std::size_t n) noexcept + { + std::allocator<T>().deallocate(p, n); + } + + bool operator==(const Allocator&) const = default; + +private: + unsigned max_size; +}; + +[[gnu::optimize("O0")]] +void +test_max_depth() +{ + using Stacktrace = std::basic_stacktrace<Allocator<std::stacktrace_entry>>; + using Alloc = typename Stacktrace::allocator_type; + + [] { [] { [] { [] { [] { [] { [] { [] { + auto t = Stacktrace::current(); + VERIFY( ! t.empty() ); + const auto n = t.size(); // total number of frames + t = Stacktrace::current(8); + VERIFY( t.size() == (n - 8) ); + t = Stacktrace::current(n); + VERIFY( t.empty() ); + t = Stacktrace::current(n - 2); + VERIFY( t.size() == 2 ); + t = Stacktrace::current(2, 6); + VERIFY( t.size() == 6 ); + t = Stacktrace::current(n - 2, 6); + VERIFY( t.size() == 2 ); + + t = Stacktrace::current(Alloc(3)); + // Full stacktrace is larger than 3 frames, so allocation fails: + VERIFY( t.empty() ); + t = Stacktrace::current(3, Alloc(2)); + // Stacktrace still too large after skipping 3 frames, so allocation fails: + VERIFY( t.empty() ); + t = Stacktrace::current(0, 3, Alloc(3)); + // Capacity for exactly 3 frames is allocated: + VERIFY( t.size() == 3 ); + t = Stacktrace::current(2, 4, Alloc(4)); + // Capacity for exactly 4 frames is allocated: + VERIFY( t.size() == 4 ); + t = Stacktrace::current(0, 4, Alloc(3)); + // Capacity for exactly 4 frames is requested, but allocation fails: + VERIFY( t.empty() ); + }(); }(); }(); }(); }(); }(); }(); }(); +} + +int main() +{ + test_max_depth(); +} diff --git a/libstdc++-v3/testsuite/20_util/stacktrace/entry.cc b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/entry.cc index 0bbcabd..a222c42 100644 --- a/libstdc++-v3/testsuite/20_util/stacktrace/entry.cc +++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/entry.cc @@ -36,7 +36,8 @@ test_members() VERIFY( e1 != e2 ); VERIFY( e1.description() == e2.description() ); VERIFY( e1.source_file() == e2.source_file() ); - VERIFY( e1.source_line() != e2.source_line() ); + VERIFY( e1.source_line() == (__LINE__ - 5) ); + VERIFY( e2.source_line() == (__LINE__ - 5) ); std::stacktrace_entry e3 = []{ return std::stacktrace::current().at(0); @@ -44,10 +45,10 @@ test_members() VERIFY( e1 != e3 ); VERIFY( e1.description() != e3.description() ); VERIFY( e1.source_file() == e3.source_file() ); - VERIFY( e1.source_line() != e3.source_line() ); + VERIFY( e3.source_line() == (__LINE__ - 5) ); } int main() { - test_constexpr(); + test_members(); } diff --git a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/stacktrace.cc b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/stacktrace.cc new file mode 100644 index 0000000..8dfdf47 --- /dev/null +++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/stacktrace.cc @@ -0,0 +1,215 @@ +// { dg-options "-std=gnu++23 -lstdc++_libbacktrace" } +// { dg-do run { target c++23 } } +// { dg-require-effective-target stacktrace } + +#include <stacktrace> +#include "testsuite_allocator.h" + +static_assert( std::is_nothrow_default_constructible_v<std::stacktrace> ); +static_assert( std::is_copy_constructible_v<std::stacktrace> ); +static_assert( std::is_nothrow_move_constructible_v<std::stacktrace> ); +static_assert( std::is_copy_assignable_v<std::stacktrace> ); +static_assert( std::is_nothrow_move_assignable_v<std::stacktrace> ); +static_assert( std::is_nothrow_swappable_v<std::stacktrace> ); + +void +test_cons() +{ + { + using Stacktrace = std::stacktrace; + using Alloc = Stacktrace::allocator_type; + + Stacktrace s0; + VERIFY( s0.empty() ); + VERIFY( s0.size() == 0 ); + VERIFY( s0.begin() == s0.end() ); + + Stacktrace s1(Alloc{}); + VERIFY( s1.empty() ); + VERIFY( s1.size() == 0 ); + VERIFY( s1.begin() == s1.end() ); + + VERIFY( s0 == s1 ); + + Stacktrace s2(s0); + VERIFY( s2 == s0 ); + + const Stacktrace curr = Stacktrace::current(); + + Stacktrace s3(curr); + VERIFY( ! s3.empty() ); + VERIFY( s3.size() != 0 ); + VERIFY( s3.begin() != s3.end() ); + VERIFY( s3 != s0 ); + + Stacktrace s4(s3); + VERIFY( ! s4.empty() ); + VERIFY( s4.size() != 0 ); + VERIFY( s4.begin() != s4.end() ); + VERIFY( s4 == s3 ); + VERIFY( s4 != s0 ); + + Stacktrace s5(std::move(s3)); + VERIFY( ! s5.empty() ); + VERIFY( s5.size() != 0 ); + VERIFY( s5.begin() != s5.end() ); + VERIFY( s5 == s4 ); + VERIFY( s5 != s0 ); + VERIFY( s3 == s0 ); + + Stacktrace s6(s4, Alloc{}); + VERIFY( s6 == s4 ); + + Stacktrace s7(std::move(s6), Alloc{}); + VERIFY( s7 == s4 ); + } + + { + using Alloc = __gnu_test::uneq_allocator<std::stacktrace_entry>; + using Stacktrace = std::basic_stacktrace<Alloc>; + + Stacktrace s0; + VERIFY( s0.empty() ); + VERIFY( s0.size() == 0 ); + VERIFY( s0.begin() == s0.end() ); + + Stacktrace s1(Alloc{}); + VERIFY( s1.empty() ); + VERIFY( s1.size() == 0 ); + VERIFY( s1.begin() == s1.end() ); + + VERIFY( s0 == s1 ); + + Stacktrace s2(s0); + VERIFY( s2 == s0 ); + + const Stacktrace curr = Stacktrace::current(); + + Stacktrace s3(curr); + VERIFY( ! s3.empty() ); + VERIFY( s3.size() != 0 ); + VERIFY( s3.begin() != s3.end() ); + VERIFY( s3 != s0 ); + + Stacktrace s4(s3); + VERIFY( ! s4.empty() ); + VERIFY( s4.size() != 0 ); + VERIFY( s4.begin() != s4.end() ); + VERIFY( s4 == s3 ); + VERIFY( s4 != s0 ); + + Stacktrace s5(std::move(s3)); + VERIFY( ! s5.empty() ); + VERIFY( s5.size() != 0 ); + VERIFY( s5.begin() != s5.end() ); + VERIFY( s5 == s4 ); + VERIFY( s5 != s0 ); + VERIFY( s3 == s0 ); + + // TODO test allocator-extended copy/move + + // TODO test allocator propagation + } +} + + +void +test_assign() +{ + { + using Stacktrace = std::stacktrace; + + Stacktrace s0; + s0 = s0; + VERIFY( s0.empty() ); + s0 = std::move(s0); + VERIFY( s0.empty() ); + + Stacktrace s1 = Stacktrace::current(); + VERIFY( s1 != s0 ); + s0 = s1; + VERIFY( s0 == s1 ); + VERIFY( s0.at(0).source_line() == (__LINE__ - 4) ); + + s1 = Stacktrace::current(); + VERIFY( s1 != s0 ); + Stacktrace s2 = s0; + Stacktrace s3 = s1; + s0 = std::move(s1); + VERIFY( s0 == s3 ); + VERIFY( s1 == s2 ); // ISO C++: valid but unspecified; GCC: swapped. + } + + { + using Alloc = __gnu_test::uneq_allocator<std::stacktrace_entry>; + using Stacktrace = std::basic_stacktrace<Alloc>; + + Stacktrace s0; + s0 = s0; + VERIFY( s0.empty() ); + s0 = std::move(s0); + VERIFY( s0.empty() ); + + Stacktrace s1 = Stacktrace::current(); + VERIFY( s1 != s0 ); + s0 = s1; + VERIFY( s0 == s1 ); + + s1 = Stacktrace::current(Alloc(__LINE__)); + VERIFY( s1 != s0 ); + s0 = std::move(s1); + VERIFY( s0.at(0).source_line() == s0.get_allocator().get_personality() ); + VERIFY( s1.empty() ); // ISO C++: valid but unspecified; GCC: empty. + + Stacktrace s2 = Stacktrace::current(s0.get_allocator()); + Stacktrace s3 = s2; + s2 = std::move(s0); + VERIFY( s2.at(0).source_line() == s2.get_allocator().get_personality() ); + VERIFY( s0 == s3 ); // ISO C++: valid but unspecified, GCC: swapped. + } +} + +void +test_swap() +{ + { + using Stacktrace = std::stacktrace; + + Stacktrace s0; + Stacktrace s1 = Stacktrace::current(); + swap(s0, s1); + VERIFY( s1.empty() ); + VERIFY( ! s0.empty() ); + } + + { + using Alloc = __gnu_test::uneq_allocator<std::stacktrace_entry>; + using Stacktrace = std::basic_stacktrace<Alloc>; + + Stacktrace s0; + Stacktrace s1 = Stacktrace::current(); + swap(s0, s1); + VERIFY( s1.empty() ); + VERIFY( ! s0.empty() ); + + // TODO test allocator propagation + } +} + +void +test_pr105031() +{ + // PR libstdc++/105031 + // wrong constexpr if statement in operator=(basic_stacktrace&&) + using Alloc = __gnu_test::uneq_allocator<std::stacktrace_entry>; + std::basic_stacktrace<Alloc> s; + s = auto(s); +} + +int main() +{ + test_cons(); + test_assign(); + test_swap(); + test_pr105031(); +} diff --git a/libstdc++-v3/testsuite/20_util/stacktrace/synopsis.cc b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/synopsis.cc index 72582fa..72582fa 100644 --- a/libstdc++-v3/testsuite/20_util/stacktrace/synopsis.cc +++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/synopsis.cc diff --git a/libstdc++-v3/testsuite/20_util/stacktrace/version.cc b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/version.cc index ed466be..ed466be 100644 --- a/libstdc++-v3/testsuite/20_util/stacktrace/version.cc +++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/version.cc diff --git a/libstdc++-v3/testsuite/20_util/expected/bad.cc b/libstdc++-v3/testsuite/20_util/expected/bad.cc new file mode 100644 index 0000000..17bc6d6 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/expected/bad.cc @@ -0,0 +1,15 @@ +// { dg-options "-std=gnu++23" } +// { dg-do compile } + +#include <expected> + +struct E { + E() = default; + E(E&&) = default; +}; + +void +test_pr105146() +{ + std::bad_expected_access(E{}); +} diff --git a/libstdc++-v3/testsuite/20_util/expected/cons.cc b/libstdc++-v3/testsuite/20_util/expected/cons.cc index 1fe5b7b..6946858 100644 --- a/libstdc++-v3/testsuite/20_util/expected/cons.cc +++ b/libstdc++-v3/testsuite/20_util/expected/cons.cc @@ -162,6 +162,22 @@ test_copy() return true; } +constexpr bool +test_pr105153() +{ + struct E { + E(int&&) = delete; + E(const int&); + }; + + std::expected<void, E> e(std::expected<void, int>{}); + + static_assert( ! std::is_constructible_v<std::expected<void, int>, + std::expected<int, int>> ); + + return true; +} + int main() { test_default(); @@ -172,4 +188,6 @@ int main() static_assert( test_err() ); test_copy(); static_assert( test_copy() ); + test_pr105153(); + static_assert( test_pr105153() ); } diff --git a/libstdc++-v3/testsuite/20_util/expected/requirements.cc b/libstdc++-v3/testsuite/20_util/expected/requirements.cc index 485aa33..aae7059 100644 --- a/libstdc++-v3/testsuite/20_util/expected/requirements.cc +++ b/libstdc++-v3/testsuite/20_util/expected/requirements.cc @@ -124,6 +124,6 @@ static_assert( move_assignable< void, G > ); // QoI properties static_assert( sizeof(std::expected<char, unsigned char>) == 2 ); static_assert( sizeof(std::expected<void, char>) == 2 ); -static_assert( sizeof(std::expected<void*, char>) == 2 * __alignof(void*) ); +static_assert( sizeof(std::expected<void*, char>) == sizeof(void*) + __alignof(void*) ); static_assert( alignof(std::expected<void, char>) == 1 ); static_assert( alignof(std::expected<void*, char>) == alignof(void*) ); diff --git a/libstdc++-v3/testsuite/20_util/expected/swap.cc b/libstdc++-v3/testsuite/20_util/expected/swap.cc index 1b3b8c5..745db65 100644 --- a/libstdc++-v3/testsuite/20_util/expected/swap.cc +++ b/libstdc++-v3/testsuite/20_util/expected/swap.cc @@ -27,19 +27,19 @@ test_swap() VERIFY( e3.error() == 4 ); VERIFY( e4.error() == 3 ); - std::expected<int, int> v1(1), v2(2); - std::expected<int, int> v3(std::unexpect, 3), v4(std::unexpect, 4); + std::expected<void, int> v1, v2; + std::expected<void, int> v3(std::unexpect, 3), v4(std::unexpect, 4); swap(v1, v2); - VERIFY( v1.value() == 2 ); - VERIFY( v2.value() == 1 ); + VERIFY( v1.has_value() ); + VERIFY( v2.has_value() ); swap(v1, v3); VERIFY( ! v1.has_value() ); VERIFY( v1.error() == 3 ); - VERIFY( v3.value() == 2 ); + VERIFY( v3.has_value() ); swap(v1, v3); VERIFY( ! v3.has_value() ); - VERIFY( v1.value() == 2 ); + VERIFY( v1.has_value() ); VERIFY( v3.error() == 3 ); swap(v3, v4); VERIFY( ! v3.has_value() ); diff --git a/libstdc++-v3/testsuite/20_util/from_chars/pr105324.cc b/libstdc++-v3/testsuite/20_util/from_chars/pr105324.cc new file mode 100644 index 0000000..cecb17e --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/from_chars/pr105324.cc @@ -0,0 +1,14 @@ +// { dg-do run { target c++17 } } + +#include <charconv> +#include <string> + +int main() +{ + // PR libstdc++/105324 + // std::from_chars() assertion at floating_from_chars.cc:78 + std::string s(512, '1'); + s[1] = '.'; + long double d; + std::from_chars(s.data(), s.data() + s.size(), d); +} diff --git a/libstdc++-v3/testsuite/20_util/optional/monadic/and_then.cc b/libstdc++-v3/testsuite/20_util/optional/monadic/and_then.cc index 7cbec33..c7e54ef 100644 --- a/libstdc++-v3/testsuite/20_util/optional/monadic/and_then.cc +++ b/libstdc++-v3/testsuite/20_util/optional/monadic/and_then.cc @@ -3,9 +3,7 @@ #include <optional> -#ifndef __cpp_lib_monadic_optional -# error "Feature test macro for monadic optional is missing in <optional>" -#elif __cpp_lib_monadic_optional < 202110L +#if __cpp_lib_optional < 202110L # error "Feature test macro for monadic optional has wrong value in <optional>" #endif diff --git a/libstdc++-v3/testsuite/20_util/optional/monadic/version.cc b/libstdc++-v3/testsuite/20_util/optional/monadic/version.cc deleted file mode 100644 index 90b2a90..0000000 --- a/libstdc++-v3/testsuite/20_util/optional/monadic/version.cc +++ /dev/null @@ -1,10 +0,0 @@ -// { dg-options "-std=gnu++23" } -// { dg-do preprocess { target c++23 } } - -#include <version> - -#ifndef __cpp_lib_monadic_optional -# error "Feature test macro for monadic optional is missing in <version>" -#elif __cpp_lib_monadic_optional < 202110L -# error "Feature test macro for monadic optional has wrong value in <version>" -#endif diff --git a/libstdc++-v3/testsuite/20_util/optional/requirements.cc b/libstdc++-v3/testsuite/20_util/optional/requirements.cc index d6a8152..a56680a 100644 --- a/libstdc++-v3/testsuite/20_util/optional/requirements.cc +++ b/libstdc++-v3/testsuite/20_util/optional/requirements.cc @@ -23,8 +23,10 @@ # error "Feature test macro for optional is missing in <optional>" #elif __cpp_lib_optional < 201606L # error "Feature test macro for optional has wrong value in <optional>" -#elif __cplusplus >= 202002L && __cpp_lib_optional < 202106L +#elif __cplusplus == 202002L && __cpp_lib_optional != 202106L # error "Feature test macro for optional has wrong value for C++20 in <optional>" +#elif __cplusplus > 202002L && __cpp_lib_optional != 202110L +# error "Feature test macro for optional has wrong value for C++23 in <version>" #endif #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/20_util/optional/version.cc b/libstdc++-v3/testsuite/20_util/optional/version.cc index c18ecb8..2fd52f7 100644 --- a/libstdc++-v3/testsuite/20_util/optional/version.cc +++ b/libstdc++-v3/testsuite/20_util/optional/version.cc @@ -6,6 +6,8 @@ # error "Feature test macro for optional is missing in <version>" #elif __cplusplus == 201703L && __cpp_lib_optional != 201606L # error "Feature test macro for optional has wrong value for C++17 in <version>" -#elif __cplusplus >= 202002L && __cpp_lib_optional < 202106L +#elif __cplusplus == 202002L && __cpp_lib_optional != 202106L # error "Feature test macro for optional has wrong value for C++20 in <version>" +#elif __cplusplus > 202002L && __cpp_lib_optional != 202110L +# error "Feature test macro for optional has wrong value for C++23 in <version>" #endif diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc index 1f97224..a190274 100644 --- a/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc +++ b/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc @@ -18,6 +18,8 @@ // Check constexpr constructor. constinit std::atomic<std::shared_ptr<int>> a; +// LWG 3661. constinit atomic<shared_ptr<T>> a(nullptr); should work +constinit std::atomic<std::shared_ptr<int>> a2 = nullptr; void test_is_lock_free() diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/assign/constexpr.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/assign/constexpr.cc new file mode 100644 index 0000000..fb4acbda --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/unique_ptr/assign/constexpr.cc @@ -0,0 +1,48 @@ +// { dg-options "-std=gnu++23" } +// { dg-do compile { target c++23 } } + +#include <memory> +#include <testsuite_hooks.h> + +constexpr bool +test_move() +{ + std::unique_ptr<int> p1(new int(2)); + std::unique_ptr<int> p2; + p2 = std::move(p1); + VERIFY( *p2 == 2 ); + std::unique_ptr<int[]> a1(new int[]{0, 1, 2}); + std::unique_ptr<int[]> a2; + a2 = std::move(a1); + VERIFY( a2[2] == 2 ); + + return true; +} +static_assert( test_move() ); + +constexpr bool +test_convert() +{ + std::unique_ptr<int> p1(new int(2)); + std::unique_ptr<const int> p2; + p2 = std::move(p1); + VERIFY( *p2 == 2 ); + std::unique_ptr<int[]> a1(new int[]{0, 1, 2}); + std::unique_ptr<const int[]> a2; + a2 = std::move(a1); + VERIFY( a2[2] == 2 ); + + return true; +} +static_assert( test_convert() ); + +constexpr bool +test_null() +{ + std::unique_ptr<int> p(new int(2)); + p = nullptr; + VERIFY( !p ); + p = nullptr; + return true; +} +static_assert( test_null() ); diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/comparison/constexpr.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/comparison/constexpr.cc new file mode 100644 index 0000000..83e4f08 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/unique_ptr/comparison/constexpr.cc @@ -0,0 +1,73 @@ +// { dg-options "-std=gnu++23" } +// { dg-do compile { target c++23 } } + +#include <memory> +#include <testsuite_hooks.h> + +constexpr bool +test_eq() +{ + std::unique_ptr<int> p1, p2; + VERIFY( p1 == p2 ); + p1.reset(new int(1)); + VERIFY( p1 == p1 ); + VERIFY( p1 != p2 ); + struct null_deleter { constexpr void operator()(const void*) const { } }; + std::unique_ptr<const int[], null_deleter> p3(p1.get()); + VERIFY( p3 == p3 ); + VERIFY( p1 == p3 ); + VERIFY( p3 != p2 ); + + return true; +} +static_assert( test_eq() ); + +constexpr bool +test_rel() +{ + std::unique_ptr<int> p1, p2; + VERIFY( !(p1 < p2) ); + VERIFY( !(p1 > p2) ); + VERIFY( p1 <= p2 ); + VERIFY( p1 >= p2 ); + p1.reset(new int(1)); + VERIFY( p1 <= p1 ); + VERIFY( p1 >= p1 ); + VERIFY( p1 > p2 ); + VERIFY( p2 < p1 ); + VERIFY( p2 <= p1 ); + VERIFY( p1 >= p2 ); + struct null_deleter { constexpr void operator()(const void*) const { } }; + std::unique_ptr<const int[], null_deleter> p3(p1.get()); + VERIFY( p3 <= p3 ); + VERIFY( p3 >= p3 ); + VERIFY( p1 <= p3 ); + VERIFY( p3 > p2 ); + VERIFY( p3 >= p2 ); + VERIFY( p2 < p3 ); + VERIFY( p2 <= p3 ); + + return true; +} +static_assert( test_rel() ); + +constexpr bool +test_3way() +{ + std::unique_ptr<int> p1, p2; + VERIFY( (p1 <=> p1) == 0 ); + VERIFY( (p1 <=> p2) == 0 ); + p1.reset(new int(1)); + VERIFY( (p1 <=> p1) == 0 ); + VERIFY( (p1 <=> p2) > 0 ); + VERIFY( (p2 <=> p1) < 0 ); + struct null_deleter { constexpr void operator()(const void*) const { } }; + std::unique_ptr<const int[], null_deleter> p3(p1.get()); + VERIFY( (p3 <=> p3) == 0 ); + VERIFY( (p1 <=> p3) == 0 ); + VERIFY( (p3 <=> p2) > 0 ); + VERIFY( (p2 <=> p3) < 0 ); + + return true; +} +static_assert( test_3way() ); diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc new file mode 100644 index 0000000..243d80a --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc @@ -0,0 +1,85 @@ +// { dg-options "-std=gnu++23" } +// { dg-do compile { target c++23 } } + +#include <memory> + +#ifndef __cpp_lib_constexpr_memory +# error "Feature test macro for constexpr unique_ptr is missing in <memory>" +#elif __cpp_lib_constexpr_memory < 202202L +# error "Feature test macro for constexpr unique_ptr has wrong value in <memory>" +#endif + +#include <testsuite_hooks.h> + +constexpr bool +test_default() +{ + std::unique_ptr<int> p; + std::unique_ptr<int> np(nullptr); + VERIFY( p == np ); + + std::unique_ptr<int[]> a; + std::unique_ptr<int[]> na(nullptr); + VERIFY( a == na ); + + return true; +} +static_assert( test_default() ); + +constexpr bool +test_ptr() +{ + std::unique_ptr<int> p(new int(2)); + VERIFY( *p == 2 ); + std::unique_ptr<int[]> a(new int[]{0, 1, 2}); + VERIFY( a[2] == 2 ); + + return true; +} +static_assert( test_ptr() ); + +constexpr bool +test_del() +{ + const std::default_delete<int> pd; + std::unique_ptr<int> p1(new int(1), pd); + VERIFY( *p1 == 1 ); + std::unique_ptr<int> p2(new int(2), std::default_delete<int>{}); + VERIFY( *p2 == 2 ); + const std::default_delete<int[]> ad; + std::unique_ptr<int[]> a1(new int[]{3, 4}, ad); + VERIFY( a1[0] == 3 ); + std::unique_ptr<int[]> a2(new int[]{5, 6}, std::default_delete<int[]>{}); + VERIFY( a2[1] == 6 ); + + return true; +} +static_assert( test_del() ); + +constexpr bool +test_move() +{ + std::unique_ptr<int> p1(new int(2)); + std::unique_ptr<int> p2 = std::move(p1); + VERIFY( *p2 == 2 ); + std::unique_ptr<int[]> a1(new int[]{0, 1, 2}); + std::unique_ptr<int[]> a2 = std::move(a1); + VERIFY( a2[2] == 2 ); + + return true; +} +static_assert( test_move() ); + +constexpr bool +test_convert() +{ + std::unique_ptr<int> p1(new int(2)); + std::unique_ptr<const int> p2 = std::move(p1); + VERIFY( *p2 == 2 ); + std::unique_ptr<int[]> a1(new int[]{0, 1, 2}); + std::unique_ptr<const int[]> a2 = std::move(a1); + VERIFY( a2[2] == 2 ); + + return true; +} +static_assert( test_convert() ); diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/constexpr.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/constexpr.cc new file mode 100644 index 0000000..90d1119 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/constexpr.cc @@ -0,0 +1,34 @@ +// { dg-options "-std=gnu++23" } +// { dg-do compile { target c++23 } } + +#include <memory> +#include <testsuite_hooks.h> + +constexpr bool +test_creation_single() +{ + std::unique_ptr<int> p = std::make_unique<int>(1); + VERIFY( *p == 1 ); + p = std::make_unique_for_overwrite<int>(); + *p = 2; + VERIFY( *p == 2 ); + + return true; +} +static_assert( test_creation_single() ); + +constexpr bool +test_creation_array() +{ + std::unique_ptr<int[]> a = std::make_unique<int[]>(2); + VERIFY( a[0] == 0 ); + VERIFY( a[1] == 0 ); + a = std::make_unique_for_overwrite<int[]>(2); + a[0] = 1; + a[1] = 2; + VERIFY( a[0] == 1 ); + VERIFY( a[1] == 2 ); + + return true; +} +static_assert( test_creation_array() ); diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/constexpr.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/constexpr.cc new file mode 100644 index 0000000..81908fd --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/constexpr.cc @@ -0,0 +1,68 @@ +// { dg-options "-std=gnu++23" } +// { dg-do compile { target c++23 } } + +#include <memory> +#include <testsuite_hooks.h> + +constexpr bool +test_release() +{ + std::unique_ptr<int> p1; + int* r = p1.release(); + VERIFY( !r ); + VERIFY( !p1 ); + + std::unique_ptr<int> p2(new int(2)); + r = p2.release(); + VERIFY( r ); + VERIFY( !p2 ); + delete r; + + std::unique_ptr<int[]> a1; + r = a1.release(); + VERIFY( !r ); + VERIFY( !a1 ); + + std::unique_ptr<int[]> a2(new int[2]{}); + r = a2.release(); + VERIFY( r ); + VERIFY( !a2 ); + delete[] r; + + return true; +} +static_assert( test_release() ); + +constexpr bool +test_reset() +{ + std::unique_ptr<int> p1; + p1.reset(); + VERIFY( !p1 ); + p1.reset(nullptr); + VERIFY( !p1 ); + p1.reset(new int(2)); + VERIFY( *p1 == 2 ); + p1.reset(new int(3)); + VERIFY( *p1 == 3 ); + p1.reset(nullptr); + VERIFY( !p1 ); + + std::unique_ptr<int[]> a1; + a1.reset(); + VERIFY( !a1 ); + a1.reset(nullptr); + VERIFY( !a1 ); + a1.reset(new int[]{2,3}); + VERIFY( a1[0] == 2 ); + a1.reset(new int[]{4,5,6}); + VERIFY( a1[1] == 5 ); + a1.reset(nullptr); + VERIFY( !a1 ); + + std::unique_ptr<const int[]> a2; + a2.reset(new int[2]{}); + + return true; +} +static_assert( test_reset() ); diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/constexpr.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/constexpr.cc new file mode 100644 index 0000000..91a0165 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/constexpr.cc @@ -0,0 +1,46 @@ +// { dg-options "-std=gnu++23" } +// { dg-do compile { target c++23 } } + +#include <memory> +#include <testsuite_hooks.h> + +constexpr bool +test_swap_single() +{ + std::unique_ptr<int> p1; + swap(p1, p1); + VERIFY( !p1 ); + std::unique_ptr<int> p2; + swap(p1, p2); + VERIFY( !p1 && !p2 ); + std::unique_ptr<int> p3(new int(3)); + swap(p3, p3); + VERIFY( *p3 == 3 ); + swap(p1, p3); + VERIFY( *p1 == 3 ); + std::unique_ptr<int> p4(new int(4)); + swap(p4, p1); + VERIFY( *p4 == 3 ); + VERIFY( *p1 == 4 ); + + return true; +} +static_assert( test_swap_single() ); + +constexpr bool +test_swap_array() +{ + std::unique_ptr<int[]> a1; + std::unique_ptr<int[]> a2; + swap(a1, a2); + VERIFY( !a1 && !a2 ); + std::unique_ptr<int[]> a3(new int[]{3}); + swap(a1, a3); + VERIFY( a1[0] == 3 ); + std::unique_ptr<int[]> a4(new int[]{4, 5}); + swap(a1, a4); + VERIFY( a1[1] == 5 ); + + return true; +} +static_assert( test_swap_array() ); diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc index 28f8ae8..2705098 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc @@ -22,7 +22,7 @@ #ifndef __cpp_lib_constexpr_string_view # error "Feature test macro for constexpr copy is missing in <string_view>" -#elif __cpp_lib_constexpr_iterator < 201811L +#elif __cpp_lib_constexpr_string_view < 201811L # error "Feature test macro for constexpr copy has wrong value in <string_view>" #endif diff --git a/libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc b/libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc index f5d2f08..e6324ad 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc @@ -3,6 +3,13 @@ // { dg-xfail-if "not supported" { debug_mode } } #include <vector> + +#ifndef __cpp_lib_constexpr_vector +# error "Feature test macro for constexpr vector is missing in <vector>" +#elif __cpp_lib_constexpr_vector != 201907L +# error "Feature test macro for constexpr vector has wrong value in <vector>" +#endif + #include <testsuite_hooks.h> #include <testsuite_iterators.h> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc new file mode 100644 index 0000000..c85e060 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc @@ -0,0 +1,10 @@ +// { dg-options "-std=gnu++20" } +// { dg-do preprocess { target c++20 } } + +#include <version> + +#ifndef __cpp_lib_constexpr_vector +# error "Feature test macro for constexpr vector is missing in <version>" +#elif __cpp_lib_constexpr_vector != 201907L +# error "Feature test macro for constexpr vector has wrong value in <version>" +#endif diff --git a/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc b/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc index 90882af..5986404 100644 --- a/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc +++ b/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc @@ -20,6 +20,7 @@ #include <algorithm> #include <string> +#include <utility> #include <vector> #include <testsuite_hooks.h> #include <testsuite_iterators.h> @@ -129,6 +130,34 @@ test05() VERIFY( result.min == "a"s && result.max == "c"s ); } +struct A { + A() = delete; + A(int i) : i(i) { } + A(const A&) = default; + A(A&& other) : A(std::as_const(other)) { ++move_count; } + A& operator=(const A&) = default; + A& operator=(A&& other) { + ++move_count; + return *this = std::as_const(other); + }; + friend auto operator<=>(const A&, const A&) = default; + static inline int move_count = 0; + int i; +}; + +void +test06() +{ + // PR libstdc++/104858 + // Verify ranges::minmax doesn't dereference the iterator for the first + // element in the range twice. + A a(42); + ranges::subrange r = {std::move_iterator(&a), std::move_sentinel(&a + 1)}; + auto result = ranges::minmax(r); + VERIFY( A::move_count == 1 ); + VERIFY( result.min.i == 42 && result.max.i == 42 ); +} + int main() { @@ -137,4 +166,5 @@ main() test03(); test04(); test05(); + test06(); } diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc index b85628c..b936e04 100644 --- a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc +++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc @@ -193,6 +193,34 @@ test05() VERIFY( !ec ); // Previous value should be cleared (LWG 2683) } +void +test_pr99290() +{ + auto dir = __gnu_test::nonexistent_path(); + auto source = dir/"source"; + auto dest = dir/"dest"; + create_directories(source/"emptydir"); + create_directories(dest/"emptydir"); + std::ofstream{source/"file"} << 'a'; + std::ofstream{dest/"file"} << 'b'; + // PR libstdc++/99290 + // std::filesystem::copy does not always report errors for recursion + std::error_code ec; + copy(source, dest, ec); + VERIFY( ec == std::errc::file_exists ); + +#if __cpp_exceptions + try { + copy(source, dest); + VERIFY( false ); + } catch (const fs::filesystem_error& e) { + VERIFY( e.code() == std::errc::file_exists ); + } +#endif + + remove_all(dir); +} + int main() { @@ -201,4 +229,5 @@ main() test03(); test04(); test05(); + test_pr99290(); } diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/hash_value.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/hash_value.cc index 6bc6296..0dcea6e 100644 --- a/libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/hash_value.cc +++ b/libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/hash_value.cc @@ -42,9 +42,19 @@ test02() } } +void +test03() +{ + std::hash<path> h; + // LWG 3657. std::hash<std::filesystem::path> is not enabled + for (const path p : __gnu_test::test_paths) + VERIFY( h(p) == hash_value(p) ); +} + int main() { test01(); test02(); + test03(); } diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/102994.cc b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/102994.cc index 9d92ff9..f572ce7 100644 --- a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/102994.cc +++ b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/102994.cc @@ -5,13 +5,13 @@ #include <atomic> void -test1(const std::atomic<char*>& a, char* p) +test1(std::atomic<char*>& a, char* p) { a.wait(p); } void -test2(const std::atomic<int>* a, int v) +test2(std::atomic<int>* a, int v) { std::atomic_wait(a, v); std::atomic_notify_one(a); diff --git a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc index 6dd4f5b..edf1996 100644 --- a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc +++ b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc @@ -3,6 +3,12 @@ #include <stdatomic.h> +#ifndef __cpp_lib_stdatomic_h +# error "Feature test macro for stdatomic.h is missing in <stdatomic.h>" +#elif __cpp_lib_stdatomic_h != 202011L +# error "Feature test macro for stdatomic.h has wrong value in <stdatomic.h>" +#endif + #ifndef ATOMIC_BOOL_LOCK_FREE #error ATOMIC_BOOL_LOCK_FREE is not defined in <stdatomic.h> #endif diff --git a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc new file mode 100644 index 0000000..dbaf6bc --- /dev/null +++ b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc @@ -0,0 +1,10 @@ +// { dg-options "-std=gnu++23" } +// { dg-do preprocess { target c++23 } } + +#include <version> + +#ifndef __cpp_lib_stdatomic_h +# error "Feature test macro for stdatomic.h is missing in <version>" +#elif __cpp_lib_stdatomic_h != 202011L +# error "Feature test macro for stdatomic.h has wrong value in <version>" +#endif diff --git a/libstdc++-v3/testsuite/30_threads/packaged_task/cons/deduction.cc b/libstdc++-v3/testsuite/30_threads/packaged_task/cons/deduction.cc new file mode 100644 index 0000000..0eb6976 --- /dev/null +++ b/libstdc++-v3/testsuite/30_threads/packaged_task/cons/deduction.cc @@ -0,0 +1,85 @@ +// // Copyright (C) 2017-2022 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-do compile { target c++17 } } + +#include <future> + +template<typename T, typename U> struct require_same; +template<typename T> struct require_same<T, T> { using type = void; }; + +template<typename T, typename U> + typename require_same<T, U>::type + check_type(U&) { } + +void f0v(); +void f0vn() noexcept; +int f0i(); +int f0in() noexcept; +long f1l(int&); +long f1ln(double*) noexcept; + +void +test01() +{ + std::packaged_task task1{f0v}; + check_type<std::packaged_task<void()>>(task1); + + std::packaged_task task2{f0vn}; + check_type<std::packaged_task<void()>>(task2); + + std::packaged_task task3{f0i}; + check_type<std::packaged_task<int()>>(task3); + + std::packaged_task task4{f0in}; + check_type<std::packaged_task<int()>>(task4); + + std::packaged_task task5{f1l}; + check_type<std::packaged_task<long(int&)>>(task5); + + std::packaged_task task6{f1ln}; + check_type<std::packaged_task<long(double*)>>(task6); + + std::packaged_task task5a{std::move(task5)}; + check_type<std::packaged_task<long(int&)>>(task5a); + + std::packaged_task task6a{std::move(task6)}; + check_type<std::packaged_task<long(double*)>>(task6a); +} + +struct X { + int operator()(const short&, void*); +}; + +struct Y { + void operator()(int) const & noexcept; +}; + +void +test02() +{ + X x; + std::packaged_task task1{x}; + check_type<std::packaged_task<int(const short&, void*)>>(task1); + + Y y; + std::packaged_task task2{y}; + check_type<std::packaged_task<void(int)>>(task2); + + std::packaged_task task3{[&x](float) -> X& { return x; }}; + check_type<std::packaged_task<X&(float)>>(task3); +} diff --git a/libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc b/libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc index 319632a..5cd6b48 100644 --- a/libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc +++ b/libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc @@ -190,6 +190,34 @@ test05() VERIFY( !ec ); // Previous value should be cleared (LWG 2683) } +void +test_pr99290() +{ + auto dir = __gnu_test::nonexistent_path(); + auto source = dir/"source"; + auto dest = dir/"dest"; + create_directories(source/"emptydir"); + create_directories(dest/"emptydir"); + std::ofstream{source/"file"} << 'a'; + std::ofstream{dest/"file"} << 'b'; + // PR libstdc++/99290 + // std::filesystem::copy does not always report errors for recursion + std::error_code ec; + copy(source, dest, ec); + VERIFY( ec == std::errc::file_exists ); + +#if __cpp_exceptions + try { + copy(source, dest); + VERIFY( false ); + } catch (const fs::filesystem_error& e) { + VERIFY( e.code() == std::errc::file_exists ); + } +#endif + + remove_all(dir); +} + int main() { @@ -198,4 +226,5 @@ main() test03(); test04(); test05(); + test_pr99290(); } diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc index 4262ca8..f97640a 100644 --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc @@ -25,6 +25,8 @@ #include <memory> #include <iostream> #include <future> +#include <initializer_list> +#include <atomic> #include "../util/testsuite_allocator.h" // NullablePointer typedef std::tuple<int, int> ExTuple; @@ -191,6 +193,20 @@ main() std::error_code ecfut0 = std::make_error_code(std::future_errc{}); // { dg-final { note-test ecfut0 {std::error_code = {"future": 0}} } } + std::initializer_list<int> emptyIl = {}; + // { dg-final { note-test emptyIl {std::initializer_list of length 0} } } + std::initializer_list<int> il = {3, 4}; + // { dg-final { note-test il {std::initializer_list of length 2 = {3, 4}} } } + + std::atomic<int> ai{100}; + // { dg-final { note-test ai {std::atomic<int> = { 100 }} } } + long l{}; + std::atomic<long*> ap{&l}; + // { dg-final { regexp-test ap {std::atomic.long \*. = { 0x.* }} } } + struct Value { int i, j; }; + std::atomic<Value> av{{8, 9}}; + // { dg-final { note-test av {std::atomic<Value> = { {i = 8, j = 9} }} } } + placeholder(""); // Mark SPOT use(efl); use(fl); diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx20.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx20.cc index b0de25c..f027d0e 100644 --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx20.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx20.cc @@ -18,8 +18,11 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +#include <array> #include <compare> #include <iostream> +#include <memory> +#include <span> struct X { @@ -54,6 +57,23 @@ main() auto c10 = 0.0 <=> __builtin_nan(""); // { dg-final { note-test c10 "std::partial_ordering::unordered" } } + auto il = {1, 2}; + auto s1 = std::span(il); + static_assert(s1.extent == std::size_t(-1)); +// { dg-final { note-test s1 {std::span of length 2 = {1, 2}} } } + auto a = std::array{3, 4}; + auto s2 = std::span(a); + static_assert(s2.extent == std::size_t(2)); +// { dg-final { note-test s2 {std::span of length 2 = {3, 4}} } } + + std::atomic<std::shared_ptr<int>> spe; +// { dg-final { note-test spe {std::atomic<std::shared_ptr<int>> (empty) = {get() = 0x0}} } } + std::atomic<std::shared_ptr<int>> sp1 = std::make_shared<int>(1); + std::atomic<std::shared_ptr<int>> sp2 = sp1.load(); + std::atomic<std::weak_ptr<int>> wp{sp2.load()}; +// { dg-final { regexp-test sp1 {std::atomic.std::shared_ptr.int.. \(use count 2, weak count 1\) = {get\(\) = 0x.*}} } } +// { dg-final { regexp-test wp {std::atomic.std::weak_ptr.int.. \(use count 2, weak count 1\) = {get\(\) = 0x.*}} } } + std::cout << "\n"; return 0; // Mark SPOT } |