[llvm] 71e20c6 - Fix references to required libraries when building LLVM with ASAN and MultiThreaded[Debug] on Windows (#139657)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 20 08:13:51 PDT 2025
Author: Douglas
Date: 2025-06-20T08:13:48-07:00
New Revision: 71e20c6c86e04863df80e286a004a20070a5a610
URL: https://github.com/llvm/llvm-project/commit/71e20c6c86e04863df80e286a004a20070a5a610
DIFF: https://github.com/llvm/llvm-project/commit/71e20c6c86e04863df80e286a004a20070a5a610.diff
LOG: Fix references to required libraries when building LLVM with ASAN and MultiThreaded[Debug] on Windows (#139657)
After https://github.com/llvm/llvm-project/pull/81677, statically
linking ASAN under Windows is no longer supported. Therefore, when using
Clang built past
https://github.com/llvm/llvm-project/commit/53a81d4d26f0409de8a0655d7af90f2bea222a12
to build LLVM / Clang with
`-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded[Debug]
-DLLVM_USE_SANITIZER=Address`, a different set of dependent libraries
must be linked. This is mentioned in the description of
https://github.com/llvm/llvm-project/pull/81677 and also in
https://devblogs.microsoft.com/cppblog/msvc-address-sanitizer-one-dll-for-all-runtime-configurations/.
Added:
Modified:
llvm/cmake/modules/HandleLLVMOptions.cmake
Removed:
################################################################################
diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake
index 8004d3571fc8a..5aa047a33ba6a 100644
--- a/llvm/cmake/modules/HandleLLVMOptions.cmake
+++ b/llvm/cmake/modules/HandleLLVMOptions.cmake
@@ -1038,13 +1038,14 @@ if(LLVM_USE_SANITIZER)
# lld string tail merging interacts badly with ASAN on Windows, turn it off here
# See https://github.com/llvm/llvm-project/issues/62078
append("/opt:nolldtailmerge" CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
+ # Static and dynamic C runtimes all load ASAN as a DLL
+ # See https://devblogs.microsoft.com/cppblog/msvc-address-sanitizer-one-dll-for-all-runtime-configurations/
+ append("clang_rt.asan_dynamic-${arch}.lib" CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
if (${CMAKE_MSVC_RUNTIME_LIBRARY} MATCHES "^(MultiThreaded|MultiThreadedDebug)$")
- append("/wholearchive:clang_rt.asan-${arch}.lib /wholearchive:clang_rt.asan_cxx-${arch}.lib"
- CMAKE_EXE_LINKER_FLAGS)
- append("/wholearchive:clang_rt.asan_dll_thunk-${arch}.lib"
- CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
+ append("/wholearchive:clang_rt.asan_static_runtime_thunk-${arch}.lib"
+ CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
else()
- append("clang_rt.asan_dynamic-${arch}.lib /wholearchive:clang_rt.asan_dynamic_runtime_thunk-${arch}.lib"
+ append("/wholearchive:clang_rt.asan_dynamic_runtime_thunk-${arch}.lib"
CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
endif()
endif()
More information about the llvm-commits
mailing list