[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