[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