mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 23:51:56 +00:00
[libcxx] Don't depend on availability markup to provide the streams in the dylib
Whether an explicit instantiation declaration should be provided is not a matter of availability markup. This problem is exemplified by the fact that some tests were incorrectly marked as XFAIL when they should instead have been using the definition of streams from the headers, and hence passing, and that, regardless of whether visibility annotations are enabled. llvm-svn: 348436
This commit is contained in:
parent
1770c9ad24
commit
f7f5a1f778
@ -1359,16 +1359,19 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container(
|
||||
# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS
|
||||
#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) && \
|
||||
// The stream API was dropped and re-added in the dylib shipped on macOS
|
||||
// and iOS. We can only assume the dylib to provide these definitions for
|
||||
// macosx >= 10.9 and ios >= 7.0. Otherwise, the definitions are available
|
||||
// from the headers, but not from the dylib. Explicit instantiation
|
||||
// declarations for streams exist conditionally to this; if we provide
|
||||
// an explicit instantiation declaration and we try to deploy to a dylib
|
||||
// that does not provide those symbols, we'll get a load-time error.
|
||||
#if !defined(_LIBCPP_BUILDING_LIBRARY) && \
|
||||
((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
|
||||
# define _LIBCPP_DO_NOT_ASSUME_STREAMS_EXPLICIT_INSTANTIATION_IN_DYLIB
|
||||
#endif
|
||||
|
||||
#if defined(_LIBCPP_COMPILER_IBM)
|
||||
|
@ -1504,7 +1504,7 @@ operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Size>& __x)
|
||||
return __is;
|
||||
}
|
||||
|
||||
#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE
|
||||
#ifndef _LIBCPP_DO_NOT_ASSUME_STREAMS_EXPLICIT_INSTANTIATION_IN_DYLIB
|
||||
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream<char>)
|
||||
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream<wchar_t>)
|
||||
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_iostream<char>)
|
||||
|
@ -1092,7 +1092,7 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Size>& __x)
|
||||
use_facet<ctype<_CharT> >(__os.getloc()).widen('1'));
|
||||
}
|
||||
|
||||
#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE
|
||||
#ifndef _LIBCPP_DO_NOT_ASSUME_STREAMS_EXPLICIT_INSTANTIATION_IN_DYLIB
|
||||
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<char>)
|
||||
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<wchar_t>)
|
||||
#endif
|
||||
|
@ -486,7 +486,7 @@ basic_streambuf<_CharT, _Traits>::overflow(int_type)
|
||||
return traits_type::eof();
|
||||
}
|
||||
|
||||
#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE
|
||||
#ifndef _LIBCPP_DO_NOT_ASSUME_STREAMS_EXPLICIT_INSTANTIATION_IN_DYLIB
|
||||
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf<char>)
|
||||
_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf<wchar_t>)
|
||||
|
||||
|
@ -7,8 +7,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// XFAIL: with_system_cxx_lib=macosx10.7
|
||||
|
||||
// <istream>
|
||||
|
||||
// int_type get();
|
||||
|
@ -7,8 +7,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// XFAIL: with_system_cxx_lib=macosx10.7
|
||||
|
||||
// <istream>
|
||||
|
||||
// basic_istream<charT,traits>& get(char_type& c);
|
||||
|
@ -7,13 +7,13 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// In macosx10.9 to macosx10.14, streams are provided in the dylib AND they
|
||||
// have a bug in how they handle null-termination in case of errors (see D40677).
|
||||
// XFAIL: with_system_cxx_lib=macosx10.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.8
|
||||
// XFAIL: with_system_cxx_lib=macosx10.7
|
||||
|
||||
// <istream>
|
||||
|
||||
|
@ -7,13 +7,13 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// In macosx10.9 to macosx10.14, streams are provided in the dylib AND they
|
||||
// have a bug in how they handle null-termination in case of errors (see D40677).
|
||||
// XFAIL: with_system_cxx_lib=macosx10.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.8
|
||||
// XFAIL: with_system_cxx_lib=macosx10.7
|
||||
|
||||
// <istream>
|
||||
|
||||
|
@ -7,13 +7,13 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// In macosx10.9 to macosx10.14, streams are provided in the dylib AND they
|
||||
// have a bug in how they handle null-termination in case of errors (see D40677).
|
||||
// XFAIL: with_system_cxx_lib=macosx10.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.8
|
||||
// XFAIL: with_system_cxx_lib=macosx10.7
|
||||
|
||||
// <istream>
|
||||
|
||||
|
@ -7,13 +7,13 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// In macosx10.9 to macosx10.14, streams are provided in the dylib AND they
|
||||
// have a bug in how they handle null-termination in case of errors (see D40677).
|
||||
// XFAIL: with_system_cxx_lib=macosx10.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.8
|
||||
// XFAIL: with_system_cxx_lib=macosx10.7
|
||||
|
||||
// <istream>
|
||||
|
||||
|
@ -7,9 +7,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// XFAIL: with_system_cxx_lib=macosx10.7
|
||||
// XFAIL: with_system_cxx_lib=macosx10.8
|
||||
|
||||
// <istream>
|
||||
|
||||
// basic_istream<charT,traits>&
|
||||
|
@ -7,8 +7,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// XFAIL: with_system_cxx_lib=macosx10.7
|
||||
|
||||
// <istream>
|
||||
|
||||
// basic_istream<charT,traits>& read(char_type* s, streamsize n);
|
||||
|
@ -7,9 +7,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// XFAIL: with_system_cxx_lib=macosx10.7
|
||||
// XFAIL: with_system_cxx_lib=macosx10.8
|
||||
|
||||
// <istream>
|
||||
|
||||
// streamsize readsome(char_type* s, streamsize n);
|
||||
|
@ -7,9 +7,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// XFAIL: with_system_cxx_lib=macosx10.7
|
||||
// XFAIL: with_system_cxx_lib=macosx10.8
|
||||
|
||||
// <istream>
|
||||
|
||||
// basic_istream<charT,traits>& seekg(pos_type pos);
|
||||
|
@ -10,8 +10,6 @@
|
||||
// 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
|
||||
|
||||
// <istream>
|
||||
|
||||
|
@ -7,8 +7,6 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// XFAIL: with_system_cxx_lib=macosx10.7
|
||||
|
||||
// <complex>
|
||||
|
||||
// template<class T, class charT, class traits>
|
||||
|
Loading…
Reference in New Issue
Block a user