Ops. Fixed in r291517! On Mon, Jan 9, 2017 at 2:13 PM, Reid Kleckner <r...@google.com> wrote: > This appears to have broken the Chromium build: > https://build.chromium.org/p/chromium.fyi/builders/ClangToTMac/builds/12620/steps/gclient%20runhooks/logs/stdio > FAILED: projects/libcxx/lib/CMakeFiles/cxx_objects.dir/__/src/chrono.cpp.o > /Applications/Xcode8.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ > -D_DEBUG -D_LIBCPP_BUILDING_LIBRARY -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER > -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS > -Iprojects/libcxx/lib > -I/b/c/b/ClangToTMac/src/third_party/llvm/projects/libcxx/lib -Iinclude > -I/b/c/b/ClangToTMac/src/third_party/llvm/include > -I/b/c/b/ClangToTMac/src/third_party/llvm/projects/libcxx/include > -DLLVM_FORCE_HEAD_REVISION -fPIC -fvisibility-inlines-hidden -Wall -W > -Wno-unused-parameter -Wwrite-strings -Wcast-qual > -Wmissing-field-initializers -Wno-long-long -Wcovered-switch-default > -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion > -Werror=date-time -std=c++11 -fcolor-diagnostics -O3 -isysroot > /Applications/Xcode8.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk > -mmacosx-version-min=10.11 -UNDEBUG -std=c++11 -nostdinc++ > -fvisibility-inlines-hidden -Wall -Wextra -W -Wwrite-strings > -Wno-unused-parameter -Wno-long-long -Werror=return-type > -Wno-user-defined-literals -Wno-covered-switch-default -Wno-error -fPIC -MMD > -MT projects/libcxx/lib/CMakeFiles/cxx_objects.dir/__/src/chrono.cpp.o -MF > projects/libcxx/lib/CMakeFiles/cxx_objects.dir/__/src/chrono.cpp.o.d -o > projects/libcxx/lib/CMakeFiles/cxx_objects.dir/__/src/chrono.cpp.o -c > /b/c/b/ClangToTMac/src/third_party/llvm/projects/libcxx/src/chrono.cpp > /b/c/b/ClangToTMac/src/third_party/llvm/projects/libcxx/src/chrono.cpp:102:5: > error: use of undeclared identifier 'gettimeofday' > gettimeofday(&tv, 0); > ^ > > The interesting flag in there is probably -mmacosx-version-min=10.11. Any > thoughts on what's going wrong? > > On Mon, Jan 9, 2017 at 11:21 AM, Bruno Cardoso Lopes via cfe-commits > <cfe-commits@lists.llvm.org> wrote: >> >> Author: bruno >> Date: Mon Jan 9 13:21:48 2017 >> New Revision: 291466 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=291466&view=rev >> Log: >> [Chrono][Darwin] Make steady_clock use CLOCK_UPTIME_RAW >> >> Use CLOCK_UPTIME_RAW in case clock_gettime is available on Darwin. >> >> On Apple platforms only CLOCK_UPTIME_RAW or mach_absolute_time are able >> to time functions in the nanosecond range. Thus, they are the only >> acceptable implementations of steady_clock. >> >> Differential Revision: https://reviews.llvm.org/D27429 >> >> rdar://problem/29449467 >> >> Modified: >> libcxx/trunk/src/chrono.cpp >> >> Modified: libcxx/trunk/src/chrono.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/chrono.cpp?rev=291466&r1=291465&r2=291466&view=diff >> >> ============================================================================== >> --- libcxx/trunk/src/chrono.cpp (original) >> +++ libcxx/trunk/src/chrono.cpp Mon Jan 9 13:21:48 2017 >> @@ -12,6 +12,28 @@ >> #include "system_error" // __throw_system_error >> #include <time.h> // clock_gettime, CLOCK_MONOTONIC and >> CLOCK_REALTIME >> >> +#if (__APPLE__) >> +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) >> +#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101200 >> +#define _LIBCXX_USE_CLOCK_GETTIME >> +#endif >> +#elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) >> +#if __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 100000 >> +#define _LIBCXX_USE_CLOCK_GETTIME >> +#endif >> +#elif defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) >> +#if __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ >= 100000 >> +#define _LIBCXX_USE_CLOCK_GETTIME >> +#endif >> +#elif defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) >> +#if __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ >= 30000 >> +#define _LIBCXX_USE_CLOCK_GETTIME >> +#endif >> +#endif // __ENVIRONMENT_.*_VERSION_MIN_REQUIRED__ >> +#else >> +#define _LIBCXX_USE_CLOCK_GETTIME >> +#endif // __APPLE__ >> + >> #if defined(_LIBCPP_WIN32API) >> #define WIN32_LEAN_AND_MEAN >> #define VC_EXTRA_LEAN >> @@ -70,16 +92,16 @@ system_clock::now() _NOEXCEPT >> static_cast<__int64>(ft.dwLowDateTime)}; >> return time_point(duration_cast<duration>(d - nt_to_unix_epoch)); >> #else >> -#ifdef CLOCK_REALTIME >> +#if defined(_LIBCXX_USE_CLOCK_GETTIME) && defined(CLOCK_REALTIME) >> struct timespec tp; >> if (0 != clock_gettime(CLOCK_REALTIME, &tp)) >> __throw_system_error(errno, "clock_gettime(CLOCK_REALTIME) >> failed"); >> return time_point(seconds(tp.tv_sec) + microseconds(tp.tv_nsec / >> 1000)); >> -#else // !CLOCK_REALTIME >> +#else >> timeval tv; >> gettimeofday(&tv, 0); >> return time_point(seconds(tv.tv_sec) + microseconds(tv.tv_usec)); >> -#endif // CLOCK_REALTIME >> +#endif // _LIBCXX_USE_CLOCK_GETTIME && CLOCK_REALTIME >> #endif >> } >> >> @@ -106,6 +128,18 @@ const bool steady_clock::is_steady; >> >> #if defined(__APPLE__) >> >> +// Darwin libc versions >= 1133 provide ns precision via CLOCK_UPTIME_RAW >> +#if defined(_LIBCXX_USE_CLOCK_GETTIME) && defined(CLOCK_UPTIME_RAW) >> +steady_clock::time_point >> +steady_clock::now() _NOEXCEPT >> +{ >> + struct timespec tp; >> + if (0 != clock_gettime(CLOCK_UPTIME_RAW, &tp)) >> + __throw_system_error(errno, "clock_gettime(CLOCK_UPTIME_RAW) >> failed"); >> + return time_point(seconds(tp.tv_sec) + nanoseconds(tp.tv_nsec)); >> +} >> + >> +#else >> // mach_absolute_time() * MachInfo.numer / MachInfo.denom is the number >> of >> // nanoseconds since the computer booted up. MachInfo.numer and >> MachInfo.denom >> // are run time constants supplied by the OS. This clock has no >> relationship >> @@ -157,6 +191,7 @@ steady_clock::now() _NOEXCEPT >> static FP fp = init_steady_clock(); >> return time_point(duration(fp())); >> } >> +#endif // defined(_LIBCXX_USE_CLOCK_GETTIME) && defined(CLOCK_UPTIME_RAW) >> >> #elif defined(_LIBCPP_WIN32API) >> >> @@ -175,6 +210,13 @@ steady_clock::now() _NOEXCEPT >> >> #elif defined(CLOCK_MONOTONIC) >> >> +// On Apple platforms only CLOCK_UPTIME_RAW or mach_absolute_time are >> able to >> +// time functions in the nanosecond range. Thus, they are the only >> acceptable >> +// implementations of steady_clock. >> +#ifdef __APPLE__ >> +#error "Never use CLOCK_MONOTONIC for steady_clock::now on Apple >> platforms" >> +#endif >> + >> steady_clock::time_point >> steady_clock::now() _NOEXCEPT >> { >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > >
-- Bruno Cardoso Lopes http://www.brunocardoso.cc _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits