diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt index d0796b85aec2..8f0b50bcc83e 100644 --- a/libc/config/windows/entrypoints.txt +++ b/libc/config/windows/entrypoints.txt @@ -95,9 +95,6 @@ set(TARGET_LIBC_ENTRYPOINTS # errno.h entrypoints libc.src.errno.errno - - # time.h entrypoints - libc.src.time.time ) set(TARGET_LIBM_ENTRYPOINTS diff --git a/libc/hdr/CMakeLists.txt b/libc/hdr/CMakeLists.txt index 5eb311f4bb22..93da271f5e04 100644 --- a/libc/hdr/CMakeLists.txt +++ b/libc/hdr/CMakeLists.txt @@ -135,18 +135,10 @@ add_proxy_header_library( libc.include.llvm-libc-macros.unistd_macros ) -if (WIN32) - set(windows_addtional_time_macros libc.include.llvm-libc-macros.windows.time_macros_ext) -else() - set(windows_addtional_time_macros "") -endif() - add_proxy_header_library( time_macros HDRS time_macros.h - DEPENDS - ${windows_addtional_time_macros} FULL_BUILD_DEPENDS libc.include.time libc.include.llvm-libc-macros.time_macros diff --git a/libc/hdr/time_macros.h b/libc/hdr/time_macros.h index 4488a24848c3..dc36fe66f7a8 100644 --- a/libc/hdr/time_macros.h +++ b/libc/hdr/time_macros.h @@ -19,10 +19,4 @@ #endif // LLVM_LIBC_FULL_BUILD -// TODO: For now, on windows, let's always include the extension header. -// We will need to decide how to export this header. -#ifdef _WIN32 -#include "include/llvm-libc-macros/windows/time-macros-ext.h" -#endif // _WIN32 - #endif // LLVM_LIBC_HDR_TIME_MACROS_H diff --git a/libc/hdr/types/clockid_t.h b/libc/hdr/types/clockid_t.h index 729e580aba43..333342072a2f 100644 --- a/libc/hdr/types/clockid_t.h +++ b/libc/hdr/types/clockid_t.h @@ -9,8 +9,7 @@ #ifndef LLVM_LIBC_HDR_TYPES_CLOCKID_T_H #define LLVM_LIBC_HDR_TYPES_CLOCKID_T_H -// TODO: we will need to decide how to export extension to windows. -#if defined(LIBC_FULL_BUILD) || defined(_WIN32) +#ifdef LIBC_FULL_BUILD #include "include/llvm-libc-types/clockid_t.h" diff --git a/libc/include/llvm-libc-macros/windows/CMakeLists.txt b/libc/include/llvm-libc-macros/windows/CMakeLists.txt deleted file mode 100644 index 48afc795178a..000000000000 --- a/libc/include/llvm-libc-macros/windows/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -add_header( - time_macros_ext - HDR - time-macros-ext.h -) - diff --git a/libc/include/llvm-libc-macros/windows/time-macros-ext.h b/libc/include/llvm-libc-macros/windows/time-macros-ext.h deleted file mode 100644 index 71d914b45187..000000000000 --- a/libc/include/llvm-libc-macros/windows/time-macros-ext.h +++ /dev/null @@ -1,17 +0,0 @@ -//===-- Windows Time Macros Extension -------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_LIBC_MACROS_WINDOWS_TIME_MACROS_EXT_H -#define LLVM_LIBC_MACROS_WINDOWS_TIME_MACROS_EXT_H - -#define CLOCK_MONOTONIC 0 -#define CLOCK_REALTIME 1 -#define CLOCK_PROCESS_CPUTIME_ID 2 -#define CLOCK_THREAD_CPUTIME_ID 3 - -#endif // LLVM_LIBC_MACROS_WINDOWS_TIME_MACROS_EXT_H diff --git a/libc/src/CMakeLists.txt b/libc/src/CMakeLists.txt index dd3b51886edf..02c193e63536 100644 --- a/libc/src/CMakeLists.txt +++ b/libc/src/CMakeLists.txt @@ -13,7 +13,6 @@ add_subdirectory(stdio) add_subdirectory(stdlib) add_subdirectory(string) add_subdirectory(wchar) -add_subdirectory(time) if(${LIBC_TARGET_OS} STREQUAL "linux") add_subdirectory(dirent) @@ -41,4 +40,5 @@ add_subdirectory(setjmp) add_subdirectory(signal) add_subdirectory(spawn) add_subdirectory(threads) +add_subdirectory(time) add_subdirectory(locale) diff --git a/libc/src/__support/time/CMakeLists.txt b/libc/src/__support/time/CMakeLists.txt index e73f2744b15a..89ddffb09938 100644 --- a/libc/src/__support/time/CMakeLists.txt +++ b/libc/src/__support/time/CMakeLists.txt @@ -2,13 +2,6 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS}) add_subdirectory(${LIBC_TARGET_OS}) endif() -add_object_library( - clock_gettime - ALIAS - DEPENDS - libc.src.__support.time.${LIBC_TARGET_OS}.clock_gettime -) - add_header_library( units HDRS diff --git a/libc/src/__support/time/linux/CMakeLists.txt b/libc/src/__support/time/linux/CMakeLists.txt index 6fec7eeba99a..94ed09e65215 100644 --- a/libc/src/__support/time/linux/CMakeLists.txt +++ b/libc/src/__support/time/linux/CMakeLists.txt @@ -1,7 +1,7 @@ add_object_library( clock_gettime HDRS - ../clock_gettime.h + clock_gettime.h SRCS clock_gettime.cpp DEPENDS diff --git a/libc/src/__support/time/linux/clock_conversion.h b/libc/src/__support/time/linux/clock_conversion.h index ac5357d308d7..7a52873263a1 100644 --- a/libc/src/__support/time/linux/clock_conversion.h +++ b/libc/src/__support/time/linux/clock_conversion.h @@ -10,7 +10,7 @@ #define LLVM_LIBC_SRC___SUPPORT_TIME_LINUX_CLOCK_CONVERSION_H #include "src/__support/macros/config.h" -#include "src/__support/time/clock_gettime.h" +#include "src/__support/time/linux/clock_gettime.h" #include "src/__support/time/units.h" namespace LIBC_NAMESPACE_DECL { diff --git a/libc/src/__support/time/linux/clock_gettime.cpp b/libc/src/__support/time/linux/clock_gettime.cpp index 944fc0a2b80f..3a0eca417724 100644 --- a/libc/src/__support/time/linux/clock_gettime.cpp +++ b/libc/src/__support/time/linux/clock_gettime.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "src/__support/time/clock_gettime.h" +#include "src/__support/time/linux/clock_gettime.h" #include "hdr/types/clockid_t.h" #include "hdr/types/struct_timespec.h" #include "src/__support/OSUtil/linux/vdso.h" diff --git a/libc/src/__support/time/clock_gettime.h b/libc/src/__support/time/linux/clock_gettime.h similarity index 72% rename from libc/src/__support/time/clock_gettime.h rename to libc/src/__support/time/linux/clock_gettime.h index 584bf546cd60..f7f996ce7c19 100644 --- a/libc/src/__support/time/clock_gettime.h +++ b/libc/src/__support/time/linux/clock_gettime.h @@ -6,17 +6,21 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_LIBC_SRC___SUPPORT_TIME_CLOCK_GETTIME_H -#define LLVM_LIBC_SRC___SUPPORT_TIME_CLOCK_GETTIME_H +#ifndef LLVM_LIBC_SRC___SUPPORT_TIME_LINUX_CLOCK_GETTIME_H +#define LLVM_LIBC_SRC___SUPPORT_TIME_LINUX_CLOCK_GETTIME_H #include "hdr/types/clockid_t.h" #include "hdr/types/struct_timespec.h" #include "src/__support/error_or.h" +#if defined(SYS_clock_gettime64) +#include +#endif + namespace LIBC_NAMESPACE_DECL { namespace internal { ErrorOr clock_gettime(clockid_t clockid, timespec *ts); } // namespace internal } // namespace LIBC_NAMESPACE_DECL -#endif // LLVM_LIBC_SRC___SUPPORT_TIME_CLOCK_GETTIME_H +#endif // LLVM_LIBC_SRC___SUPPORT_TIME_LINUX_CLOCK_GETTIME_H diff --git a/libc/src/__support/time/windows/CMakeLists.txt b/libc/src/__support/time/windows/CMakeLists.txt deleted file mode 100644 index 0f557ed88008..000000000000 --- a/libc/src/__support/time/windows/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -add_object_library( - clock_gettime - HDRS - ../clock_gettime.h - SRCS - clock_gettime.cpp - DEPENDS - libc.hdr.types.struct_timespec - libc.hdr.types.clockid_t - libc.hdr.errno_macros - libc.src.__support.common - libc.src.__support.error_or - libc.src.__support.OSUtil.osutil - libc.src.__support.CPP.atomic - libc.src.__support.CPP.limits -) diff --git a/libc/src/__support/time/windows/clock_gettime.cpp b/libc/src/__support/time/windows/clock_gettime.cpp deleted file mode 100644 index c2536acf37d7..000000000000 --- a/libc/src/__support/time/windows/clock_gettime.cpp +++ /dev/null @@ -1,150 +0,0 @@ -//===--- clock_gettime windows implementation -------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "hdr/time_macros.h" - -#include "src/__support/CPP/atomic.h" -#include "src/__support/CPP/bit.h" -#include "src/__support/CPP/limits.h" -#include "src/__support/macros/optimization.h" -#include "src/__support/time/clock_gettime.h" -#include "src/__support/time/units.h" - -#define WIN32_LEAN_AND_MEAN -#define NOMINMAX -#include - -namespace LIBC_NAMESPACE_DECL { -namespace internal { -static long long get_ticks_per_second() { - static cpp::Atomic frequency = 0; - // Relaxed ordering is enough. It is okay to record the frequency multiple - // times. The store operation itself is atomic and the value must propagate - // as required by cache coherence. - auto freq = frequency.load(cpp::MemoryOrder::RELAXED); - if (!freq) { - [[clang::uninitialized]] LARGE_INTEGER buffer; - // On systems that run Windows XP or later, the function will always - // succeed and will thus never return zero. - ::QueryPerformanceFrequency(&buffer); - frequency.store(buffer.QuadPart, cpp::MemoryOrder::RELAXED); - return buffer.QuadPart; - } - return freq; -} - -ErrorOr clock_gettime(clockid_t clockid, timespec *ts) { - using namespace time_units; - constexpr unsigned long long HNS_PER_SEC = 1_s_ns / 100ULL; - constexpr long long SEC_LIMIT = - cpp::numeric_limitstv_sec)>::max(); - ErrorOr ret = 0; - switch (clockid) { - default: - ret = cpp::unexpected(EINVAL); - break; - - case CLOCK_MONOTONIC: { - // see - // https://learn.microsoft.com/en-us/windows/win32/sysinfo/acquiring-high-resolution-time-stamps - // Is the performance counter monotonic (non-decreasing)? - // Yes. QPC does not go backward. - [[clang::uninitialized]] LARGE_INTEGER buffer; - // On systems that run Windows XP or later, the function will always - // succeed and will thus never return zero. - ::QueryPerformanceCounter(&buffer); - long long freq = get_ticks_per_second(); - long long ticks = buffer.QuadPart; - long long tv_sec = ticks / freq; - long long tv_nsec = (ticks % freq) * 1_s_ns / freq; - if (LIBC_UNLIKELY(tv_sec > SEC_LIMIT)) { - ret = cpp::unexpected(EOVERFLOW); - break; - } - ts->tv_sec = static_casttv_sec)>(tv_sec); - ts->tv_nsec = static_casttv_nsec)>(tv_nsec); - break; - } - case CLOCK_REALTIME: { - // https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime - // GetSystemTimePreciseAsFileTime - // This function is best suited for high-resolution time-of-day - // measurements, or time stamps that are synchronized to UTC - [[clang::uninitialized]] FILETIME file_time; - [[clang::uninitialized]] ULARGE_INTEGER time; - ::GetSystemTimePreciseAsFileTime(&file_time); - time.LowPart = file_time.dwLowDateTime; - time.HighPart = file_time.dwHighDateTime; - - // adjust to POSIX epoch (from Jan 1, 1601 to Jan 1, 1970) - constexpr unsigned long long POSIX_TIME_SHIFT = - (11644473600ULL * HNS_PER_SEC); - if (LIBC_UNLIKELY(POSIX_TIME_SHIFT > time.QuadPart)) { - ret = cpp::unexpected(EOVERFLOW); - break; - } - time.QuadPart -= (11644473600ULL * HNS_PER_SEC); - unsigned long long tv_sec = time.QuadPart / HNS_PER_SEC; - unsigned long long tv_nsec = (time.QuadPart % HNS_PER_SEC) * 100ULL; - if (LIBC_UNLIKELY(tv_sec > SEC_LIMIT)) { - ret = cpp::unexpected(EOVERFLOW); - break; - } - ts->tv_sec = static_casttv_sec)>(tv_sec); - ts->tv_nsec = static_casttv_nsec)>(tv_nsec); - break; - } - case CLOCK_PROCESS_CPUTIME_ID: - case CLOCK_THREAD_CPUTIME_ID: { - [[clang::uninitialized]] FILETIME creation_time; - [[clang::uninitialized]] FILETIME exit_time; - [[clang::uninitialized]] FILETIME kernel_time; - [[clang::uninitialized]] FILETIME user_time; - bool success; - if (clockid == CLOCK_PROCESS_CPUTIME_ID) { - // https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getprocesstimes - success = ::GetProcessTimes(::GetCurrentProcess(), &creation_time, - &exit_time, &kernel_time, &user_time); - } else { - // https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getthreadtimes - success = ::GetThreadTimes(::GetCurrentThread(), &creation_time, - &exit_time, &kernel_time, &user_time); - } - if (!success) { - ret = cpp::unexpected(EINVAL); - break; - } - // https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-filetime - // It is not recommended that you add and subtract values from the FILETIME - // structure to obtain relative times. Instead, you should copy the low- and - // high-order parts of the file time to a ULARGE_INTEGER structure, perform - // 64-bit arithmetic on the QuadPart member, and copy the LowPart and - // HighPart members into the FILETIME structure. - auto kernel_time_hns = cpp::bit_cast(kernel_time); - auto user_time_hns = cpp::bit_cast(user_time); - unsigned long long total_time_hns = - kernel_time_hns.QuadPart + user_time_hns.QuadPart; - - unsigned long long tv_sec = total_time_hns / HNS_PER_SEC; - unsigned long long tv_nsec = (total_time_hns % HNS_PER_SEC) * 100ULL; - - if (LIBC_UNLIKELY(tv_sec > SEC_LIMIT)) { - ret = cpp::unexpected(EOVERFLOW); - break; - } - - ts->tv_sec = static_casttv_sec)>(tv_sec); - ts->tv_nsec = static_casttv_nsec)>(tv_nsec); - - break; - } - } - return ret; -} -} // namespace internal -} // namespace LIBC_NAMESPACE_DECL diff --git a/libc/src/time/CMakeLists.txt b/libc/src/time/CMakeLists.txt index 3e8e6882ffc5..f18e74a15e6f 100644 --- a/libc/src/time/CMakeLists.txt +++ b/libc/src/time/CMakeLists.txt @@ -106,15 +106,9 @@ add_entrypoint_object( add_entrypoint_object( time - SRCS - time.cpp - HDRS - time_func.h + ALIAS DEPENDS - libc.hdr.time_macros - libc.hdr.types.time_t - libc.src.__support.time.clock_gettime - libc.src.errno.errno + .${LIBC_TARGET_OS}.time ) add_entrypoint_object( diff --git a/libc/src/time/linux/CMakeLists.txt b/libc/src/time/linux/CMakeLists.txt index 314623f9f425..31fd7d1e64c8 100644 --- a/libc/src/time/linux/CMakeLists.txt +++ b/libc/src/time/linux/CMakeLists.txt @@ -1,3 +1,16 @@ +add_entrypoint_object( + time + SRCS + time.cpp + HDRS + ../time_func.h + DEPENDS + libc.hdr.time_macros + libc.hdr.types.time_t + libc.src.__support.time.linux.clock_gettime + libc.src.errno.errno +) + add_entrypoint_object( timespec_get SRCS @@ -7,7 +20,7 @@ add_entrypoint_object( DEPENDS libc.hdr.time_macros libc.hdr.types.struct_timespec - libc.src.__support.time.clock_gettime + libc.src.__support.time.linux.clock_gettime libc.src.errno.errno ) @@ -21,7 +34,7 @@ add_entrypoint_object( libc.hdr.time_macros libc.hdr.types.clock_t libc.src.__support.time.units - libc.src.__support.time.clock_gettime + libc.src.__support.time.linux.clock_gettime libc.src.__support.CPP.limits libc.src.errno.errno ) @@ -49,7 +62,7 @@ add_entrypoint_object( DEPENDS libc.hdr.types.clockid_t libc.hdr.types.struct_timespec - libc.src.__support.time.clock_gettime + libc.src.__support.time.linux.clock_gettime libc.src.errno.errno ) @@ -62,7 +75,7 @@ add_entrypoint_object( DEPENDS libc.hdr.time_macros libc.hdr.types.suseconds_t - libc.src.__support.time.clock_gettime + libc.src.__support.time.linux.clock_gettime libc.src.__support.time.units libc.src.errno.errno ) diff --git a/libc/src/time/linux/clock.cpp b/libc/src/time/linux/clock.cpp index ee4fa82b4f89..f43e1bcad6a3 100644 --- a/libc/src/time/linux/clock.cpp +++ b/libc/src/time/linux/clock.cpp @@ -11,7 +11,7 @@ #include "src/__support/CPP/limits.h" #include "src/__support/common.h" #include "src/__support/macros/config.h" -#include "src/__support/time/clock_gettime.h" +#include "src/__support/time/linux/clock_gettime.h" #include "src/__support/time/units.h" #include "src/errno/libc_errno.h" diff --git a/libc/src/time/linux/clock_gettime.cpp b/libc/src/time/linux/clock_gettime.cpp index 743c644d65d0..a2b20a6dbc98 100644 --- a/libc/src/time/linux/clock_gettime.cpp +++ b/libc/src/time/linux/clock_gettime.cpp @@ -9,7 +9,7 @@ #include "src/time/clock_gettime.h" #include "src/__support/common.h" #include "src/__support/macros/config.h" -#include "src/__support/time/clock_gettime.h" +#include "src/__support/time/linux/clock_gettime.h" #include "src/errno/libc_errno.h" namespace LIBC_NAMESPACE_DECL { diff --git a/libc/src/time/linux/gettimeofday.cpp b/libc/src/time/linux/gettimeofday.cpp index e8ddf482fc98..19d9988ae73a 100644 --- a/libc/src/time/linux/gettimeofday.cpp +++ b/libc/src/time/linux/gettimeofday.cpp @@ -11,7 +11,7 @@ #include "hdr/types/suseconds_t.h" #include "src/__support/common.h" #include "src/__support/macros/config.h" -#include "src/__support/time/clock_gettime.h" +#include "src/__support/time/linux/clock_gettime.h" #include "src/__support/time/units.h" #include "src/errno/libc_errno.h" diff --git a/libc/src/time/time.cpp b/libc/src/time/linux/time.cpp similarity index 83% rename from libc/src/time/time.cpp rename to libc/src/time/linux/time.cpp index 4a0b614a68ef..20fb86e8e29d 100644 --- a/libc/src/time/time.cpp +++ b/libc/src/time/linux/time.cpp @@ -9,14 +9,14 @@ #include "hdr/time_macros.h" #include "src/__support/common.h" #include "src/__support/macros/config.h" -#include "src/__support/time/clock_gettime.h" +#include "src/__support/time/linux/clock_gettime.h" #include "src/errno/libc_errno.h" #include "src/time/time_func.h" namespace LIBC_NAMESPACE_DECL { -// avoid inconsitent clang-format behavior -using time_ptr_t = time_t *; -LLVM_LIBC_FUNCTION(time_t, time, (time_ptr_t tp)) { + +LLVM_LIBC_FUNCTION(time_t, time, (time_t * tp)) { + // TODO: Use the Linux VDSO to fetch the time and avoid the syscall. struct timespec ts; auto result = internal::clock_gettime(CLOCK_REALTIME, &ts); if (!result.has_value()) { diff --git a/libc/src/time/linux/timespec_get.cpp b/libc/src/time/linux/timespec_get.cpp index cf5174523aa4..ba9f8eb2e442 100644 --- a/libc/src/time/linux/timespec_get.cpp +++ b/libc/src/time/linux/timespec_get.cpp @@ -10,7 +10,7 @@ #include "hdr/time_macros.h" #include "src/__support/common.h" #include "src/__support/macros/config.h" -#include "src/__support/time/clock_gettime.h" +#include "src/__support/time/linux/clock_gettime.h" #include "src/errno/libc_errno.h" namespace LIBC_NAMESPACE_DECL { diff --git a/libc/test/src/CMakeLists.txt b/libc/test/src/CMakeLists.txt index 606f6d837e4f..8ac8f91e98d4 100644 --- a/libc/test/src/CMakeLists.txt +++ b/libc/test/src/CMakeLists.txt @@ -59,7 +59,6 @@ add_subdirectory(stdio) add_subdirectory(stdlib) add_subdirectory(string) add_subdirectory(wchar) -add_subdirectory(time) # Depends on utilities in stdlib add_subdirectory(inttypes) @@ -83,6 +82,7 @@ add_subdirectory(network) add_subdirectory(setjmp) add_subdirectory(signal) add_subdirectory(spawn) +add_subdirectory(time) add_subdirectory(locale) if(${LIBC_TARGET_OS} STREQUAL "linux") diff --git a/libc/test/src/__support/threads/linux/raw_mutex_test.cpp b/libc/test/src/__support/threads/linux/raw_mutex_test.cpp index dadc706421d0..918f5d35c94f 100644 --- a/libc/test/src/__support/threads/linux/raw_mutex_test.cpp +++ b/libc/test/src/__support/threads/linux/raw_mutex_test.cpp @@ -12,7 +12,7 @@ #include "src/__support/OSUtil/syscall.h" #include "src/__support/threads/linux/raw_mutex.h" #include "src/__support/threads/sleep.h" -#include "src/__support/time/clock_gettime.h" +#include "src/__support/time/linux/clock_gettime.h" #include "src/stdlib/exit.h" #include "src/sys/mman/mmap.h" #include "src/sys/mman/munmap.h" diff --git a/libc/test/src/time/CMakeLists.txt b/libc/test/src/time/CMakeLists.txt index d2a98677a554..7151526b72b2 100644 --- a/libc/test/src/time/CMakeLists.txt +++ b/libc/test/src/time/CMakeLists.txt @@ -157,8 +157,8 @@ add_libc_unittest( SRCS time_test.cpp DEPENDS + libc.include.time libc.src.time.time - libc.src.__support.time.clock_gettime libc.src.errno.errno ) diff --git a/libc/test/src/time/time_test.cpp b/libc/test/src/time/time_test.cpp index 7cdb4e834633..d3d4dc9a2851 100644 --- a/libc/test/src/time/time_test.cpp +++ b/libc/test/src/time/time_test.cpp @@ -9,6 +9,8 @@ #include "src/time/time_func.h" #include "test/UnitTest/Test.h" +#include + TEST(LlvmLibcTimeTest, SmokeTest) { time_t t1; time_t t2 = LIBC_NAMESPACE::time(&t1); diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel index 957b49fe6afe..c5a0076d2ef3 100644 --- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel @@ -1471,13 +1471,13 @@ libc_support_library( }), deps = [ ":__support_time", - ":__support_time_clock_gettime", + ":__support_time_linux_clock_gettime", ], ) libc_support_library( - name = "__support_time_clock_gettime", - hdrs = ["src/__support/time/clock_gettime.h"], + name = "__support_time_linux_clock_gettime", + hdrs = ["src/__support/time/linux/clock_gettime.h"], target_compatible_with = select({ "@platforms//os:linux": [], "//conditions:default": ["@platforms//:incompatible"],