<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Breaking C++11 was not intentional, however we may want to make it intentional now that I think of it. I don't see any place where we specify `-std=c++11` explicitly for building the dylib, and we do have a place that requests C++14 by default (libcxx/CMakeLists.txt:524):<div class=""><br class=""></div><div class=""><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">  # Require C++14 for all targets. C++14 is needed to ensure constant</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">  # initialization for certain globals (ex global memory resources).</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">  set_target_properties(${target} PROPERTIES</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    CXX_STANDARD 14</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    CXX_STANDARD_REQUIRED YES</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    CXX_EXTENSIONS NO)</span></font></div><div><br class=""></div><div>So I'll even get rid of the special check for when we build <font face="Monaco" class=""><span style="font-style: normal;" class="">cxx_experimental</span></font>, which is now redundant. Thanks for the heads up, though!</div><div><br class=""></div><div>Louis</div><div><br class=""><blockquote type="cite" class=""><div class="">On Feb 24, 2020, at 11:58, Nico Weber <<a href="mailto:thakis@chromium.org" class="">thakis@chromium.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hi,<div class=""><br class=""></div><div class="">with this, libc++ fails building with -std=c++11. Is that intentional? libcxx/lib/CMakeLists.txt has logic to explicitly add -std=c++14, but only if the experimental target is enabled.</div><div class=""><br class="">Here are a few past CLs around this:</div><div class=""><a href="https://reviews.llvm.org/D19992" class="">https://reviews.llvm.org/D19992</a><br class=""></div><div class=""><a href="https://reviews.llvm.org/D59152" class="">https://reviews.llvm.org/D59152</a><br class=""></div><div class=""><a href="https://reviews.llvm.org/rL373808" class="">https://reviews.llvm.org/rL373808</a><br class=""></div><div class=""><a href="https://reviews.llvm.org/D61275" class="">https://reviews.llvm.org/D61275</a><br class=""></div><div class=""><br class=""></div><div class="">Is that all just obsolete and libc++ expects -std=c++14 as default, and we can either remove the explicit -std=c++14 or move it out of the experimental check? Or is this an oversight? (I would've thought "it's intentional", but on the other hand c++11 worked fine until today, so maybe keeping it working is a goal.)</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">The actual error:</div><div class=""><br class=""></div><div class="">../../libcxx/include/barrier:61:3: error: <barrier> requires C++14 or later<br class=""># error <barrier> requires C++14 or later<br class=""></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Feb 24, 2020 at 11:00 AM Louis Dionne via libcxx-commits <<a href="mailto:libcxx-commits@lists.llvm.org" class="">libcxx-commits@lists.llvm.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br class="">
Author: Louis Dionne<br class="">
Date: 2020-02-24T10:59:35-05:00<br class="">
New Revision: 80e73f22956c532e581c280a7388cfa87cec98e8<br class="">
<br class="">
URL: <a href="https://github.com/llvm/llvm-project/commit/80e73f22956c532e581c280a7388cfa87cec98e8" rel="noreferrer" target="_blank" class="">https://github.com/llvm/llvm-project/commit/80e73f22956c532e581c280a7388cfa87cec98e8</a><br class="">
DIFF: <a href="https://github.com/llvm/llvm-project/commit/80e73f22956c532e581c280a7388cfa87cec98e8.diff" rel="noreferrer" target="_blank" class="">https://github.com/llvm/llvm-project/commit/80e73f22956c532e581c280a7388cfa87cec98e8.diff</a><br class="">
<br class="">
LOG: [libc++] Adapt a few things around the implementation of P1135R6<br class="">
<br class="">
- Add the new symbols to the ABI list on Darwin<br class="">
- Add XFAIL markup to the tests that require dylib support on older platforms<br class="">
- Add availability markup for back-deployment<br class="">
<br class="">
Added: <br class="">
<br class="">
<br class="">
Modified: <br class="">
    libcxx/include/__config<br class="">
    libcxx/include/atomic<br class="">
    libcxx/include/barrier<br class="">
    libcxx/lib/abi/CHANGELOG.TXT<br class="">
    libcxx/lib/abi/x86_64-apple-darwin.v1.abilist<br class="">
    libcxx/lib/abi/x86_64-apple-darwin.v2.abilist<br class="">
    libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/atomic_wait.pass.cpp<br class="">
    libcxx/test/std/thread/thread.barrier/arrive.pass.cpp<br class="">
    libcxx/test/std/thread/thread.barrier/arrive_and_drop.pass.cpp<br class="">
    libcxx/test/std/thread/thread.barrier/arrive_and_wait.pass.cpp<br class="">
    libcxx/test/std/thread/thread.barrier/completion.pass.cpp<br class="">
    libcxx/test/std/thread/thread.latch/arrive_and_wait.pass.cpp<br class="">
    libcxx/test/std/thread/thread.latch/count_down.pass.cpp<br class="">
    libcxx/test/std/thread/thread.latch/try_wait.pass.cpp<br class="">
    libcxx/test/std/thread/thread.semaphore/acquire.pass.cpp<br class="">
    libcxx/test/std/thread/thread.semaphore/binary.pass.cpp<br class="">
    libcxx/test/std/thread/thread.semaphore/release.pass.cpp<br class="">
    libcxx/test/std/thread/thread.semaphore/timed.pass.cpp<br class="">
    libcxx/test/std/thread/thread.semaphore/try_acquire.pass.cpp<br class="">
<br class="">
Removed: <br class="">
<br class="">
<br class="">
<br class="">
################################################################################<br class="">
diff  --git a/libcxx/include/__config b/libcxx/include/__config<br class="">
index 5454f8dee73b..df3ce8ae87f6 100644<br class="">
--- a/libcxx/include/__config<br class="">
+++ b/libcxx/include/__config<br class="">
@@ -1432,6 +1432,8 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container(<br class="">
      _Pragma("clang attribute pop")<br class="">
 #  define _LIBCPP_AVAILABILITY_TO_CHARS                                        \<br class="">
      _LIBCPP_AVAILABILITY_FILESYSTEM<br class="">
+#  define _LIBCPP_AVAILABILITY_SYNC                                            \<br class="">
+     __attribute__((availability(unavailable, message="The C++20 Synchronization Library requires runtime support that hasn't been shipped on Apple platforms yet!")))<br class="">
 #else<br class="">
 #  define _LIBCPP_AVAILABILITY_SHARED_MUTEX<br class="">
 #  define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS<br class="">
@@ -1447,6 +1449,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container(<br class="">
 #  define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH<br class="">
 #  define _LIBCPP_AVAILABILITY_FILESYSTEM_POP<br class="">
 #  define _LIBCPP_AVAILABILITY_TO_CHARS<br class="">
+#  define _LIBCPP_AVAILABILITY_SYNC<br class="">
 #endif<br class="">
<br class="">
 // Define availability that depends on _LIBCPP_NO_EXCEPTIONS.<br class="">
<br class="">
diff  --git a/libcxx/include/atomic b/libcxx/include/atomic<br class="">
index 02784df7d54c..0cbd7c0876bf 100644<br class="">
--- a/libcxx/include/atomic<br class="">
+++ b/libcxx/include/atomic<br class="">
@@ -1471,15 +1471,15 @@ using __cxx_atomic_contention_t = __cxx_atomic_impl<__cxx_contention_t>;<br class="">
<br class="">
 #ifndef _LIBCPP_HAS_NO_PLATFORM_WAIT<br class="">
<br class="">
-_LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(void const volatile*);<br class="">
-_LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_all(void const volatile*);<br class="">
-_LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t __libcpp_atomic_monitor(void const volatile*);<br class="">
-_LIBCPP_EXPORTED_FROM_ABI void __libcpp_atomic_wait(void const volatile*, __cxx_contention_t);<br class="">
-<br class="">
-_LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(__cxx_atomic_contention_t const volatile*);<br class="">
-_LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_all(__cxx_atomic_contention_t const volatile*);<br class="">
-_LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t __libcpp_atomic_monitor(__cxx_atomic_contention_t const volatile*);<br class="">
-_LIBCPP_EXPORTED_FROM_ABI void __libcpp_atomic_wait(__cxx_atomic_contention_t const volatile*, __cxx_contention_t);<br class="">
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(void const volatile*);<br class="">
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_all(void const volatile*);<br class="">
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t __libcpp_atomic_monitor(void const volatile*);<br class="">
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __libcpp_atomic_wait(void const volatile*, __cxx_contention_t);<br class="">
+<br class="">
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(__cxx_atomic_contention_t const volatile*);<br class="">
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_all(__cxx_atomic_contention_t const volatile*);<br class="">
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t __libcpp_atomic_monitor(__cxx_atomic_contention_t const volatile*);<br class="">
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __libcpp_atomic_wait(__cxx_atomic_contention_t const volatile*, __cxx_contention_t);<br class="">
<br class="">
 template <class _Atp, class _Fn><br class="">
 _LIBCPP_INLINE_VISIBILITY bool __cxx_atomic_wait(_Atp* __a, _Fn && __test_fn)<br class="">
<br class="">
diff  --git a/libcxx/include/barrier b/libcxx/include/barrier<br class="">
index bf2b9a88297a..e6dc0a19a5c3 100644<br class="">
--- a/libcxx/include/barrier<br class="">
+++ b/libcxx/include/barrier<br class="">
@@ -91,14 +91,14 @@ using __barrier_phase_t = uint8_t;<br class="">
<br class="">
 class __barrier_algorithm_base;<br class="">
<br class="">
-_LIBCPP_EXPORTED_FROM_ABI<br class="">
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI<br class="">
 __barrier_algorithm_base* __construct_barrier_algorithm_base(ptr<br class="">
diff _t& __expected);<br class="">
<br class="">
-_LIBCPP_EXPORTED_FROM_ABI<br class="">
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI<br class="">
 bool __arrive_barrier_algorithm_base(__barrier_algorithm_base* __barrier,<br class="">
                                      __barrier_phase_t __old_phase);<br class="">
<br class="">
-_LIBCPP_EXPORTED_FROM_ABI<br class="">
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI<br class="">
 void __destroy_barrier_algorithm_base(__barrier_algorithm_base* __barrier);<br class="">
<br class="">
 template<class _CompletionF><br class="">
<br class="">
diff  --git a/libcxx/lib/abi/CHANGELOG.TXT b/libcxx/lib/abi/CHANGELOG.TXT<br class="">
index daea0a1645b7..ca81722270bc 100644<br class="">
--- a/libcxx/lib/abi/CHANGELOG.TXT<br class="">
+++ b/libcxx/lib/abi/CHANGELOG.TXT<br class="">
@@ -12,6 +12,34 @@ Afterwards the ABI list should be updated to include the new changes.<br class="">
<br class="">
 New entries should be added directly below the "Version" header.<br class="">
<br class="">
+------------<br class="">
+Version 10.0<br class="">
+------------<br class="">
+<br class="">
+* TODO - [libc++] Implementation of C++20's P1135R6 for libcxx<br class="">
+<br class="">
+  libc++ now implements P1135R6 (The C++20 Synchronization Library), which<br class="">
+  adds a few symbols to the dylib. This is backwards-compatible since we're<br class="">
+  just adding new symbols.<br class="">
+<br class="">
+  x86_64-unknown-linux-gnu<br class="">
+  ------------------------<br class="">
+  TODO<br class="">
+<br class="">
+  x86_64-apple-apple-darwin<br class="">
+  -------------------------<br class="">
+  Symbol added: __ZNSt3__120__libcpp_atomic_waitEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEEx<br class="">
+  Symbol added: __ZNSt3__120__libcpp_atomic_waitEPVKvx<br class="">
+  Symbol added: __ZNSt3__123__cxx_atomic_notify_allEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE<br class="">
+  Symbol added: __ZNSt3__123__cxx_atomic_notify_allEPVKv<br class="">
+  Symbol added: __ZNSt3__123__cxx_atomic_notify_oneEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE<br class="">
+  Symbol added: __ZNSt3__123__cxx_atomic_notify_oneEPVKv<br class="">
+  Symbol added: __ZNSt3__123__libcpp_atomic_monitorEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE<br class="">
+  Symbol added: __ZNSt3__123__libcpp_atomic_monitorEPVKv<br class="">
+  Symbol added: __ZNSt3__131__arrive_barrier_algorithm_baseEPNS_24__barrier_algorithm_baseEh<br class="">
+  Symbol added: __ZNSt3__132__destroy_barrier_algorithm_baseEPNS_24__barrier_algorithm_baseE<br class="">
+  Symbol added: __ZNSt3__134__construct_barrier_algorithm_baseERl<br class="">
+<br class="">
 -----------<br class="">
 Version 9.0<br class="">
 -----------<br class="">
<br class="">
diff  --git a/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist b/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist<br class="">
index 2e405c9657e2..db06a4cc17cd 100644<br class="">
--- a/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist<br class="">
+++ b/libcxx/lib/abi/x86_64-apple-darwin.v1.abilist<br class="">
@@ -2420,3 +2420,14 @@<br class="">
 {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTINSt3__14__fs10filesystem16filesystem_errorE', 'size': 0}<br class="">
 {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTSNSt3__14__fs10filesystem16filesystem_errorE', 'size': 0}<br class="">
 {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTVNSt3__14__fs10filesystem16filesystem_errorE', 'size': 0}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__120__libcpp_atomic_waitEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEEx'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__120__libcpp_atomic_waitEPVKvx'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__123__cxx_atomic_notify_allEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__123__cxx_atomic_notify_allEPVKv'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__123__cxx_atomic_notify_oneEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__123__cxx_atomic_notify_oneEPVKv'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__123__libcpp_atomic_monitorEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__123__libcpp_atomic_monitorEPVKv'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__131__arrive_barrier_algorithm_baseEPNS_24__barrier_algorithm_baseEh'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__132__destroy_barrier_algorithm_baseEPNS_24__barrier_algorithm_baseE'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__134__construct_barrier_algorithm_baseERl'}<br class="">
<br class="">
diff  --git a/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist b/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist<br class="">
index f1205a00c3cf..e8cb526c4a32 100644<br class="">
--- a/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist<br class="">
+++ b/libcxx/lib/abi/x86_64-apple-darwin.v2.abilist<br class="">
@@ -2376,3 +2376,14 @@<br class="">
 {'is_defined': True, 'name': '___dynamic_cast', 'type': 'I'}<br class="">
 {'is_defined': False, 'name': '___gxx_personality_v0', 'type': 'U'}<br class="">
 {'is_defined': True, 'name': '___gxx_personality_v0', 'type': 'I'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__220__libcpp_atomic_waitEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEEx'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__220__libcpp_atomic_waitEPVKvx'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__223__cxx_atomic_notify_allEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__223__cxx_atomic_notify_allEPVKv'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__223__cxx_atomic_notify_oneEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__223__cxx_atomic_notify_oneEPVKv'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__223__libcpp_atomic_monitorEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__223__libcpp_atomic_monitorEPVKv'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__231__arrive_barrier_algorithm_baseEPNS_24__barrier_algorithm_baseEh'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__232__destroy_barrier_algorithm_baseEPNS_24__barrier_algorithm_baseE'}<br class="">
+{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__234__construct_barrier_algorithm_baseERl'}<br class="">
\ No newline at end of file<br class="">
<br class="">
diff  --git a/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/atomic_wait.pass.cpp b/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/atomic_wait.pass.cpp<br class="">
index 8bd262a384af..ea1d7a84a410 100644<br class="">
--- a/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/atomic_wait.pass.cpp<br class="">
+++ b/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.wait/atomic_wait.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // XFAIL: c++98, c++03<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <atomic><br class="">
<br class="">
 #include <atomic><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.barrier/arrive.pass.cpp b/libcxx/test/std/thread/thread.barrier/arrive.pass.cpp<br class="">
index 943fc84306ae..3283bf2d7518 100644<br class="">
--- a/libcxx/test/std/thread/thread.barrier/arrive.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.barrier/arrive.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <barrier><br class="">
<br class="">
 #include <barrier><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.barrier/arrive_and_drop.pass.cpp b/libcxx/test/std/thread/thread.barrier/arrive_and_drop.pass.cpp<br class="">
index 8724a1dbe207..a0428a78d02e 100644<br class="">
--- a/libcxx/test/std/thread/thread.barrier/arrive_and_drop.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.barrier/arrive_and_drop.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <barrier><br class="">
<br class="">
 #include <barrier><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.barrier/arrive_and_wait.pass.cpp b/libcxx/test/std/thread/thread.barrier/arrive_and_wait.pass.cpp<br class="">
index 8596e8a1b6f2..66f46ec90499 100644<br class="">
--- a/libcxx/test/std/thread/thread.barrier/arrive_and_wait.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.barrier/arrive_and_wait.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <barrier><br class="">
<br class="">
 #include <barrier><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.barrier/completion.pass.cpp b/libcxx/test/std/thread/thread.barrier/completion.pass.cpp<br class="">
index 67ae526f4881..1cce370bf59f 100644<br class="">
--- a/libcxx/test/std/thread/thread.barrier/completion.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.barrier/completion.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <barrier><br class="">
<br class="">
 #include <barrier><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.latch/arrive_and_wait.pass.cpp b/libcxx/test/std/thread/thread.latch/arrive_and_wait.pass.cpp<br class="">
index 156e913e2562..07b3c763e851 100644<br class="">
--- a/libcxx/test/std/thread/thread.latch/arrive_and_wait.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.latch/arrive_and_wait.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <latch><br class="">
<br class="">
 #include <latch><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.latch/count_down.pass.cpp b/libcxx/test/std/thread/thread.latch/count_down.pass.cpp<br class="">
index 81f0605313f0..9374a6e4fb61 100644<br class="">
--- a/libcxx/test/std/thread/thread.latch/count_down.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.latch/count_down.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <latch><br class="">
<br class="">
 #include <latch><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.latch/try_wait.pass.cpp b/libcxx/test/std/thread/thread.latch/try_wait.pass.cpp<br class="">
index 7284849b6ede..052427197722 100644<br class="">
--- a/libcxx/test/std/thread/thread.latch/try_wait.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.latch/try_wait.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <latch><br class="">
<br class="">
 #include <latch><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.semaphore/acquire.pass.cpp b/libcxx/test/std/thread/thread.semaphore/acquire.pass.cpp<br class="">
index bb5f7fb31162..66e13754d5d6 100644<br class="">
--- a/libcxx/test/std/thread/thread.semaphore/acquire.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.semaphore/acquire.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <semaphore><br class="">
<br class="">
 #include <semaphore><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.semaphore/binary.pass.cpp b/libcxx/test/std/thread/thread.semaphore/binary.pass.cpp<br class="">
index d46d6ae47719..fc867be5696d 100644<br class="">
--- a/libcxx/test/std/thread/thread.semaphore/binary.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.semaphore/binary.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <semaphore><br class="">
<br class="">
 #include <semaphore><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.semaphore/release.pass.cpp b/libcxx/test/std/thread/thread.semaphore/release.pass.cpp<br class="">
index 0660feb34de7..fe3c70ae0fe5 100644<br class="">
--- a/libcxx/test/std/thread/thread.semaphore/release.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.semaphore/release.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <semaphore><br class="">
<br class="">
 #include <semaphore><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.semaphore/timed.pass.cpp b/libcxx/test/std/thread/thread.semaphore/timed.pass.cpp<br class="">
index d0bbc91351cc..39badb0a34cb 100644<br class="">
--- a/libcxx/test/std/thread/thread.semaphore/timed.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.semaphore/timed.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <semaphore><br class="">
<br class="">
 #include <semaphore><br class="">
<br class="">
diff  --git a/libcxx/test/std/thread/thread.semaphore/try_acquire.pass.cpp b/libcxx/test/std/thread/thread.semaphore/try_acquire.pass.cpp<br class="">
index 7f0656785927..7c8ded08e1a7 100644<br class="">
--- a/libcxx/test/std/thread/thread.semaphore/try_acquire.pass.cpp<br class="">
+++ b/libcxx/test/std/thread/thread.semaphore/try_acquire.pass.cpp<br class="">
@@ -9,6 +9,15 @@<br class="">
 // UNSUPPORTED: libcpp-has-no-threads<br class="">
 // UNSUPPORTED: c++98, c++03, c++11<br class="">
<br class="">
+// This test requires the dylib support introduced in D68480<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.15<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.14<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.13<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.12<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.11<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.10<br class="">
+// XFAIL: with_system_cxx_lib=macosx10.9<br class="">
+<br class="">
 // <semaphore><br class="">
<br class="">
 #include <semaphore><br class="">
<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
libcxx-commits mailing list<br class="">
<a href="mailto:libcxx-commits@lists.llvm.org" target="_blank" class="">libcxx-commits@lists.llvm.org</a><br class="">
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-commits" rel="noreferrer" target="_blank" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-commits</a><br class="">
</blockquote></div>
</div></blockquote></div><br class=""></div></body></html>