Index: docs/DesignDocs/AvailabilityMarkup.rst =================================================================== --- /dev/null +++ docs/DesignDocs/AvailabilityMarkup.rst @@ -0,0 +1,114 @@ +=================== +Availability Markup +=================== + +.. contents:: + :local: + +Overview +======== + +Libc++ is used as a system library on macOS and iOS (amongst others). In order +for users to be able to compile a binary that is intended to be deployed to an +older version of the platform, clang provides the +`availability attribute `_ +that can be placed on declarations to describe the lifecycle of a symbol in the +library. + +Design +====== + +When a new feature is introduced that requires dylib support, a macro should be +created in include/__config to mark this feature as unavailable for all the +systems. For example:: + + // Define availability macros. + #if defined(_LIBCPP_USE_AVAILABILITY_APPLE) + #define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS __attribute__((unavailable)) + #else if defined(_LIBCPP_USE_AVAILABILITY_SOME_OTHER_VENDOR) + #define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS __attribute__((unavailable)) + #else + #define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS + #endif + +When the library is updated by the platform vendor, the markup can be updated. +For example:: + + #define _LIBCPP_AVAILABILITY_SHARED_MUTEX \ + __attribute__((availability(macosx,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) + +In the source code, the macro can be added on a class if the full class requires +type info from the library for example:: + + _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL + class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access + : public std::logic_error { + +or on a particular symbol: + + _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz) _NOEXCEPT; + + +Testing +======= + +Some parameters can be passed to lit to run the test-suite and exercising the +availability. + +* The `platform` parameter controls the deployement target. For example lit can + be invoked with `--param=platform=macosx10.8`. Default is the current host. +* The `use_system_cxx_lib` parameter indicates to use another library than the + just built one. Invoking lit with `--param=use_system_cxx_lib=true` will run + the test-suite against the host system library. Alternatively a path to the + directory containing a specific prebuilt libc++ can be used, for example: + `--param=use_system_cxx_lib=/path/to/macOS/10.8/`. +* The `with_availability` boolean parameter enables the availability markup. + +Tests can be marked as XFAIL based on multiple features made available by lit: + + +* if either `use_system_cxx_lib` or `with_availability` is passed to lit, + assuming `--param=platform=macosx10.8` is passed as well the following + features will be available: + + - availability + - availability=x86_64 + - availability=macosx + - availability=x86_64-macosx + - availability=x86_64-apple-macosx10.8 + - availability=macosx10.8 + + This feature is used to XFAIL a test that *is* using a class of a method marked + as unavailable *and* that is expected to *fail* if deployed on an older system. + +* if `use_system_cxx_lib` is passed to lit, the following features will also + be available: + + - with_system_cxx_lib + - with_system_cxx_lib=x86_64 + - with_system_cxx_lib=macosx + - with_system_cxx_lib=x86_64-macosx + - with_system_cxx_lib=x86_64-apple-macosx10.8 + - with_system_cxx_lib=macosx10.8 + + This feature is used to XFAIL a test that is *not* using a class of a method + marked as unavailable *but* that is expected to fail if deployed on an older + system. For example if we know that it exhibits a but in the libc on a + particular system version. + +* if `with_availability` is passed to lit, the following features will also + be available: + + - availability_markup + - availability_markup=x86_64 + - availability_markup=macosx + - availability_markup=x86_64-macosx + - availability_markup=x86_64-apple-macosx10.8 + - availability_markup=macosx10.8 + + This feature is used to XFAIL a test that *is* using a class of a method + marked as unavailable *but* that is expected to *pass* if deployed on an older + system. For example if it is using a symbol in a statically evaluated context. Index: docs/index.rst =================================================================== --- docs/index.rst +++ docs/index.rst @@ -128,6 +128,7 @@ .. toctree:: :maxdepth: 1 + DesignDocs/AvailabilityMarkup DesignDocs/DebugMode DesignDocs/CapturingConfigInfo DesignDocs/ABIVersioning Index: include/__config =================================================================== --- include/__config +++ include/__config @@ -1084,4 +1084,77 @@ #endif // __cplusplus -#endif // _LIBCPP_CONFIG +// Decide whether to use availability macros. +#if !defined(_LIBCPP_BUILDING_LIBRARY) && \ + !defined(_LIBCPP_DISABLE_AVAILABILITY) && \ + __has_feature(attribute_availability_with_strict) && \ + __has_feature(attribute_availability_in_templates) +#ifdef __APPLE__ +#define _LIBCPP_USE_AVAILABILITY_APPLE +#endif +#endif + +// Define availability macros. +#if defined(_LIBCPP_USE_AVAILABILITY_APPLE) +#define _LIBCPP_AVAILABILITY_SHARED_MUTEX \ + __attribute__((availability(macosx,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) +#define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS __attribute__((unavailable)) +#define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH __attribute__((unavailable)) +#define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS \ + __attribute__((availability(macosx,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) +#define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE \ + __attribute__((availability(macosx,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) +#define _LIBCPP_AVAILABILITY_FUTURE_ERROR \ + __attribute__((availability(ios,strict,introduced=6.0))) +#define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE \ + __attribute__((availability(macosx,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) +#define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY \ + __attribute__((availability(macosx,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) +#define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR \ + __attribute__((availability(macosx,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) +#else +#define _LIBCPP_AVAILABILITY_SHARED_MUTEX +#define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS +#define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH +#define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS +#define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE +#define _LIBCPP_AVAILABILITY_FUTURE_ERROR +#define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE +#define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY +#define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR +#endif + +// Define availability that depends on _LIBCPP_NO_EXCEPTIONS. +#ifdef _LIBCPP_NO_EXCEPTIONS +#define _LIBCPP_AVAILABILITY_DYNARRAY +#define _LIBCPP_AVAILABILITY_FUTURE +#else +#define _LIBCPP_AVAILABILITY_DYNARRAY _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH +#define _LIBCPP_AVAILABILITY_FUTURE _LIBCPP_AVAILABILITY_FUTURE_ERROR +#endif + +// Availability of stream API in the dylib got dropped and re-added. The +// extern template should effectively be available at: +// availability(macosx,introduced=10.9) +// availability(ios,introduced=7.0) +#if defined(_LIBCPP_USE_AVAILABILITY_APPLE) && \ + ((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ <= 1090) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ <= 70000)) +#define _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE +#endif + +#endif // _LIBCPP_CONFIG Index: include/__locale =================================================================== --- include/__locale +++ include/__locale @@ -67,6 +67,7 @@ class _LIBCPP_TYPE_VIS id; typedef int category; + _LIBCPP_AVAILABILITY_LOCALE_CATEGORY static const category // values assigned here are for exposition only none = 0, collate = LC_COLLATE_MASK, Index: include/exception =================================================================== --- include/exception +++ include/exception @@ -127,7 +127,7 @@ _LIBCPP_NORETURN _LIBCPP_FUNC_VIS void terminate() _NOEXCEPT; _LIBCPP_FUNC_VIS bool uncaught_exception() _NOEXCEPT; -_LIBCPP_FUNC_VIS int uncaught_exceptions() _NOEXCEPT; +_LIBCPP_FUNC_VIS _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS int uncaught_exceptions() _NOEXCEPT; class _LIBCPP_TYPE_VIS exception_ptr; Index: include/experimental/dynarray =================================================================== --- include/experimental/dynarray +++ include/experimental/dynarray @@ -110,7 +110,7 @@ namespace std { namespace experimental { inline namespace __array_extensions_v1 { template -struct _LIBCPP_TEMPLATE_VIS dynarray +struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_DYNARRAY dynarray { public: // types: Index: include/experimental/optional =================================================================== --- include/experimental/optional +++ include/experimental/optional @@ -145,7 +145,7 @@ #include _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL -class _LIBCPP_EXCEPTION_ABI bad_optional_access +class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access : public std::logic_error { public: @@ -523,6 +523,9 @@ constexpr explicit operator bool() const noexcept {return this->__engaged_;} _LIBCPP_NORETURN _LIBCPP_INLINE_VISIBILITY +#ifndef _LIBCPP_NO_EXCEPTIONS +_LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS +#endif constexpr void __throw_bad_optional_access() const { #ifndef _LIBCPP_NO_EXCEPTIONS @@ -532,7 +535,7 @@ #endif } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS constexpr value_type const& value() const { if (!this->__engaged_) @@ -540,7 +543,7 @@ return this->__val_; } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS value_type& value() { if (!this->__engaged_) Index: include/future =================================================================== --- include/future +++ include/future @@ -499,7 +499,7 @@ return error_condition(static_cast(__e), future_category()); } -class _LIBCPP_EXCEPTION_ABI future_error +class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_FUTURE_ERROR future_error : public logic_error { error_code __ec_; @@ -515,6 +515,9 @@ }; _LIBCPP_NORETURN inline _LIBCPP_ALWAYS_INLINE +#ifndef _LIBCPP_NO_EXCEPTIONS +_LIBCPP_AVAILABILITY_FUTURE_ERROR +#endif void __throw_future_error(future_errc _Ev) { #ifndef _LIBCPP_NO_EXCEPTIONS @@ -525,7 +528,7 @@ #endif } -class _LIBCPP_TYPE_VIS __assoc_sub_state +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_FUTURE __assoc_sub_state : public __shared_count { protected: @@ -612,7 +615,7 @@ } template -class __assoc_state +class _LIBCPP_AVAILABILITY_FUTURE __assoc_state : public __assoc_sub_state { typedef __assoc_sub_state base; @@ -652,6 +655,7 @@ template template +_LIBCPP_AVAILABILITY_FUTURE void #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES __assoc_state<_Rp>::set_value(_Arg&& __arg) @@ -707,7 +711,7 @@ } template -class __assoc_state<_Rp&> +class _LIBCPP_AVAILABILITY_FUTURE __assoc_state<_Rp&> : public __assoc_sub_state { typedef __assoc_sub_state base; @@ -767,7 +771,7 @@ } template -class __assoc_state_alloc +class _LIBCPP_AVAILABILITY_FUTURE __assoc_state_alloc : public __assoc_state<_Rp> { typedef __assoc_state<_Rp> base; @@ -795,7 +799,7 @@ } template -class __assoc_state_alloc<_Rp&, _Alloc> +class _LIBCPP_AVAILABILITY_FUTURE __assoc_state_alloc<_Rp&, _Alloc> : public __assoc_state<_Rp&> { typedef __assoc_state<_Rp&> base; @@ -821,7 +825,7 @@ } template -class __assoc_sub_state_alloc +class _LIBCPP_AVAILABILITY_FUTURE __assoc_sub_state_alloc : public __assoc_sub_state { typedef __assoc_sub_state base; @@ -847,7 +851,7 @@ } template -class __deferred_assoc_state +class _LIBCPP_AVAILABILITY_FUTURE __deferred_assoc_state : public __assoc_state<_Rp> { typedef __assoc_state<_Rp> base; @@ -894,7 +898,7 @@ } template -class __deferred_assoc_state +class _LIBCPP_AVAILABILITY_FUTURE __deferred_assoc_state : public __assoc_sub_state { typedef __assoc_sub_state base; @@ -942,7 +946,7 @@ } template -class __async_assoc_state +class _LIBCPP_AVAILABILITY_FUTURE __async_assoc_state : public __assoc_state<_Rp> { typedef __assoc_state<_Rp> base; @@ -997,7 +1001,7 @@ } template -class __async_assoc_state +class _LIBCPP_AVAILABILITY_FUTURE __async_assoc_state : public __assoc_sub_state { typedef __assoc_sub_state base; @@ -1076,7 +1080,7 @@ #endif template -class _LIBCPP_TEMPLATE_VIS future +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE future { __assoc_state<_Rp>* __state_; @@ -1179,7 +1183,7 @@ } template -class _LIBCPP_TEMPLATE_VIS future<_Rp&> +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE future<_Rp&> { __assoc_state<_Rp&>* __state_; @@ -1277,7 +1281,7 @@ } template <> -class _LIBCPP_TYPE_VIS future +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_FUTURE future { __assoc_sub_state* __state_; @@ -1360,7 +1364,7 @@ template class packaged_task; template -class _LIBCPP_TEMPLATE_VIS promise +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE promise { __assoc_state<_Rp>* __state_; @@ -1527,7 +1531,7 @@ // promise template -class _LIBCPP_TEMPLATE_VIS promise<_Rp&> +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE promise<_Rp&> { __assoc_state<_Rp&>* __state_; @@ -1663,7 +1667,7 @@ // promise template <> -class _LIBCPP_TYPE_VIS promise +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_FUTURE promise { __assoc_sub_state* __state_; @@ -1749,7 +1753,7 @@ template class __packaged_task_base; template -class __packaged_task_base<_Rp(_ArgTypes...)> +class _LIBCPP_AVAILABILITY_FUTURE __packaged_task_base<_Rp(_ArgTypes...)> { __packaged_task_base(const __packaged_task_base&); __packaged_task_base& operator=(const __packaged_task_base&); @@ -1767,7 +1771,7 @@ template class __packaged_task_func; template -class __packaged_task_func<_Fp, _Alloc, _Rp(_ArgTypes...)> +class _LIBCPP_AVAILABILITY_FUTURE __packaged_task_func<_Fp, _Alloc, _Rp(_ArgTypes...)> : public __packaged_task_base<_Rp(_ArgTypes...)> { __compressed_pair<_Fp, _Alloc> __f_; @@ -1825,7 +1829,7 @@ template class __packaged_task_function; template -class __packaged_task_function<_Rp(_ArgTypes...)> +class _LIBCPP_AVAILABILITY_FUTURE __packaged_task_function<_Rp(_ArgTypes...)> { typedef __packaged_task_base<_Rp(_ArgTypes...)> __base; typename aligned_storage<3*sizeof(void*)>::type __buf_; @@ -2000,7 +2004,7 @@ } template -class _LIBCPP_TEMPLATE_VIS packaged_task<_Rp(_ArgTypes...)> +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE packaged_task<_Rp(_ArgTypes...)> { public: typedef _Rp result_type; // extension @@ -2129,7 +2133,7 @@ } template -class _LIBCPP_TEMPLATE_VIS packaged_task +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE packaged_task { public: typedef void result_type; // extension @@ -2517,7 +2521,7 @@ } template <> -class _LIBCPP_TYPE_VIS shared_future +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_FUTURE shared_future { __assoc_sub_state* __state_; Index: include/istream =================================================================== --- include/istream +++ include/istream @@ -1678,9 +1678,11 @@ return __is; } +#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream) _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream) _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_iostream) +#endif _LIBCPP_END_NAMESPACE_STD Index: include/memory =================================================================== --- include/memory +++ include/memory @@ -5241,7 +5241,8 @@ friend _LIBCPP_FUNC_VIS __sp_mut& __get_sp_mut(const void*); }; -_LIBCPP_FUNC_VIS __sp_mut& __get_sp_mut(const void*); +_LIBCPP_FUNC_VIS _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR +__sp_mut& __get_sp_mut(const void*); template inline _LIBCPP_INLINE_VISIBILITY @@ -5252,6 +5253,7 @@ } template +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR shared_ptr<_Tp> atomic_load(const shared_ptr<_Tp>* __p) { @@ -5264,6 +5266,7 @@ template inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR shared_ptr<_Tp> atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) { @@ -5271,6 +5274,7 @@ } template +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR void atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) { @@ -5282,6 +5286,7 @@ template inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR void atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, memory_order) { @@ -5289,6 +5294,7 @@ } template +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR shared_ptr<_Tp> atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) { @@ -5301,6 +5307,7 @@ template inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR shared_ptr<_Tp> atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, memory_order) { @@ -5308,6 +5315,7 @@ } template +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR bool atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w) { @@ -5329,6 +5337,7 @@ template inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR bool atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w) { @@ -5337,6 +5346,7 @@ template inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR bool atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w, memory_order, memory_order) @@ -5346,6 +5356,7 @@ template inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR bool atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w, memory_order, memory_order) Index: include/new =================================================================== --- include/new +++ include/new @@ -146,9 +146,8 @@ #if defined(_LIBCPP_BUILDING_LIBRARY) || (_LIBCPP_STD_VER > 11) -class _LIBCPP_EXCEPTION_ABI bad_array_length - : public bad_alloc -{ +class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH + bad_array_length : public bad_alloc { public: bad_array_length() _NOEXCEPT; virtual ~bad_array_length() _NOEXCEPT; @@ -182,7 +181,7 @@ _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p) _NOEXCEPT; _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT; #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION -_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::size_t __sz) _NOEXCEPT; +_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz) _NOEXCEPT; #endif _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz) _THROW_BAD_ALLOC; @@ -190,7 +189,7 @@ _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p) _NOEXCEPT; _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT; #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION -_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::size_t __sz) _NOEXCEPT; +_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete[](void* __p, std::size_t __sz) _NOEXCEPT; #endif #ifndef _LIBCPP_HAS_NO_ALIGNED_ALLOCATION @@ -199,7 +198,7 @@ _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::align_val_t) _NOEXCEPT; _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT; #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION -_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT; +_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT; #endif _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz, std::align_val_t) _THROW_BAD_ALLOC; @@ -207,7 +206,7 @@ _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::align_val_t) _NOEXCEPT; _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT; #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION -_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT; +_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete[](void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT; #endif #endif @@ -238,6 +237,9 @@ #ifdef _LIBCPP_BAD_ARRAY_LENGTH_DEFINED _LIBCPP_NORETURN inline _LIBCPP_ALWAYS_INLINE +#ifndef _LIBCPP_NO_EXCEPTIONS +_LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH +#endif void __throw_bad_array_length() { #ifndef _LIBCPP_NO_EXCEPTIONS Index: include/ostream =================================================================== --- include/ostream +++ include/ostream @@ -1082,8 +1082,10 @@ use_facet >(__os.getloc()).widen('1')); } +#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream) _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream) +#endif _LIBCPP_END_NAMESPACE_STD Index: include/shared_mutex =================================================================== --- include/shared_mutex +++ include/shared_mutex @@ -141,7 +141,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -struct _LIBCPP_TYPE_VIS __shared_mutex_base +struct _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_SHARED_MUTEX __shared_mutex_base { mutex __mut_; condition_variable __gate1_; @@ -173,7 +173,7 @@ #if _LIBCPP_STD_VER > 14 -class _LIBCPP_TYPE_VIS shared_mutex +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_SHARED_MUTEX shared_mutex { __shared_mutex_base __base; public: @@ -199,7 +199,7 @@ #endif -class _LIBCPP_TYPE_VIS shared_timed_mutex +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_SHARED_MUTEX shared_timed_mutex { __shared_mutex_base __base; public: Index: include/streambuf =================================================================== --- include/streambuf +++ include/streambuf @@ -476,11 +476,13 @@ return traits_type::eof(); } +#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf) _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf) _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ios) _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ios) +#endif _LIBCPP_END_NAMESPACE_STD Index: include/typeinfo =================================================================== --- include/typeinfo +++ include/typeinfo @@ -108,6 +108,7 @@ #endif public: + _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE virtual ~type_info(); #if defined(_LIBCPP_HAS_NONUNIQUE_TYPEINFO) Index: test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp +++ test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp @@ -8,6 +8,8 @@ //===----------------------------------------------------------------------===// // +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib // list(list&& c); Index: test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp +++ test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp @@ -9,6 +9,9 @@ // UNSUPPORTED: c++98, c++03 +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // list(list&& c); Index: test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp @@ -9,6 +9,9 @@ // UNSUPPORTED: c++98, c++03 +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // template void emplace(const_iterator p, Args&&... args); Index: test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // Call erase(const_iterator position) with end() Index: test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // Call erase(const_iterator position) with iterator from another container Index: test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // Call erase(const_iterator first, const_iterator last); with first iterator from another container Index: test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // Call erase(const_iterator first, const_iterator last); with second iterator from another container Index: test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // Call erase(const_iterator first, const_iterator last); with both iterators from another container Index: test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // Call erase(const_iterator first, const_iterator last); with a bad range Index: test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // template Index: test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // iterator insert(const_iterator position, value_type&& x); Index: test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // iterator insert(const_iterator position, size_type n, const value_type& x); Index: test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // iterator insert(const_iterator position, const value_type& x); Index: test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp +++ test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // void pop_back(); Index: test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp +++ test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // void splice(const_iterator position, list& x); Index: test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp +++ test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // void splice(const_iterator position, list& x, iterator i); Index: test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp =================================================================== --- test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp +++ test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // // void splice(const_iterator position, list& x, iterator first, iterator last); Index: test/libcxx/debug/containers/db_associative_container_tests.pass.cpp =================================================================== --- test/libcxx/debug/containers/db_associative_container_tests.pass.cpp +++ test/libcxx/debug/containers/db_associative_container_tests.pass.cpp @@ -12,6 +12,9 @@ // MODULES_DEFINES: _LIBCPP_DEBUG=1 // MODULES_DEFINES: _LIBCPP_DEBUG_USE_EXCEPTIONS +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // test container debugging #define _LIBCPP_DEBUG 1 Index: test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp =================================================================== --- test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp +++ test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp @@ -12,6 +12,9 @@ // MODULES_DEFINES: _LIBCPP_DEBUG=1 // MODULES_DEFINES: _LIBCPP_DEBUG_USE_EXCEPTIONS +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // test container debugging #define _LIBCPP_DEBUG 1 Index: test/libcxx/debug/containers/db_string.pass.cpp =================================================================== --- test/libcxx/debug/containers/db_string.pass.cpp +++ test/libcxx/debug/containers/db_string.pass.cpp @@ -12,6 +12,9 @@ // MODULES_DEFINES: _LIBCPP_DEBUG=1 // MODULES_DEFINES: _LIBCPP_DEBUG_USE_EXCEPTIONS +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // test container debugging #define _LIBCPP_DEBUG 1 Index: test/libcxx/debug/containers/db_unord_container_tests.pass.cpp =================================================================== --- test/libcxx/debug/containers/db_unord_container_tests.pass.cpp +++ test/libcxx/debug/containers/db_unord_container_tests.pass.cpp @@ -12,6 +12,9 @@ // MODULES_DEFINES: _LIBCPP_DEBUG=1 // MODULES_DEFINES: _LIBCPP_DEBUG_USE_EXCEPTIONS +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // test container debugging #define _LIBCPP_DEBUG 1 Index: test/libcxx/debug/debug_abort.pass.cpp =================================================================== --- test/libcxx/debug/debug_abort.pass.cpp +++ test/libcxx/debug/debug_abort.pass.cpp @@ -10,6 +10,9 @@ // MODULES_DEFINES: _LIBCPP_DEBUG=0 +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // Test that the default debug handler aborts the program. #define _LIBCPP_DEBUG 0 Index: test/libcxx/debug/debug_throw.pass.cpp =================================================================== --- test/libcxx/debug/debug_throw.pass.cpp +++ test/libcxx/debug/debug_throw.pass.cpp @@ -11,6 +11,9 @@ // UNSUPPORTED: libcpp-no-exceptions // MODULES_DEFINES: _LIBCPP_DEBUG=0 +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // Test that the default debug handler can be overridden and test the // throwing debug handler. Index: test/libcxx/debug/debug_throw_register.pass.cpp =================================================================== --- test/libcxx/debug/debug_throw_register.pass.cpp +++ test/libcxx/debug/debug_throw_register.pass.cpp @@ -12,6 +12,9 @@ // MODULES_DEFINES: _LIBCPP_DEBUG=1 // MODULES_DEFINES: _LIBCPP_DEBUG_USE_EXCEPTIONS +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib + // Test that defining _LIBCPP_DEBUG_USE_EXCEPTIONS causes _LIBCPP_ASSERT // to throw on failure. Index: test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp =================================================================== --- test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp +++ test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp @@ -8,6 +8,12 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7 // dynarray.cons Index: test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default_throws_bad_alloc.pass.cpp =================================================================== --- test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default_throws_bad_alloc.pass.cpp +++ test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default_throws_bad_alloc.pass.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: libcpp-no-exceptions +// XFAIL: availability // dynarray.cons // explicit dynarray(size_type c); Index: test/libcxx/experimental/containers/sequences/dynarray/dynarray.data/default.pass.cpp =================================================================== --- test/libcxx/experimental/containers/sequences/dynarray/dynarray.data/default.pass.cpp +++ test/libcxx/experimental/containers/sequences/dynarray/dynarray.data/default.pass.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability // dynarray.data Index: test/libcxx/experimental/containers/sequences/dynarray/dynarray.mutate/default.pass.cpp =================================================================== --- test/libcxx/experimental/containers/sequences/dynarray/dynarray.mutate/default.pass.cpp +++ test/libcxx/experimental/containers/sequences/dynarray/dynarray.mutate/default.pass.cpp @@ -8,6 +8,8 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability + // dynarray.data // void fill(const T& v); Index: test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/at.pass.cpp =================================================================== --- test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/at.pass.cpp +++ test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/at.pass.cpp @@ -9,6 +9,8 @@ // UNSUPPORTED: c++98, c++03, c++11 // UNSUPPORTED: libcpp-no-exceptions +// XFAIL: availability + // dynarray.overview // const_reference at(size_type n) const; Index: test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/begin_end.pass.cpp =================================================================== --- test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/begin_end.pass.cpp +++ test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/begin_end.pass.cpp @@ -8,6 +8,8 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability + // dynarray.overview Index: test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/capacity.pass.cpp =================================================================== --- test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/capacity.pass.cpp +++ test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/capacity.pass.cpp @@ -8,6 +8,8 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability + // dynarray.overview // size_type size() const noexcept; Index: test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/front_back.pass.cpp =================================================================== --- test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/front_back.pass.cpp +++ test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/front_back.pass.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability // dynarray.overview Index: test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/indexing.pass.cpp =================================================================== --- test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/indexing.pass.cpp +++ test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/indexing.pass.cpp @@ -8,6 +8,14 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 + +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7 + // dynarray.overview // const_reference at(size_type n) const; Index: test/libcxx/experimental/containers/sequences/dynarray/dynarray.zero/default.pass.cpp =================================================================== --- test/libcxx/experimental/containers/sequences/dynarray/dynarray.zero/default.pass.cpp +++ test/libcxx/experimental/containers/sequences/dynarray/dynarray.zero/default.pass.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability // dynarray.zero // dynarray shall provide support for the special case of construction with a size of zero. Index: test/libcxx/experimental/containers/sequences/dynarray/lit.local.cfg =================================================================== --- /dev/null +++ test/libcxx/experimental/containers/sequences/dynarray/lit.local.cfg @@ -0,0 +1,3 @@ +if ('availability' in config.available_features + and not 'libcpp-no-exceptions' in config.available_features): + config.unsupported = True Index: test/libcxx/language.support/support.dynamic/alloc.errors/new.badlength/bad_array_length.pass.cpp =================================================================== --- test/libcxx/language.support/support.dynamic/alloc.errors/new.badlength/bad_array_length.pass.cpp +++ test/libcxx/language.support/support.dynamic/alloc.errors/new.badlength/bad_array_length.pass.cpp @@ -8,6 +8,15 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability + +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 + // test bad_array_length #include Index: test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp =================================================================== --- test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp +++ test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp @@ -12,6 +12,13 @@ // REQUIRES: -faligned-allocation +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // RUN: %build -faligned-allocation // RUN: %run @@ -74,4 +81,4 @@ assert(typeid(std::align_val_t).name() == std::string("St11align_val_t")); } #endif -} \ No newline at end of file +} Index: test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp =================================================================== --- test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp +++ test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp @@ -9,6 +9,10 @@ // +// There was an overflow in the dylib on older macOS versions +// UNSUPPORTED: availability=macosx10.8 +// UNSUPPORTED: availability=macosx10.7 + // class strstreambuf // int overflow(int c); Index: test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp =================================================================== --- test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp +++ test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp @@ -7,6 +7,13 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // class error_category Index: test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp =================================================================== --- test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp +++ test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp @@ -13,6 +13,13 @@ // const error_category& system_category(); +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + #include #include #include Index: test/std/experimental/any/any.class/any.assign/copy.pass.cpp =================================================================== --- test/std/experimental/any/any.class/any.assign/copy.pass.cpp +++ test/std/experimental/any/any.class/any.assign/copy.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any& operator=(any const &); Index: test/std/experimental/any/any.class/any.assign/move.pass.cpp =================================================================== --- test/std/experimental/any/any.class/any.assign/move.pass.cpp +++ test/std/experimental/any/any.class/any.assign/move.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any& operator=(any &&); Index: test/std/experimental/any/any.class/any.assign/value.pass.cpp =================================================================== --- test/std/experimental/any/any.class/any.assign/value.pass.cpp +++ test/std/experimental/any/any.class/any.assign/value.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any& operator=(any const &); @@ -174,4 +181,4 @@ test_assign_throws(); test_assign_throws(); test_assign_throws(); -} \ No newline at end of file +} Index: test/std/experimental/any/any.class/any.cons/copy.pass.cpp =================================================================== --- test/std/experimental/any/any.class/any.cons/copy.pass.cpp +++ test/std/experimental/any/any.class/any.cons/copy.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any(any const &); Index: test/std/experimental/any/any.class/any.cons/move.pass.cpp =================================================================== --- test/std/experimental/any/any.class/any.cons/move.pass.cpp +++ test/std/experimental/any/any.class/any.cons/move.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any(any &&) noexcept; Index: test/std/experimental/any/any.class/any.cons/value.pass.cpp =================================================================== --- test/std/experimental/any/any.class/any.cons/value.pass.cpp +++ test/std/experimental/any/any.class/any.cons/value.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template any(Value &&) @@ -113,4 +120,4 @@ test_copy_value_throws(); test_copy_value_throws(); test_move_value_throws(); -} \ No newline at end of file +} Index: test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp =================================================================== --- test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp +++ test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any::clear() noexcept Index: test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp =================================================================== --- test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp +++ test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any::swap(any &) noexcept Index: test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp =================================================================== --- test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp +++ test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp @@ -9,6 +9,8 @@ // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx + // // template Index: test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp =================================================================== --- test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp +++ test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp @@ -42,4 +42,4 @@ any_cast(static_cast(a)); // expected-error@experimental/any:* 3 {{static_assert failed "_ValueType is required to be a reference or a CopyConstructible type."}} // expected-error@experimental/any:* 3 {{calling a private constructor of class 'no_copy'}} -} \ No newline at end of file +} Index: test/std/experimental/any/any.nonmembers/swap.pass.cpp =================================================================== --- test/std/experimental/any/any.nonmembers/swap.pass.cpp +++ test/std/experimental/any/any.nonmembers/swap.pass.cpp @@ -34,7 +34,8 @@ swap(a1, a2); - assert(any_cast(a1) == 2); - assert(any_cast(a2) == 1); + // Support testing against system dylibs that don't have bad_any_cast. + assert(*any_cast(&a1) == 2); + assert(*any_cast(&a2) == 1); } } Index: test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp =================================================================== --- test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp +++ test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp @@ -8,6 +8,12 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7 // Index: test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp =================================================================== --- test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp +++ test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp @@ -8,6 +8,12 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability_markup=macosx10.12 +// XFAIL: availability_markup=macosx10.11 +// XFAIL: availability_markup=macosx10.10 +// XFAIL: availability_markup=macosx10.9 +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7 // Index: test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp =================================================================== --- test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp +++ test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp @@ -8,6 +8,13 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7 + // // T& optional::value(); Index: test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp =================================================================== --- test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp +++ test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp @@ -8,6 +8,13 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7 + // // constexpr const T& optional::value() const; Index: test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp =================================================================== --- test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp +++ test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp @@ -7,6 +7,10 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 + // // template > Index: test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp =================================================================== --- test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp +++ test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 + // // int_type get(); Index: test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp =================================================================== --- test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp +++ test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 + // // basic_istream& get(char_type& c); Index: test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp =================================================================== --- test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp +++ test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // basic_istream& Index: test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp =================================================================== --- test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp +++ test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 + // // basic_istream& read(char_type* s, streamsize n); Index: test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp =================================================================== --- test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp +++ test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // streamsize readsome(char_type* s, streamsize n); Index: test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp =================================================================== --- test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp +++ test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp @@ -7,6 +7,9 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // basic_istream& seekg(pos_type pos); Index: test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp =================================================================== --- test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp +++ test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp @@ -7,6 +7,13 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // basic_istream& seekg(off_type off, ios_base::seekdir dir); Index: test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp =================================================================== --- test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp +++ test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.12 + // // template > Index: test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp =================================================================== --- test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp +++ test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp @@ -12,11 +12,18 @@ // UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11, c++14 // Older Clang versions do not support this -// XFAIL: clang-3, apple-clang +// XFAIL: clang-3, apple-clang-7, apple-clang-8 // None of the current GCC compilers support this. // XFAIL: gcc +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + #include #include #include Index: test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp =================================================================== --- test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp +++ test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp @@ -15,6 +15,13 @@ // FIXME change this to XFAIL. // UNSUPPORTED: no-aligned-allocation +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // test operator new #include Index: test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp =================================================================== --- test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp +++ test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp @@ -15,6 +15,13 @@ // FIXME turn this into an XFAIL // UNSUPPORTED: no-aligned-allocation +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // test operator new (nothrow) #include Index: test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp =================================================================== --- test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp +++ test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // UNSUPPORTED: sanitizer-new-delete +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // XFAIL: no-aligned-allocation // test operator new nothrow by replacing only operator new Index: test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp =================================================================== --- test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp +++ test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp @@ -13,6 +13,12 @@ // when sized deallocation is not supported, e.g., prior to C++14. // UNSUPPORTED: sanitizer-new-delete +// XFAIL: availability_markup=macosx10.11 +// XFAIL: availability_markup=macosx10.10 +// XFAIL: availability_markup=macosx10.9 +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7 + // NOTE: Only clang-3.7 and GCC 5.1 and greater support -fsized-deallocation. // REQUIRES: fsized-deallocation Index: test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp =================================================================== --- test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp +++ test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp @@ -10,13 +10,18 @@ // test aligned operator delete replacement. // UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11, c++14 - // Older Clang versions do not support this -// XFAIL: clang-3, apple-clang +// XFAIL: clang-3, apple-clang-7, apple-clang-8 // None of the current GCC compilers support this. // XFAIL: gcc +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 #include #include Index: test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp =================================================================== --- test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp +++ test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // asan and msan will not call the new handler. // UNSUPPORTED: sanitizer-new-delete Index: test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp =================================================================== --- test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp +++ test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // asan and msan will not call the new handler. // UNSUPPORTED: sanitizer-new-delete Index: test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp =================================================================== --- test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp +++ test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // UNSUPPORTED: sanitizer-new-delete +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // XFAIL: no-aligned-allocation // test operator new nothrow by replacing only operator new Index: test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp =================================================================== --- test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp +++ test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp @@ -13,6 +13,11 @@ // when sized deallocation is not supported, e.g., prior to C++14. // UNSUPPORTED: sanitizer-new-delete +// XFAIL: availability_markup=macosx10.11 +// XFAIL: availability_markup=macosx10.10 +// XFAIL: availability_markup=macosx10.9 +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7 // NOTE: Only clang-3.7 and GCC 5.1 and greater support -fsized-deallocation. // REQUIRES: fsized-deallocation Index: test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp =================================================================== --- test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp +++ test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp @@ -8,6 +8,14 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: libcpp-no-exceptions +// XFAIL: libcpp-no-exceptions + +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.11 + // test uncaught_exceptions #include Index: test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp =================================================================== --- test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp +++ test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp @@ -9,8 +9,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // Index: test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp =================================================================== --- test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp +++ test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp @@ -15,9 +15,6 @@ // charT tolower(charT) const; -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - #include #include Index: test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp =================================================================== --- test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp +++ test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp @@ -15,9 +15,6 @@ // const charT* tolower(charT* low, const charT* high) const; -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - #include #include #include Index: test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp =================================================================== --- test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp +++ test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp @@ -15,9 +15,6 @@ // charT toupper(charT) const; -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - #include #include Index: test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp =================================================================== --- test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp +++ test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp @@ -15,9 +15,6 @@ // const charT* toupper(charT* low, const charT* high) const; -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - #include #include #include Index: test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp =================================================================== --- test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp +++ test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp @@ -7,7 +7,8 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: apple-darwin +// This test is passing in an uncontrolled manner in some Apple environment. +// UNSUPPORTED: apple-darwin // Failure related to GLIBC's use of U00A0 as mon_thousands_sep // and U002E as mon_decimal_point. Index: test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp =================================================================== --- test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp +++ test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp @@ -7,7 +7,8 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: apple-darwin +// This test is passing in an uncontrolled manner in some Apple environment. +// UNSUPPORTED: apple-darwin // Failure related to GLIBC's use of U00A0 as mon_thousands_sep // and U002E as mon_decimal_point. Index: test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp =================================================================== --- test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp +++ test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp @@ -9,8 +9,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // Index: test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp =================================================================== --- test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp +++ test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp @@ -7,8 +7,10 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR11871 +// XFAIL: with_system_cxx_lib=macosx10.7 +// PR15445 +// XFAIL: with_system_cxx_lib=macosx10.8 // Index: test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp =================================================================== --- test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp +++ test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp @@ -6,6 +6,9 @@ // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// +// +// PR11871 +// XFAIL: with_system_cxx_lib=macosx10.7 // @@ -194,4 +197,16 @@ assert(v == -HUGE_VALF); } + { + v = -1; + const char str[] = "2-"; + std::ios_base::iostate err = ios.goodbit; + input_iterator iter = + f.get(input_iterator(str), + input_iterator(str+sizeof(str)), + ios, err, v); + assert(iter.base() == str+1); + assert(err == ios.goodbit); + assert(v == 2); + } } Index: test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp =================================================================== --- test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp +++ test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp @@ -6,6 +6,9 @@ // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// +// +// PR11871 +// XFAIL: with_system_cxx_lib=macosx10.7 // @@ -253,4 +256,16 @@ assert(err == ios.failbit); assert(v == -HUGE_VALL); } + { + v = -1; + const char str[] = "2-"; + std::ios_base::iostate err = ios.goodbit; + input_iterator iter = + f.get(input_iterator(str), + input_iterator(str+sizeof(str)), + ios, err, v); + assert(iter.base() == str+1); + assert(err == ios.goodbit); + assert(v == 2); + } } Index: test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp =================================================================== --- test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp +++ test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp @@ -9,6 +9,10 @@ // REQUIRES: locale.en_US.UTF-8 // REQUIRES: locale.ru_RU.UTF-8 +// UNSUPPORTED: sanitizer-new-delete + +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7 // Index: test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp =================================================================== --- test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp +++ test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp @@ -9,6 +9,10 @@ // REQUIRES: locale.en_US.UTF-8 // REQUIRES: locale.ru_RU.UTF-8 +// UNSUPPORTED: sanitizer-new-delete + +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7 // Index: test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp =================================================================== --- test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp +++ test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp @@ -9,6 +9,10 @@ // REQUIRES: locale.en_US.UTF-8 // REQUIRES: locale.ru_RU.UTF-8 +// UNSUPPORTED: sanitizer-new-delete + +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7 // Index: test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp =================================================================== --- test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp +++ test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp @@ -9,8 +9,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // Index: test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp =================================================================== --- test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp +++ test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.7 + // // template Index: test/std/numerics/rand/rand.device/ctor.pass.cpp =================================================================== --- test/std/numerics/rand/rand.device/ctor.pass.cpp +++ test/std/numerics/rand/rand.device/ctor.pass.cpp @@ -7,6 +7,12 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 + // // class random_device; Index: test/std/numerics/rand/rand.device/eval.pass.cpp =================================================================== --- test/std/numerics/rand/rand.device/eval.pass.cpp +++ test/std/numerics/rand/rand.device/eval.pass.cpp @@ -7,6 +7,12 @@ // //===----------------------------------------------------------------------===// +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 + // // class random_device; Index: test/std/re/re.traits/translate_nocase.pass.cpp =================================================================== --- test/std/re/re.traits/translate_nocase.pass.cpp +++ test/std/re/re.traits/translate_nocase.pass.cpp @@ -16,8 +16,8 @@ // REQUIRES: locale.en_US.UTF-8 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // TODO: investigation needed // XFAIL: linux-gnu Index: test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp =================================================================== --- test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp +++ test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp @@ -8,6 +8,12 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: libcpp-no-exceptions +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 + // // size_type max_size() const; Index: test/std/strings/string.conversions/stof.pass.cpp =================================================================== --- test/std/strings/string.conversions/stof.pass.cpp +++ test/std/strings/string.conversions/stof.pass.cpp @@ -7,8 +7,9 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // Index: test/std/strings/string.conversions/stol.pass.cpp =================================================================== --- test/std/strings/string.conversions/stol.pass.cpp +++ test/std/strings/string.conversions/stol.pass.cpp @@ -7,8 +7,9 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // Index: test/std/strings/string.conversions/stoll.pass.cpp =================================================================== --- test/std/strings/string.conversions/stoll.pass.cpp +++ test/std/strings/string.conversions/stoll.pass.cpp @@ -7,8 +7,9 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // Index: test/std/strings/string.conversions/stoul.pass.cpp =================================================================== --- test/std/strings/string.conversions/stoul.pass.cpp +++ test/std/strings/string.conversions/stoul.pass.cpp @@ -7,8 +7,9 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // Index: test/std/strings/string.conversions/stoull.pass.cpp =================================================================== --- test/std/strings/string.conversions/stoull.pass.cpp +++ test/std/strings/string.conversions/stoull.pass.cpp @@ -7,8 +7,9 @@ // //===----------------------------------------------------------------------===// // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // Index: test/std/thread/futures/futures.future_error/what.pass.cpp =================================================================== --- test/std/thread/futures/futures.future_error/what.pass.cpp +++ test/std/thread/futures/futures.future_error/what.pass.cpp @@ -12,9 +12,11 @@ // LWG 2056 changed the values of future_errc, so if we're using new headers // with an old library we'll get incorrect messages. // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 -// XFAIL: with_system_cxx_lib=x86_64-apple-darwin13 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 // Index: test/std/thread/thread.mutex/thread.lock/thread.lock.shared/lit.local.cfg =================================================================== --- /dev/null +++ test/std/thread/thread.mutex/thread.lock/thread.lock.shared/lit.local.cfg @@ -0,0 +1,2 @@ +if 'availability' in config.available_features: + config.unsupported = True Index: test/std/thread/thread.mutex/thread.mutex.requirements/thread.shared_mutex.requirements/lit.local.cfg =================================================================== --- /dev/null +++ test/std/thread/thread.mutex/thread.mutex.requirements/thread.shared_mutex.requirements/lit.local.cfg @@ -0,0 +1,2 @@ +if 'availability' in config.available_features: + config.unsupported = True Index: test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/lit.local.cfg =================================================================== --- /dev/null +++ test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/lit.local.cfg @@ -0,0 +1,2 @@ +if 'availability' in config.available_features: + config.unsupported = True Index: test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp =================================================================== --- test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp +++ test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp @@ -9,6 +9,15 @@ // // UNSUPPORTED: libcpp-has-no-threads +// This test depends on signal behaviour until r210210, so some system libs +// don't pass. +// +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 + // // template @@ -23,6 +32,7 @@ void sig_action(int) {} +#include int main() { int ec; Index: test/std/utilities/any/any.class/any.assign/copy.pass.cpp =================================================================== --- test/std/utilities/any/any.class/any.assign/copy.pass.cpp +++ test/std/utilities/any/any.class/any.assign/copy.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any& operator=(any const &); Index: test/std/utilities/any/any.class/any.assign/move.pass.cpp =================================================================== --- test/std/utilities/any/any.class/any.assign/move.pass.cpp +++ test/std/utilities/any/any.class/any.assign/move.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any& operator=(any &&); Index: test/std/utilities/any/any.class/any.assign/value.pass.cpp =================================================================== --- test/std/utilities/any/any.class/any.assign/value.pass.cpp +++ test/std/utilities/any/any.class/any.assign/value.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template Index: test/std/utilities/any/any.class/any.cons/copy.pass.cpp =================================================================== --- test/std/utilities/any/any.class/any.cons/copy.pass.cpp +++ test/std/utilities/any/any.class/any.cons/copy.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any(any const &); Index: test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp =================================================================== --- test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp +++ test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template any(in_place_type_t, Args&&...); Index: test/std/utilities/any/any.class/any.cons/move.pass.cpp =================================================================== --- test/std/utilities/any/any.class/any.cons/move.pass.cpp +++ test/std/utilities/any/any.class/any.cons/move.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any(any &&) noexcept; Index: test/std/utilities/any/any.class/any.cons/value.pass.cpp =================================================================== --- test/std/utilities/any/any.class/any.cons/value.pass.cpp +++ test/std/utilities/any/any.class/any.cons/value.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template any(Value &&) @@ -151,4 +158,4 @@ test_copy_value_throws(); test_move_value_throws(); test_sfinae_constraints(); -} \ No newline at end of file +} Index: test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp =================================================================== --- test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp +++ test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template emplace(Args&&...); Index: test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp =================================================================== --- test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp +++ test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any::reset() noexcept Index: test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp =================================================================== --- test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp +++ test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // any::swap(any &) noexcept Index: test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp =================================================================== --- test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp +++ test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template Index: test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp =================================================================== --- test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp +++ test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template Index: test/std/utilities/any/any.nonmembers/make_any.pass.cpp =================================================================== --- test/std/utilities/any/any.nonmembers/make_any.pass.cpp +++ test/std/utilities/any/any.nonmembers/make_any.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template any make_any(Args&&...); Index: test/std/utilities/any/any.nonmembers/swap.pass.cpp =================================================================== --- test/std/utilities/any/any.nonmembers/swap.pass.cpp +++ test/std/utilities/any/any.nonmembers/swap.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // void swap(any &, any &) noexcept Index: test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp =================================================================== --- test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp +++ test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // Index: test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp =================================================================== --- test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp +++ test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // Index: test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp =================================================================== --- test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp +++ test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // Index: test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp =================================================================== --- test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp +++ test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // Index: test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp =================================================================== --- test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp +++ test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // Index: test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp =================================================================== --- test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp +++ test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // Index: test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp =================================================================== --- test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp +++ test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // Index: test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp =================================================================== --- test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp +++ test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // Index: test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp =================================================================== --- test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp +++ test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // Index: test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp =================================================================== --- test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp +++ test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp @@ -11,8 +11,8 @@ // // This test uses new symbols that were not defined in the libc++ shipped on // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 // Index: test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp =================================================================== --- test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp +++ test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp @@ -9,6 +9,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // class bad_optional_access is default constructible Index: test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp =================================================================== --- test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp +++ test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp @@ -9,6 +9,13 @@ // // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template Index: test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp =================================================================== --- test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp +++ test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp @@ -9,6 +9,13 @@ // // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // constexpr optional(const T& v); Index: test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp =================================================================== --- test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp +++ test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp @@ -8,6 +8,14 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // optional(optional&& rhs); Index: test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp =================================================================== --- test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp +++ test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp @@ -9,6 +9,13 @@ // // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // constexpr optional(T&& v); Index: test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp =================================================================== --- test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp +++ test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp @@ -8,6 +8,14 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // constexpr T& optional::value() &; Index: test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp =================================================================== --- test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp +++ test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp @@ -8,6 +8,14 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // constexpr const T& optional::value() const &; Index: test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp =================================================================== --- test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp +++ test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp @@ -8,6 +8,14 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // constexpr const T& optional::value() const &&; Index: test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp =================================================================== --- test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp +++ test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // constexpr T& optional::value() &&; #include Index: test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp =================================================================== --- test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp +++ test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp @@ -7,14 +7,14 @@ // //===----------------------------------------------------------------------===// // -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - // Due to C++17 inline variables ASAN flags this test as containing an ODR // violation because Clock::is_steady is defined in both the dylib and this TU. -// UNSUPPORTED: asan +// UNSUPPORTED: asan + +// Starting with C++17, Clock::is_steady is inlined (but not before LLVM-3.9!), +// but before C++17 it requires the symbol to be present in the dylib. +// XFAIL: availability=macosx10.7 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +// XFAIL: availability=macosx10.8 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) // Index: test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp =================================================================== --- test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp +++ test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp @@ -7,16 +7,17 @@ // //===----------------------------------------------------------------------===// // -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 // UNSUPPORTED: libcpp-has-no-monotonic-clock // Due to C++17 inline variables ASAN flags this test as containing an ODR // violation because Clock::is_steady is defined in both the dylib and this TU. // UNSUPPORTED: asan +// Starting with C++17, Clock::is_steady is inlined (but not before LLVM-3.9!), +// but before C++17 it requires the symbol to be present in the dylib. +// XFAIL: availability=macosx10.7 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +// XFAIL: availability=macosx10.8 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) + // // steady_clock Index: test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp =================================================================== --- test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp +++ test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp @@ -7,15 +7,15 @@ // //===----------------------------------------------------------------------===// // -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 - // Due to C++17 inline variables ASAN flags this test as containing an ODR // violation because Clock::is_steady is defined in both the dylib and this TU. // UNSUPPORTED: asan +// Starting with C++17, Clock::is_steady is inlined (but not before LLVM-3.9!), +// but before C++17 it requires the symbol to be present in the dylib. +// XFAIL: availability=macosx10.7 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +// XFAIL: availability=macosx10.8 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) + // // system_clock Index: test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp =================================================================== --- test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp +++ test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // /* Index: test/std/utilities/variant/variant.get/get_index.pass.cpp =================================================================== --- test/std/utilities/variant/variant.get/get_index.pass.cpp +++ test/std/utilities/variant/variant.get/get_index.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template Index: test/std/utilities/variant/variant.get/get_type.pass.cpp =================================================================== --- test/std/utilities/variant/variant.get/get_type.pass.cpp +++ test/std/utilities/variant/variant.get/get_type.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template constexpr T& get(variant& v); Index: test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp =================================================================== --- test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp +++ test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template class variant; Index: test/std/utilities/variant/variant.visit/visit.pass.cpp =================================================================== --- test/std/utilities/variant/variant.visit/visit.pass.cpp +++ test/std/utilities/variant/variant.visit/visit.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // // template // constexpr see below visit(Visitor&& vis, Variants&&... vars); Index: utils/libcxx/test/config.py =================================================================== --- utils/libcxx/test/config.py +++ utils/libcxx/test/config.py @@ -122,6 +122,7 @@ self.configure_cxx() self.configure_triple() self.configure_deployment() + self.configure_availability() self.configure_src_root() self.configure_obj_root() self.configure_cxx_stdlib_under_test() @@ -284,6 +285,12 @@ self.lit_config.note( "inferred use_system_cxx_lib as: %r" % self.use_system_cxx_lib) + def configure_availability(self): + # FIXME doc + self.with_availability = self.get_lit_bool('with_availability', False) + self.lit_config.note( + "inferred with_availability as: %r" % self.with_availability) + def configure_cxx_stdlib_under_test(self): self.cxx_stdlib_under_test = self.get_lit_conf( 'cxx_stdlib_under_test', 'libc++') @@ -305,6 +312,9 @@ def configure_use_clang_verify(self): '''If set, run clang with -verify on failing tests.''' + if self.with_availability: + self.use_clang_verify = False + return self.use_clang_verify = self.get_lit_bool('use_clang_verify') if self.use_clang_verify is None: # NOTE: We do not test for the -verify flag directly because @@ -345,6 +355,13 @@ self.cxx.use_ccache = True self.lit_config.note('enabling ccache') + def add_deployement_feature(self, feature): + (arch, name, version) = self.config.deployment + self.config.available_features.add('%s=%s-%s' % (feature, arch, name)) + self.config.available_features.add('%s=%s' % (feature, name)) + self.config.available_features.add('%s=%s%s' % (feature, name, version)) + self.config.available_features.add('%s=%s%s' % (feature, name, version)) + def configure_features(self): additional_features = self.get_lit_conf('additional_features') if additional_features: @@ -363,15 +380,31 @@ self.config.available_features.add( 'with_system_cxx_lib=%s' % self.config.target_triple) - # Insert the platform name into the available features as a lower case. - self.config.available_features.add(target_platform) + # Add subcomponents individually. + target_components = self.config.target_triple.split('-') + for component in target_components: + self.config.available_features.add( + 'with_system_cxx_lib=%s' % component) - # If we're using deployment, add sub-components of the triple using - # "darwin" instead of the platform name. - if self.use_deployment: - arch, _, _ = self.config.deployment + # Add available features for more generic versions of the target + # triple attached to with_system_cxx_lib. + if self.use_deployment: + self.add_deployement_feature('with_system_cxx_lib') + + # Configure the availability markup checks features. + if self.with_availability: + self.config.available_features.add('availability_markup') + self.add_deployement_feature('availability_markup') + + if self.use_system_cxx_lib or self.with_availability: + self.config.available_features.add('availability') + self.add_deployement_feature('availability') + + if platform.system() == 'Darwin': self.config.available_features.add('apple-darwin') - self.config.available_features.add(arch + '-apple-darwin') + + # Insert the platform name into the available features as a lower case. + self.config.available_features.add(target_platform) # Simulator testing can take a really long time for some of these tests # so add a feature check so we can REQUIRES: long_tests in them @@ -500,6 +533,10 @@ self.cxx.flags += ['-arch', arch] self.cxx.flags += ['-m' + name + '-version-min=' + version] + # Disable availability unless explicitely requested + if not self.with_availability: + self.cxx.flags += ['-D_LIBCPP_DISABLE_AVAILABILITY'] + def configure_compile_flags_header_includes(self): support_path = os.path.join(self.libcxx_src_root, 'test', 'support') if self.cxx_stdlib_under_test != 'libstdc++' and \