[libc-commits] [libc] 0adcbc0 - [libc] Disable LlvmLibcTimespecGet.Monotonic for baremetal targets (#152290)
via libc-commits
libc-commits at lists.llvm.org
Mon Aug 11 06:48:15 PDT 2025
Author: William Huynh
Date: 2025-08-11T14:48:11+01:00
New Revision: 0adcbc02288a5ceb6270532d980ad7f2412c2bd8
URL: https://github.com/llvm/llvm-project/commit/0adcbc02288a5ceb6270532d980ad7f2412c2bd8
DIFF: https://github.com/llvm/llvm-project/commit/0adcbc02288a5ceb6270532d980ad7f2412c2bd8.diff
LOG: [libc] Disable LlvmLibcTimespecGet.Monotonic for baremetal targets (#152290)
This test was caught by our hermetic testing downstream. The baremetal
implementation does not support monotonic, so we disable it.
Added:
Modified:
libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
libc/cmake/modules/LLVMLibCTestRules.cmake
libc/test/src/time/timespec_get_test.cpp
Removed:
################################################################################
diff --git a/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake b/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
index d85c3930474ab..2eb0f066e19e0 100644
--- a/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
+++ b/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
@@ -115,11 +115,31 @@ function(_get_compile_options_from_config output_var)
set(${output_var} ${config_options} PARENT_SCOPE)
endfunction(_get_compile_options_from_config)
+function(_get_compile_options_from_arch output_var)
+ # Set options that are not found in src/__support/macros/properties/architectures.h
+ # and src/__support/macros/properties/os.h
+ # TODO: we probably want to unify these at some point for consistency
+ set(config_options "")
+
+ if (LIBC_TARGET_OS_IS_BAREMETAL)
+ list(APPEND config_options "-DLIBC_TARGET_OS_IS_BAREMETAL")
+ endif()
+ if (LIBC_TARGET_OS_IS_GPU)
+ list(APPEND config_options "-DLIBC_TARGET_OS_IS_GPU")
+ endif()
+ if (LIBC_TARGET_OS_IS_UEFI)
+ list(APPEND config_options "-DLIBC_TARGET_OS_IS_UEFI")
+ endif()
+
+ set(${output_var} ${config_options} PARENT_SCOPE)
+endfunction(_get_compile_options_from_arch)
+
function(_get_common_compile_options output_var flags)
_get_compile_options_from_flags(compile_flags ${flags})
_get_compile_options_from_config(config_flags)
+ _get_compile_options_from_arch(arch_flags)
- set(compile_options ${LIBC_COMPILE_OPTIONS_DEFAULT} ${compile_flags} ${config_flags})
+ set(compile_options ${LIBC_COMPILE_OPTIONS_DEFAULT} ${compile_flags} ${config_flags} ${arch_flags})
if(LLVM_LIBC_COMPILER_IS_GCC_COMPATIBLE)
list(APPEND compile_options "-fpie")
diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake
index 267c32e956945..30b1fd10a1774 100644
--- a/libc/cmake/modules/LLVMLibCTestRules.cmake
+++ b/libc/cmake/modules/LLVMLibCTestRules.cmake
@@ -1,6 +1,7 @@
function(_get_common_test_compile_options output_var c_test flags)
_get_compile_options_from_flags(compile_flags ${flags})
_get_compile_options_from_config(config_flags)
+ _get_compile_options_from_arch(arch_flags)
# Remove -fno-math-errno if it was added.
if(LIBC_ADD_FNO_MATH_ERRNO)
@@ -16,7 +17,8 @@ function(_get_common_test_compile_options output_var c_test flags)
${LIBC_COMPILE_OPTIONS_DEFAULT}
${LIBC_TEST_COMPILE_OPTIONS_DEFAULT}
${compile_flags}
- ${config_flags})
+ ${config_flags}
+ ${arch_flags})
if(LLVM_LIBC_COMPILER_IS_GCC_COMPATIBLE)
list(APPEND compile_options "-fpie")
diff --git a/libc/test/src/time/timespec_get_test.cpp b/libc/test/src/time/timespec_get_test.cpp
index 327bfefe934c1..97585016f1dd7 100644
--- a/libc/test/src/time/timespec_get_test.cpp
+++ b/libc/test/src/time/timespec_get_test.cpp
@@ -24,6 +24,8 @@ TEST(LlvmLibcTimespecGet, Utc) {
#endif
}
+// Baremetal implementation currently only supports TIME_UTC
+#ifndef LIBC_TARGET_OS_IS_BAREMETAL
TEST(LlvmLibcTimespecGet, Monotonic) {
timespec ts1, ts2;
int result;
@@ -37,6 +39,7 @@ TEST(LlvmLibcTimespecGet, Monotonic) {
ASSERT_GE(ts2.tv_nsec, ts1.tv_nsec);
}
}
+#endif
TEST(LlvmLibcTimespecGet, Unknown) {
timespec ts;
More information about the libc-commits
mailing list