From 54743f73cc896fca706c687059906d3e95c4ea09 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Tue, 2 Aug 2016 01:02:46 +0000 Subject: [winasan] Try to fix LNK4099 warnings seen by users /Zi creates a separate PDB that we're supposed to pass along with our sanitizer libraries, but the object library compilation rules aren't set up to handle that. Rather than set that up, put the debug info in the object files the way every other platform does it with /Z7. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@277406 91177308-0d34-0410-b5e6-96231b3b80d8 --- CMakeLists.txt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 488dcea8a..f08da5836 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -228,8 +228,14 @@ if(COMPILER_RT_HAS_GLINE_TABLES_ONLY_FLAG AND NOT COMPILER_RT_DEBUG) list(APPEND SANITIZER_COMMON_CFLAGS -gline-tables-only) elseif(COMPILER_RT_HAS_G_FLAG) list(APPEND SANITIZER_COMMON_CFLAGS -g) -elseif(COMPILER_RT_HAS_Zi_FLAG) - list(APPEND SANITIZER_COMMON_CFLAGS /Zi) +elseif(MSVC) + # Use /Z7 instead of /Zi for the asan runtime. This avoids the LNK4099 + # warning from the MS linker complaining that it can't find the 'vc140.pdb' + # file used by our object library compilations. + list(APPEND SANITIZER_COMMON_CFLAGS /Z7) + llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/Z[i7I]" "/Z7") + llvm_replace_compiler_option(CMAKE_CXX_FLAGS_DEBUG "/Z[i7I]" "/Z7") + llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/Z[i7I]" "/Z7") endif() # Turn off several warnings. -- cgit v1.2.3