[libc-commits] [libc] 7d1538c - Move LIBC_CONF_STRING_UNSAFE_WIDE_READ to top-level libc-configuration (#165046)

via libc-commits libc-commits at lists.llvm.org
Mon Oct 27 14:39:50 PDT 2025


Author: Sterling-Augustine
Date: 2025-10-27T14:39:46-07:00
New Revision: 7d1538cd3db3e228459e483ce9cdeb7fa4ae5e00

URL: https://github.com/llvm/llvm-project/commit/7d1538cd3db3e228459e483ce9cdeb7fa4ae5e00
DIFF: https://github.com/llvm/llvm-project/commit/7d1538cd3db3e228459e483ce9cdeb7fa4ae5e00.diff

LOG: Move LIBC_CONF_STRING_UNSAFE_WIDE_READ to top-level libc-configuration (#165046)

This options sets a compile option when building sources inside the
string directory, and this option affects string_utils.h. But
string_utils.h is #included from more places than just the string
directory (such as from __support/CPP/string.h), leading to both
narrow-reads in those cases, but more seriously, ODR violations when the
two different string_length implementations are included int he same
program.

Having this option at the top level avoids this problem.

Added: 
    

Modified: 
    libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
    libc/src/string/CMakeLists.txt

Removed: 
    


################################################################################
diff  --git a/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake b/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
index 4c36ed8620f40..4e9a9b66a63a7 100644
--- a/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
+++ b/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
@@ -81,6 +81,14 @@ function(_get_compile_options_from_config output_var)
     list(APPEND config_options "-DLIBC_QSORT_IMPL=${LIBC_CONF_QSORT_IMPL}")
   endif()
 
+  if(LIBC_CONF_STRING_UNSAFE_WIDE_READ)
+    list(APPEND config_options "-DLIBC_COPT_STRING_UNSAFE_WIDE_READ")
+  endif()
+
+  if(LIBC_CONF_MEMSET_X86_USE_SOFTWARE_PREFETCHING)
+    list(APPEND config_options "-DLIBC_COPT_MEMSET_X86_USE_SOFTWARE_PREFETCHING")
+  endif()
+
   if(LIBC_TYPES_TIME_T_IS_32_BIT AND LLVM_LIBC_FULL_BUILD)
     list(APPEND config_options "-DLIBC_TYPES_TIME_T_IS_32_BIT")
   endif()

diff  --git a/libc/src/string/CMakeLists.txt b/libc/src/string/CMakeLists.txt
index 83c956429be24..a640e1d2cc774 100644
--- a/libc/src/string/CMakeLists.txt
+++ b/libc/src/string/CMakeLists.txt
@@ -1,15 +1,5 @@
 add_subdirectory(memory_utils)
 
-if(LIBC_CONF_STRING_UNSAFE_WIDE_READ)
-  list(APPEND string_config_options "-DLIBC_COPT_STRING_UNSAFE_WIDE_READ")
-endif()
-if(LIBC_CONF_MEMSET_X86_USE_SOFTWARE_PREFETCHING)
-  list(APPEND string_config_options "-DLIBC_COPT_MEMSET_X86_USE_SOFTWARE_PREFETCHING")
-endif()
-if(string_config_options)
-  list(PREPEND string_config_options "COMPILE_OPTIONS")
-endif()
-
 add_header_library(
   string_utils
   HDRS
@@ -24,7 +14,6 @@ add_header_library(
     libc.src.__support.common
     libc.src.__support.macros.attributes
     libc.src.string.memory_utils.inline_memcpy
-  ${string_config_options}
 )
 
 add_header_library(


        


More information about the libc-commits mailing list