Yes, things are happy again, thanks! Our bots currently use the macOS 10.10 SDK.
On Thu, Jan 26, 2017 at 6:56 AM, Asiri Rathnayake < asiri.rathnay...@gmail.com> wrote: > Hi Nico, > > Hopefully I've sorted this out in r293166/r293167. Please let me know if > things are not back to normal. > > (I'll keep an eye on your builder too) > > / Asiri > > On Wed, Jan 25, 2017 at 8:42 PM, Asiri Rathnayake < > asiri.rathnay...@gmail.com> wrote: > >> Hi Nico, >> >> Thanks for the links. I may have a clue to what is going on. >> >> I think in your Mac environment, <pthread.h> does not provide >> either pthread_mach_thread_np() function or define the type mach_port_t >> (is there a way for you to check this btw? just to make sure). >> >> This was not a problem before (for your builds) because this function was >> only used in libcxxabi sources. In my eagerness to get rid of all pthread >> dependencies in libcxx/libcxxabi, I have lifted this out into >> __threading_support header in libcxx (which is our new threading API for >> both libcxx and libcxxabi). >> >> @Eric: would it be OK to leave this Mac-specific pthread dependency in >> libcxxabi sources as it was? In that way, libcxx builds like Nico's won't >> be affected. >> >> Another option is to try and detect the conditions (on Mac environments) >> where pthread_mach_thread_np/mach_port_t is available, and only define >> the corresponding libcxx thread-api function (__libcpp_thread_get_port) >> when this condition is true. Unfortunately I'm not familiar with Mac enough >> to know this. Any thoughts? >> >> Side note:- Btw, if I'm correct with the above analysis, it won't be >> possible to build libcxxabi in Nico's environment (even before my changes). >> The dependency on pthread_mach_thread_np() was already there >> in __cxa_guard_acquire(). >> >> Thanks. >> >> / Asiri >> >> >> On Wed, Jan 25, 2017 at 7:34 PM, Nico Weber <tha...@chromium.org> wrote: >> >>> Sure! https://build.chromium.org/p/chromium.fyi/builders/Cla >>> ngToTMacASan/builds/8565/steps/gclient%20runhooks/logs/stdio has the >>> invocations to build llvm/clang/compiler/rt, and >>> https://build.chromium.org/p/chromium.fyi/builders/Clang >>> ToTMacASan/builds/8565/steps/compile/logs/stdio is the actual build >>> using that setup. >>> >>> On Wed, Jan 25, 2017 at 1:57 PM, Asiri Rathnayake < >>> asiri.rathnay...@gmail.com> wrote: >>> >>>> @Nico: could you let me know your build configuration? (cmake options) >>>> >>>> I'm surprised this went unnoticed for so long. >>>> >>>> Thanks. >>>> >>>> / Asiri >>>> >>>> On 25 Jan 2017 5:52 p.m., "Asiri Rathnayake" < >>>> asiri.rathnay...@gmail.com> wrote: >>>> >>>>> (including cfe-commits) >>>>> >>>>> On Wed, Jan 25, 2017 at 5:51 PM, Asiri Rathnayake < >>>>> asiri.rathnay...@gmail.com> wrote: >>>>> >>>>>> Hi Nico, >>>>>> >>>>>> On Wed, Jan 25, 2017 at 5:32 PM, Nico Weber via cfe-commits < >>>>>> cfe-commits@lists.llvm.org> wrote: >>>>>> >>>>>>> Is it intentional that this change affects >>>>>>> non-LIBCXX_HAS_EXTERNAL_THREAD_API builds at all?# >>>>>>> >>>>>> >>>>>> Nope. But I'm not sure how this got broken on Mac. >>>>>> >>>>>> IIRC, <pthread.h> defines mach_port_t type on Mac, which gets >>>>>> included when _LIBCPP_HAS_THREAD_API_PTHREAD is defined (which is >>>>>> what we expect to be the case on Mac, normally). >>>>>> >>>>>> I'll have to build this on a Mac tomorrow. Hopefully that's OK? >>>>>> >>>>>> Cheers, >>>>>> >>>>>> / Asiri >>>>>> >>>>>> >>>>>> >>>>>>> >>>>>>> On Wed, Jan 25, 2017 at 12:31 PM, Nico Weber <tha...@chromium.org> >>>>>>> wrote: >>>>>>> >>>>>>>> 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/__t >>>>>>>>> hreading_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/CMakeL >>>>>>>>> ists.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.si >>>>>>>>> te.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_A >>>>>>>>> PI@" >>>>>>>>> >>>>>>>>> # 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 >>>>>>> >>>>>>> >>>>>> >>>>> >>> >> >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits