This breaks all our mac builds with: /b/c/b/ClangToTMac__dbg_/src/third_party/llvm-build/Release+Asserts/bin/../include/c++/v1/__threading_support:154:1: error: unknown type name 'mach_port_t' mach_port_t __libcpp_thread_get_port();
On Tue, Jan 3, 2017 at 7:59 AM, Asiri Rathnayake via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: asiri > Date: Tue Jan 3 06:59:50 2017 > New Revision: 290889 > > URL: http://llvm.org/viewvc/llvm-project?rev=290889&view=rev > Log: > [libcxx] Add build/test support for the externally threaded libc++abi > variant > > Differential revision: https://reviews.llvm.org/D27576 > > Reviewers: EricWF > > Modified: > libcxx/trunk/CMakeLists.txt > libcxx/trunk/include/__threading_support > libcxx/trunk/test/CMakeLists.txt > libcxx/trunk/test/libcxx/test/config.py > libcxx/trunk/test/lit.site.cfg.in > > Modified: libcxx/trunk/CMakeLists.txt > URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/ > CMakeLists.txt?rev=290889&r1=290888&r2=290889&view=diff > ============================================================ > ================== > --- libcxx/trunk/CMakeLists.txt (original) > +++ libcxx/trunk/CMakeLists.txt Tue Jan 3 06:59:50 2017 > @@ -221,14 +221,21 @@ if(LIBCXX_ENABLE_THREADS AND NOT LIBCXX_ > " when LIBCXX_ENABLE_THREADS is also set to OFF.") > endif() > > -if(LIBCXX_HAS_PTHREAD_API AND NOT LIBCXX_ENABLE_THREADS) > - message(FATAL_ERROR "LIBCXX_HAS_PTHREAD_API can only be set to ON" > - " when LIBCXX_ENABLE_THREADS is also set to ON.") > +if(NOT LIBCXX_ENABLE_THREADS) > + if(LIBCXX_HAS_PTHREAD_API) > + message(FATAL_ERROR "LIBCXX_HAS_PTHREAD_API can only be set to ON" > + " when LIBCXX_ENABLE_THREADS is also set to ON.") > + endif() > + if(LIBCXX_HAS_EXTERNAL_THREAD_API) > + message(FATAL_ERROR "LIBCXX_HAS_EXTERNAL_THREAD_API can only be set > to ON" > + " when LIBCXX_ENABLE_THREADS is also set to ON.") > + endif() > endif() > > -if(LIBCXX_HAS_EXTERNAL_THREAD_API AND NOT LIBCXX_ENABLE_THREADS) > - message(FATAL_ERROR "LIBCXX_HAS_EXTERNAL_THREAD_API can only be set to > ON" > - " when LIBCXX_ENABLE_THREADS is also set to ON.") > +if(LIBCXX_HAS_PTHREAD_API AND LIBCXX_HAS_EXTERNAL_THREAD_API) > + message(FATAL_ERROR "The options LIBCXX_HAS_EXTERNAL_THREAD_API" > + "and LIBCXX_HAS_PTHREAD_API cannot be both" > + "set to ON at the same time.") > endif() > > # Ensure LLVM_USE_SANITIZER is not specified when LIBCXX_GENERATE_COVERAGE > > Modified: libcxx/trunk/include/__threading_support > URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/_ > _threading_support?rev=290889&r1=290888&r2=290889&view=diff > ============================================================ > ================== > --- libcxx/trunk/include/__threading_support (original) > +++ libcxx/trunk/include/__threading_support Tue Jan 3 06:59:50 2017 > @@ -67,7 +67,11 @@ typedef pthread_mutex_t __libcpp_mutex_t > typedef pthread_cond_t __libcpp_condvar_t; > #define _LIBCPP_CONDVAR_INITIALIZER PTHREAD_COND_INITIALIZER > > -// THread ID > +// Execute once > +typedef pthread_once_t __libcpp_exec_once_flag; > +#define _LIBCPP_EXEC_ONCE_INITIALIZER PTHREAD_ONCE_INIT > + > +// Thread id > typedef pthread_t __libcpp_thread_id; > > // Thread > @@ -110,7 +114,17 @@ int __libcpp_condvar_timedwait(__libcpp_ > _LIBCPP_THREAD_ABI_VISIBILITY > int __libcpp_condvar_destroy(__libcpp_condvar_t* __cv); > > -// Thread ID > +// Execute once > +_LIBCPP_THREAD_ABI_VISIBILITY > +int __libcpp_execute_once(__libcpp_exec_once_flag *flag, > + void (*init_routine)(void)); > + > +// Thread id > +#if defined(__APPLE__) && !defined(__arm__) > +_LIBCPP_THREAD_ABI_VISIBILITY > +mach_port_t __libcpp_thread_get_port(); > +#endif > + > _LIBCPP_THREAD_ABI_VISIBILITY > bool __libcpp_thread_id_equal(__libcpp_thread_id t1, __libcpp_thread_id > t2); > > @@ -145,7 +159,7 @@ _LIBCPP_THREAD_ABI_VISIBILITY > void *__libcpp_tls_get(__libcpp_tls_key __key); > > _LIBCPP_THREAD_ABI_VISIBILITY > -void __libcpp_tls_set(__libcpp_tls_key __key, void *__p); > +int __libcpp_tls_set(__libcpp_tls_key __key, void *__p); > > #if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) || \ > defined(_LIBCPP_BUILDING_THREAD_API_EXTERNAL_PTHREAD) > @@ -221,6 +235,19 @@ int __libcpp_condvar_destroy(__libcpp_co > return pthread_cond_destroy(__cv); > } > > +// Execute once > +int __libcpp_execute_once(__libcpp_exec_once_flag *flag, > + void (*init_routine)(void)) { > + return pthread_once(flag, init_routine); > +} > + > +// Thread id > +#if defined(__APPLE__) && !defined(__arm__) > +mach_port_t __libcpp_thread_get_port() { > + return pthread_mach_thread_np(pthread_self()); > +} > +#endif > + > // Returns non-zero if the thread ids are equal, otherwise 0 > bool __libcpp_thread_id_equal(__libcpp_thread_id t1, __libcpp_thread_id > t2) > { > @@ -276,9 +303,9 @@ void *__libcpp_tls_get(__libcpp_tls_key > return pthread_getspecific(__key); > } > > -void __libcpp_tls_set(__libcpp_tls_key __key, void *__p) > +int __libcpp_tls_set(__libcpp_tls_key __key, void *__p) > { > - pthread_setspecific(__key, __p); > + return pthread_setspecific(__key, __p); > } > > #endif // _LIBCPP_HAS_THREAD_API_PTHREAD > > Modified: libcxx/trunk/test/CMakeLists.txt > URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/ > CMakeLists.txt?rev=290889&r1=290888&r2=290889&view=diff > ============================================================ > ================== > --- libcxx/trunk/test/CMakeLists.txt (original) > +++ libcxx/trunk/test/CMakeLists.txt Tue Jan 3 06:59:50 2017 > @@ -55,18 +55,20 @@ configure_file( > ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg > @ONLY) > > +set(LIBCXX_TEST_DEPS "") > + > if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY) > - set(experimental_dep cxx_experimental) > + set(LIBCXX_TEST_DEPS cxx_experimental) > endif() > > if (LIBCXX_HAS_EXTERNAL_THREAD_API) > - set(external_threads_dep cxx_external_threads) > + list(APPEND LIBCXX_TEST_DEPS cxx_external_threads) > endif() > > add_lit_testsuite(check-cxx > "Running libcxx tests" > ${CMAKE_CURRENT_BINARY_DIR} > - DEPENDS cxx ${experimental_dep} ${external_threads_dep}) > + DEPENDS cxx ${LIBCXX_TEST_DEPS}) > > add_custom_target(check-libcxx DEPENDS check-cxx) > > > Modified: libcxx/trunk/test/libcxx/test/config.py > URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/ > libcxx/test/config.py?rev=290889&r1=290888&r2=290889&view=diff > ============================================================ > ================== > --- libcxx/trunk/test/libcxx/test/config.py (original) > +++ libcxx/trunk/test/libcxx/test/config.py Tue Jan 3 06:59:50 2017 > @@ -579,10 +579,6 @@ class Configuration(object): > self.cxx.link_flags += [abs_path] > else: > self.cxx.link_flags += ['-lc++'] > - # This needs to come after -lc++ as we want its unresolved > thread-api symbols > - # to be picked up from this one. > - if self.get_lit_bool('libcxx_external_thread_api', > default=False): > - self.cxx.link_flags += ['-lc++external_threads'] > > def configure_link_flags_abi_library(self): > cxx_abi = self.get_lit_conf('cxx_abi', 'libcxxabi') > @@ -611,6 +607,8 @@ class Configuration(object): > 'C++ ABI setting %s unsupported for tests' % cxx_abi) > > def configure_extra_library_flags(self): > + if self.get_lit_bool('cxx_ext_threads', default=False): > + self.cxx.link_flags += ['-lc++external_threads'] > self.target_info.add_cxx_link_flags(self.cxx.link_flags) > > def configure_color_diagnostics(self): > > Modified: libcxx/trunk/test/lit.site.cfg.in > URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/lit. > site.cfg.in?rev=290889&r1=290888&r2=290889&view=diff > ============================================================ > ================== > --- libcxx/trunk/test/lit.site.cfg.in (original) > +++ libcxx/trunk/test/lit.site.cfg.in Tue Jan 3 06:59:50 2017 > @@ -28,7 +28,7 @@ config.has_libatomic = "@LIBC > config.use_libatomic = "@LIBCXX_HAVE_CXX_ATOMICS_WITH_LIB@" > > config.libcxxabi_shared = "@LIBCXXABI_ENABLE_SHARED@" > -config.libcxx_external_thread_api = "@LIBCXX_HAS_EXTERNAL_THREAD_API@" > +config.cxx_ext_threads = "@LIBCXX_HAS_EXTERNAL_THREAD_API@" > > # Let the main config do the real work. > config.loaded_site_config = True > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits