diff --git a/debian/patches/git-doc-updates.diff b/debian/patches/git-doc-updates.diff index cf260bd..e6f7e34 100644 --- a/debian/patches/git-doc-updates.diff +++ b/debian/patches/git-doc-updates.diff @@ -1,7 +1,7 @@ -# DP: updates from the 14 branch upto 20250829 (documentation). +# DP: updates from the 14 branch upto 20250908 (documentation). LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ - c9cd41fba9ebd288c4f101e4b99da934bcb96a11 591d04b6db957715fd88e9ebf5be4d96a5bc2caa \ + c9cd41fba9ebd288c4f101e4b99da934bcb96a11 55fb9523930af3fc8f4e5045e57e0a83b74cbc2e \ | awk '/^diff .*\.texi/ {skip=0; print; next} /^diff / {skip=1; next} skip==0' \ | grep -v -E '^(diff|index)' diff --git a/debian/patches/git-updates.diff b/debian/patches/git-updates.diff index 126b471..f815240 100644 --- a/debian/patches/git-updates.diff +++ b/debian/patches/git-updates.diff @@ -1,13 +1,20 @@ -# DP: updates from the 14 branch upto 20250829 (591d04b6db9). +# DP: updates from the 14 branch upto 20250908 (591d04b6db9). LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ - c9cd41fba9ebd288c4f101e4b99da934bcb96a11 591d04b6db957715fd88e9ebf5be4d96a5bc2caa \ + c9cd41fba9ebd288c4f101e4b99da934bcb96a11 55fb9523930af3fc8f4e5045e57e0a83b74cbc2e \ | awk '/^diff .*\.texi/ {skip=1; next} /^diff / { skip=0 } skip==0' \ | grep -v -E '^(diff|index)' --- a/src/gcc/ChangeLog +++ b/src/gcc/ChangeLog -@@ -1,3 +1,544 @@ +@@ -1,3 +1,551 @@ ++2025-09-03 Benjamin Wu ++ ++ Backported from master: ++ 2025-07-13 Benjamin Wu ++ ++ * gimple.h (GTMA_DOES_GO_IRREVOCABLE): Fix typo. ++ +2025-08-20 Martin Jambor + + Backported from master: @@ -556,7 +563,7 @@ LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ +++ b/src/gcc/DATESTAMP @@ -1 +1 @@ -20250523 -+20250829 ++20250908 --- a/src/gcc/ada/ChangeLog +++ b/src/gcc/ada/ChangeLog @@ -1,3 +1,20 @@ @@ -3365,6 +3372,17 @@ LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ break; } else +--- a/src/gcc/gimple.h ++++ b/src/gcc/gimple.h +@@ -864,7 +864,7 @@ struct GTY((tag("GSS_ASSUME"))) + tell the runtime that it should begin the transaction in + serial-irrevocable mode. */ + #define GTMA_DOES_GO_IRREVOCABLE (1u << 6) +-/* The transaction contains no instrumentation code whatsover, most ++/* The transaction contains no instrumentation code whatsoever, most + likely because it is guaranteed to go irrevocable upon entry. */ + #define GTMA_HAS_NO_INSTRUMENTATION (1u << 7) + --- a/src/gcc/optabs.cc +++ b/src/gcc/optabs.cc @@ -1368,8 +1368,7 @@ avoid_expensive_constant (machine_mode mode, optab binoptab, @@ -3559,7 +3577,21 @@ LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ /* Returns 10**2**N. */ --- a/src/gcc/testsuite/ChangeLog +++ b/src/gcc/testsuite/ChangeLog -@@ -1,3 +1,496 @@ +@@ -1,3 +1,510 @@ ++2025-08-30 liuhongt ++ ++ Revert: ++ 2025-08-30 liuhongt ++ ++ * gcc.target/i386/pr120691.c: New test. ++ ++2025-08-29 liuhongt ++ ++ Backported from master: ++ 2025-08-29 liuhongt ++ ++ * gcc.target/i386/pr120691.c: New test. ++ +2025-08-22 Harald Anlauf + + Backported from master: @@ -7574,6 +7606,99 @@ new file mode 100644 { if (f7_class_sign (a_class)) return f7_clr (cc); +--- a/src/libgcc/config/libbid/ChangeLog ++++ b/src/libgcc/config/libbid/ChangeLog +@@ -1,3 +1,29 @@ ++2025-08-30 liuhongt ++ ++ Revert: ++ 2025-08-29 liuhongt ++ ++ PR target/120691 ++ * bid128_div.c: Fix _Decimal128 arithmetic error under ++ FE_UPWARD. ++ * bid128_rem.c: Ditto. ++ * bid128_sqrt.c: Ditto. ++ * bid64_div.c (bid64_div): Ditto. ++ * bid64_sqrt.c (bid64_sqrt): Ditto. ++ ++2025-08-29 liuhongt ++ ++ Backported from master: ++ 2025-08-29 liuhongt ++ ++ PR target/120691 ++ * bid128_div.c: Fix _Decimal128 arithmetic error under ++ FE_UPWARD. ++ * bid128_rem.c: Ditto. ++ * bid128_sqrt.c: Ditto. ++ * bid64_div.c (bid64_div): Ditto. ++ * bid64_sqrt.c (bid64_sqrt): Ditto. ++ + 2025-05-23 Release Manager + + * GCC 14.3.0 released. +--- a/src/libphobos/ChangeLog ++++ b/src/libphobos/ChangeLog +@@ -1,3 +1,22 @@ ++2025-09-07 Sam James ++ ++ Backported from master: ++ 2025-09-07 Sam James ++ ++ * configure.tgt: Add hppa[12]*-*-linux* as a supported target. ++ ++2025-09-07 Sam James ++ ++ Backported from master: ++ 2025-05-06 Sam James ++ ++ * configure.tgt: Add sparc64-unknown-linux-gnu as a supported target. ++ ++2025-09-07 Matthias Klose ++ ++ * configure.tgt: Add powerpc64le--linux-gnu as a supported target ++ when configured with --with-long-double-format=ieee. ++ + 2025-05-23 Release Manager + + * GCC 14.3.0 released. +--- a/src/libphobos/configure.tgt ++++ b/src/libphobos/configure.tgt +@@ -36,7 +36,7 @@ case "${target}" in + arm*-*-linux*) + LIBPHOBOS_SUPPORTED=yes + ;; +- hppa-*-linux*) ++ hppa-*-linux* | hppa[12]*-*-linux*) + LIBPHOBOS_SUPPORTED=yes + ;; + loongarch*-*-linux*) +@@ -48,6 +48,15 @@ case "${target}" in + power*-*-freebsd*) + LIBPHOBOS_SUPPORTED=yes + ;; ++ powerpc64le-*linux*) ++ LIBPHOBOS_SUPPORTED=yes ++ case "$ac_configure_args" in ++ *--with-long-double-format=ieee*) ++ ;; ++ *) ++ LIBDRUNTIME_ONLY=yes ++ esac ++ ;; + power*-*-linux*) + LIBPHOBOS_SUPPORTED=yes + LIBDRUNTIME_ONLY=yes +@@ -58,7 +67,7 @@ case "${target}" in + s390*-linux*) + LIBPHOBOS_SUPPORTED=yes + ;; +- sparc*-*-solaris2.11*) ++ sparc64-*-linux* | sparc*-*-solaris2.11*) + LIBPHOBOS_SUPPORTED=yes + ;; + *-*-darwin9* | *-*-darwin1[01]*) --- a/src/libsanitizer/ChangeLog +++ b/src/libsanitizer/ChangeLog @@ -1,3 +1,14 @@ @@ -7663,7 +7788,89 @@ new file mode 100644 extern unsigned IOCTL_TCSETSW; --- a/src/libstdc++-v3/ChangeLog +++ b/src/libstdc++-v3/ChangeLog -@@ -1,3 +1,62 @@ +@@ -1,3 +1,144 @@ ++2025-09-04 Jonathan Wakely ++ ++ Backported from master: ++ 2025-09-03 Jonathan Wakely ++ ++ PR libstdc++/110853 ++ * include/bits/stl_pair.h [C++20] (pair(const T1&, const T2&)): ++ Use std::type_identity_t for first parameter. ++ * testsuite/20_util/pair/cons/110853.cc: New test. ++ ++2025-09-04 Jonathan Wakely ++ ++ Backported from master: ++ 2025-09-03 Jonathan Wakely ++ ++ PR libstdc++/121745 ++ * include/bits/stl_pair.h (get): Use forward instead of move in ++ std::get overloads for rvalue pairs. ++ * testsuite/20_util/pair/astuple/get_by_type.cc: Check all value ++ categories and cv-qualification. ++ ++2025-09-04 Yihan Wang ++ ++ Backported from master: ++ 2025-09-03 Yihan Wang ++ ++ * include/std/expected (expected(U&&)): Add missing constraint ++ as per LWG 4222. ++ * testsuite/20_util/expected/lwg4222.cc: New test. ++ ++2025-09-04 Jonathan Wakely ++ ++ Backported from master: ++ 2024-07-25 Jonathan Wakely ++ ++ * include/std/expected (expected): Constrain constructors to ++ prevent problematic bool conversions, as per LWG 3836. ++ * testsuite/20_util/expected/lwg3836.cc: New test. ++ ++2025-09-03 Jonathan Wakely ++ ++ Backported from master: ++ 2024-11-01 Jonathan Wakely ++ ++ * testsuite/23_containers/unordered_set/pr115285.cc: Include ++ missing header for std::vector. ++ ++2025-09-03 Jonathan Wakely ++ ++ * include/bits/regex_compiler.h (_Compiler::_S_validate): Add ++ diagnostic pragma to disable -Wswitch warning. ++ ++2025-09-03 Jonathan Wakely ++ ++ Backported from master: ++ 2025-08-21 Jonathan Wakely ++ ++ PR libstdc++/121496 ++ * include/std/mutex (__timed_mutex_impl::_M_try_wait_until): ++ Change preprocessor condition to use #if instead of #ifdef. ++ (recursive_timed_mutex::_M_clocklock): Likewise. ++ * testsuite/30_threads/timed_mutex/121496.cc: New test. ++ ++2025-09-03 Jonathan Wakely ++ ++ Backported from master: ++ 2025-08-21 Jonathan Wakely ++ ++ PR libstdc++/121374 ++ * include/std/limits (numeric_limits<__float128>::max_digits10): ++ Fix value. ++ * testsuite/18_support/numeric_limits/128bit.cc: Check value. ++ ++2025-09-03 Jonathan Wakely ++ ++ Backported from master: ++ 2025-07-17 Jonathan Wakely ++ ++ PR libstdc++/121097 ++ * include/c_global/cmath (hypot): Use __promote_3 instead of ++ __promoted. ++ +2025-06-11 Jonathan Wakely + + Backported from master: @@ -7919,6 +8126,20 @@ new file mode 100644 static time_point from_time_t(std::time_t __t) noexcept { +--- a/src/libstdc++-v3/include/bits/regex_compiler.h ++++ b/src/libstdc++-v3/include/bits/regex_compiler.h +@@ -188,8 +188,11 @@ namespace __detail + case grep: + case egrep: + return __f; ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wswitch" // do not warn about non-enumerator + case _FlagT(0): + return __f | ECMAScript; ++#pragma GCC diagnostic pop + default: + std::__throw_regex_error(_S_grammar, "conflicting grammar options"); + } --- a/src/libstdc++-v3/include/bits/shared_ptr_base.h +++ b/src/libstdc++-v3/include/bits/shared_ptr_base.h @@ -2069,7 +2069,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -7930,6 +8151,151 @@ new file mode 100644 long use_count() const noexcept +--- a/src/libstdc++-v3/include/bits/stl_pair.h ++++ b/src/libstdc++-v3/include/bits/stl_pair.h +@@ -425,7 +425,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// Constructor accepting lvalues of `first_type` and `second_type` + constexpr explicit(!_S_convertible()) +- pair(const _T1& __x, const _T2& __y) ++ pair(const type_identity_t<_T1>& __x, const _T2& __y) + noexcept(_S_nothrow_constructible()) + requires (_S_constructible()) + : first(__x), second(__y) +@@ -1286,12 +1286,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + template + constexpr _Tp&& + get(pair<_Tp, _Up>&& __p) noexcept +- { return std::move(__p.first); } ++ { return std::forward<_Tp>(__p.first); } + + template + constexpr const _Tp&& + get(const pair<_Tp, _Up>&& __p) noexcept +- { return std::move(__p.first); } ++ { return std::forward(__p.first); } + + template + constexpr _Tp& +@@ -1306,12 +1306,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + template + constexpr _Tp&& + get(pair<_Up, _Tp>&& __p) noexcept +- { return std::move(__p.second); } ++ { return std::forward<_Tp>(__p.second); } + + template + constexpr const _Tp&& + get(const pair<_Up, _Tp>&& __p) noexcept +- { return std::move(__p.second); } ++ { return std::forward(__p.second); } + #endif // __glibcxx_tuples_by_type + + +--- a/src/libstdc++-v3/include/c_global/cmath ++++ b/src/libstdc++-v3/include/c_global/cmath +@@ -3785,10 +3785,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + { return std::__hypot3(__x, __y, __z); } + + template +- __gnu_cxx::__promoted_t<_Tp, _Up, _Vp> ++ typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type + hypot(_Tp __x, _Up __y, _Vp __z) + { +- using __type = __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>; ++ using __type = typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type; + return std::__hypot3<__type>(__x, __y, __z); + } + +--- a/src/libstdc++-v3/include/std/expected ++++ b/src/libstdc++-v3/include/std/expected +@@ -314,6 +314,17 @@ namespace __expected + __guard.release(); + } + } ++ ++ // _GLIBCXX_RESOLVE_LIB_DEFECTS ++ // 3836. std::expected conversion constructor ++ // expected(const expected&) should take precedence over ++ // expected(U&&) with operator bool ++ ++ // If T is cv bool, remove_cvref_t is not a specialization of expected. ++ template ++ concept __not_constructing_bool_from_expected ++ = ! is_same_v, bool> ++ || ! __is_expected>; + } + /// @endcond + +@@ -327,26 +338,41 @@ namespace __expected + static_assert( ! __expected::__is_unexpected> ); + static_assert( __expected::__can_be_unexpected<_Er> ); + +- template> ++ // If T is not cv bool, converts-from-any-cvref> and ++ // is_constructible, cv expected ref-qual> are false. ++ template, ++ typename = remove_cv_t<_Tp>> + static constexpr bool __cons_from_expected +- = __or_v&>, +- is_constructible<_Tp, expected<_Up, _Err>>, +- is_constructible<_Tp, const expected<_Up, _Err>&>, +- is_constructible<_Tp, const expected<_Up, _Err>>, +- is_convertible&, _Tp>, +- is_convertible, _Tp>, +- is_convertible&, _Tp>, +- is_convertible, _Tp>, +- is_constructible<_Unex, expected<_Up, _Err>&>, +- is_constructible<_Unex, expected<_Up, _Err>>, +- is_constructible<_Unex, const expected<_Up, _Err>&>, +- is_constructible<_Unex, const expected<_Up, _Err>> ++ = __or_v&>, ++ is_constructible<_Tp, expected<_Up, _Gr>>, ++ is_constructible<_Tp, const expected<_Up, _Gr>&>, ++ is_constructible<_Tp, const expected<_Up, _Gr>>, ++ is_convertible&, _Tp>, ++ is_convertible, _Tp>, ++ is_convertible&, _Tp>, ++ is_convertible, _Tp>, ++ is_constructible<_Unex, expected<_Up, _Gr>&>, ++ is_constructible<_Unex, expected<_Up, _Gr>>, ++ is_constructible<_Unex, const expected<_Up, _Gr>&>, ++ is_constructible<_Unex, const expected<_Up, _Gr>> + >; + +- template ++ // _GLIBCXX_RESOLVE_LIB_DEFECTS ++ // If t is cv bool, we know it can be constructed from expected, ++ // but we don't want to cause the expected(U&&) constructor to be used, ++ // so we only check the is_constructible, ...> cases. ++ template ++ static constexpr bool __cons_from_expected<_Up, _Gr, _Unex, bool> ++ = __or_v&>, ++ is_constructible<_Unex, expected<_Up, _Gr>>, ++ is_constructible<_Unex, const expected<_Up, _Gr>&>, ++ is_constructible<_Unex, const expected<_Up, _Gr>> ++ >; ++ ++ template + constexpr static bool __explicit_conv + = __or_v<__not_>, +- __not_> ++ __not_> + >; + + template +@@ -445,8 +471,10 @@ namespace __expected + template + requires (!is_same_v, expected>) + && (!is_same_v, in_place_t>) +- && (!__expected::__is_unexpected>) ++ && (!is_same_v, unexpect_t>) + && is_constructible_v<_Tp, _Up> ++ && (!__expected::__is_unexpected>) ++ && __expected::__not_constructing_bool_from_expected<_Tp, _Up> + constexpr explicit(!is_convertible_v<_Up, _Tp>) + expected(_Up&& __v) + noexcept(is_nothrow_constructible_v<_Tp, _Up>) --- a/src/libstdc++-v3/include/std/format +++ b/src/libstdc++-v3/include/std/format @@ -1831,25 +1831,35 @@ namespace __format @@ -7977,6 +8343,204 @@ new file mode 100644 } return (__end - __p); }; +--- a/src/libstdc++-v3/include/std/limits ++++ b/src/libstdc++-v3/include/std/limits +@@ -2122,7 +2122,7 @@ __glibcxx_float_n(128) + static _GLIBCXX_USE_CONSTEXPR int digits = 113; + static _GLIBCXX_USE_CONSTEXPR int digits10 = 33; + #if __cplusplus >= 201103L +- static constexpr int max_digits10 = 35; ++ static constexpr int max_digits10 = 36; + #endif + static _GLIBCXX_USE_CONSTEXPR bool is_signed = true; + static _GLIBCXX_USE_CONSTEXPR bool is_integer = false; +--- a/src/libstdc++-v3/include/std/mutex ++++ b/src/libstdc++-v3/include/std/mutex +@@ -188,7 +188,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + return static_cast<_Derived*>(this)->_M_timedlock(__ts); + } + +-#ifdef _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK ++#if _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK + template + bool + _M_try_lock_until(const chrono::time_point; ++ ++# if __cplusplus >= 201103L ++static_assert( std::numeric_limits<__float128>::max_digits10 == 36, ++ "PR libstdc++/121374" ); ++# endif + #endif + + #if __SIZEOF_INT128__ +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/20_util/expected/lwg3836.cc +@@ -0,0 +1,34 @@ ++// { dg-do run { target c++23 } } ++ ++#include ++#include ++ ++constexpr void ++test_convert_contained_value_to_bool() ++{ ++ struct BaseError { }; ++ struct DerivedError : BaseError { }; ++ ++ std::expected e = false; ++ ++ // Should use expected(const expected&) ctor, not expected(U&&): ++ std::expected e2 = e; ++ ++ // Contained value should be e.value() not static_cast(e): ++ VERIFY( e2.value() == false ); ++ ++ std::expected e3(std::unexpect); ++ std::expected e4 = e3; ++ // Should have error, not static_cast(e3): ++ VERIFY( ! e4.has_value() ); ++} ++ ++int main() ++{ ++ test_convert_contained_value_to_bool(); ++ ++ static_assert([] { ++ test_convert_contained_value_to_bool(); ++ return true; ++ }()); ++} +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/20_util/expected/lwg4222.cc +@@ -0,0 +1,39 @@ ++// { dg-do run { target c++23 } } ++ ++// LWG 4222. 'expected' constructor from a single value missing a constraint ++ ++#include ++#include ++#include ++ ++struct T { ++ explicit T(auto) {} ++}; ++struct E { ++ E(int) {} ++}; ++ ++struct V { ++ explicit constexpr V(std::unexpect_t) {} ++}; ++ ++static_assert(!std::is_constructible_v, std::unexpect_t>); ++static_assert(!std::is_constructible_v, std::unexpect_t &>); ++static_assert(!std::is_constructible_v, std::unexpect_t &&>); ++static_assert(!std::is_constructible_v, const std::unexpect_t>); ++static_assert(!std::is_constructible_v, const std::unexpect_t &>); ++static_assert(!std::is_constructible_v, const std::unexpect_t &&>); ++ ++constexpr bool test() { ++ std::expected e1(std::in_place, std::unexpect); ++ VERIFY( e1.has_value() ); ++ std::expected e2(std::unexpect, std::unexpect); ++ VERIFY( !e2.has_value() ); ++ return true; ++} ++ ++int main() { ++ test(); ++ static_assert(test()); ++ return 0; ++} +--- a/src/libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc ++++ b/src/libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc +@@ -33,3 +33,55 @@ void test01() + const int&& cpsecond __attribute__((unused)) = + std::get(std::move(cp)); + } ++ ++// PR libstdc++/121745 return of get(pair<_Up, _Tp>&& __p) may be ill-formed ++void ++test_pr121745(std::pair p) ++{ ++ float& pfirst = std::get(std::move(p)); ++ int& psecond = std::get(std::move(p)); ++ ++ const auto& p2 = p; ++ float& p2first = std::get(std::move(p2)); ++ int& p2second = std::get(std::move(p2)); ++} ++ ++template ++using get_t = decltype(std::get(std::declval())); ++ ++// Check that get(Pair) returns Ret ++template ++constexpr bool verify = std::is_same, Ret>::value; ++ ++template ++void ++check() ++{ ++ // Overloads for accessing first member ++ static_assert( verify&, T1&>, ++ "T1& get(pair&)" ); ++ static_assert( verify&, const T1&>, ++ "const T1& get(const pair&)" ); ++ static_assert( verify&&, T1&&>, ++ "T1&& get(pair&&)" ); ++ static_assert( verify&&, const T1&&>, ++ "const T1&& get(const pair&&)" ); ++ ++ // Overloads for accessing second member ++ static_assert( verify&, T2&>, ++ "T2& get(pair&)" ); ++ static_assert( verify&, const T2&>, ++ "const T2& get(const pair&)" ); ++ static_assert( verify&&, T2&&>, ++ "T2&& get(pair&&)" ); ++ static_assert( verify&&, const T2&&>, ++ "const T2&& get(const pair&&)" ); ++} ++ ++void ++test_all() ++{ ++ check(); ++ check(); ++ check(); ++} +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/20_util/pair/cons/110853.cc +@@ -0,0 +1,10 @@ ++// { dg-do compile { target c++17 } } ++// PR libstdc++/110853 ++// Bad interaction between deduction guide with decay and constraints ++// (CTAD, std::pair and function lvalue) ++ ++#include ++ ++void func() {} ++std::pair p(1, func); ++std::pair& r = p; new file mode 100644 --- /dev/null +++ b/src/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/1.cc @@ -8105,6 +8669,37 @@ new file mode 100644 +template class std::weak_ptr; +template class std::weak_ptr; +#endif +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_set/pr115285.cc ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_set/pr115285.cc +@@ -2,8 +2,9 @@ + + // libstdc++/115285 + +-#include + #include ++#include ++#include + + #include + +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/30_threads/timed_mutex/121496.cc +@@ -0,0 +1,14 @@ ++// { dg-do compile { target { { i?86-*-linux* x86_64-*-linux* } && lp64 } } } ++// { dg-require-effective-target c++11 } ++// { dg-options "-fsanitize=thread" } ++ ++// PR libstdc++/121496 no member named '_M_clocklock' with -fsanitize=thread ++ ++#include ++#include ++ ++void ++test_pr121496(std::timed_mutex& m) ++{ ++ (void) m.try_lock_until(std::chrono::steady_clock::time_point{}); ++} --- a/src/libstdc++-v3/testsuite/std/format/functions/format.cc +++ b/src/libstdc++-v3/testsuite/std/format/functions/format.cc @@ -256,6 +256,16 @@ test_locale() diff --git a/debian/patches/libphobos-ppc64el.diff b/debian/patches/libphobos-ppc64el.diff deleted file mode 100644 index 8fe038e..0000000 --- a/debian/patches/libphobos-ppc64el.diff +++ /dev/null @@ -1,20 +0,0 @@ -# DP: build libphobos on ppc64el when configured --with-long-double-format=ieee - ---- a/src/libphobos/configure.tgt -+++ b/src/libphobos/configure.tgt -@@ -48,6 +48,15 @@ - power*-*-freebsd*) - LIBPHOBOS_SUPPORTED=yes - ;; -+ powerpc64le-*-linux*) -+ LIBPHOBOS_SUPPORTED=yes -+ case "$ac_configure_args" in -+ *--with-long-double-format=ieee*) -+ ;; -+ *) -+ LIBDRUNTIME_ONLY=yes -+ esac -+ ;; - power*-*-linux*) - LIBPHOBOS_SUPPORTED=yes - LIBDRUNTIME_ONLY=yes diff --git a/debian/patches/libphobos-sparc64.diff b/debian/patches/libphobos-sparc64.diff deleted file mode 100644 index a725338..0000000 --- a/debian/patches/libphobos-sparc64.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- a/src/libphobos/configure.tgt -+++ b/src/libphobos/configure.tgt -@@ -61,6 +61,9 @@ case "${target}" in - s390*-linux*) - LIBPHOBOS_SUPPORTED=yes - ;; -+ sparc64-*-linux*) -+ LIBPHOBOS_SUPPORTED=yes -+ ;; - x86_64-*-freebsd* | i?86-*-freebsd*) - LIBPHOBOS_SUPPORTED=yes - ;; diff --git a/debian/rules.defs b/debian/rules.defs index d375425..e0ddc5c 100644 --- a/debian/rules.defs +++ b/debian/rules.defs @@ -1107,6 +1107,9 @@ ifeq ($(with_d),yes) phobos_archs += mipsn32 mipsn32el phobos_archs += mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el phobos_archs += riscv64 s390x loong64 sparc64 + ifneq (,$(filter $(distrelease),trusty xenial bionic focal jammy noble oracle plucky)) + phobos_archs := $(filter-out sparc64, $(phobos_archs)) + endif phobos_archs += $(druntime_only_archs) phobos_archs := $(sort $(phobos_archs)) ifneq (,$(filter $(DEB_TARGET_ARCH), $(phobos_archs))) diff --git a/debian/rules.patch b/debian/rules.patch index 717369e..a96f895 100644 --- a/debian/rules.patch +++ b/debian/rules.patch @@ -77,8 +77,6 @@ debian_patches += \ libphobos-unittest \ pr118045 \ binutils-pr32491 \ - libphobos-ppc64el \ - libphobos-sparc64 \ # see https://bugs.debian.org/1108322 ifneq (,$(filter $(DEB_TARGET_ARCH),hppa m68k powerpc))