[ASan/Win] Use clang rather than clang-cl by default for lit tests. Make Windows-only tests explicitly use clang-cl.

Reviewed at http://reviews.llvm.org/D3893

llvm-svn: 209719
This commit is contained in:
Timur Iskhodzhanov 2014-05-28 08:38:13 +00:00
parent d74bdccafe
commit 82ee0433da
63 changed files with 124 additions and 111 deletions

View File

@ -61,12 +61,8 @@ if (NOT COMPILER_RT_STANDALONE_BUILD)
# Windows where we need to use clang-cl instead.
if(NOT MSVC)
set(COMPILER_RT_TEST_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
set(COMPILER_RT_TEST_COMPILER_EXE "-o")
set(COMPILER_RT_TEST_COMPILER_OBJ "-o")
else()
set(COMPILER_RT_TEST_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang-cl.exe)
set(COMPILER_RT_TEST_COMPILER_EXE "-Fe")
set(COMPILER_RT_TEST_COMPILER_OBJ "-Fo")
set(COMPILER_RT_TEST_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang.exe)
endif()
else()
# Take output dir and install path from the user.
@ -80,8 +76,6 @@ else()
option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered" OFF)
# Use a host compiler to compile/link tests.
set(COMPILER_RT_TEST_COMPILER ${CMAKE_C_COMPILER} CACHE PATH "Compiler to use for testing")
set(COMPILER_RT_TEST_COMPILER_EXE "-o")
set(COMPILER_RT_TEST_COMPILER_OBJ "-o")
if (NOT LLVM_CONFIG_PATH)
find_program(LLVM_CONFIG_PATH "llvm-config"
@ -131,7 +125,7 @@ endif()
if("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang[+]*$")
set(COMPILER_RT_TEST_COMPILER_ID Clang)
elseif("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang-cl.exe$")
elseif("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang.*.exe$")
set(COMPILER_RT_TEST_COMPILER_ID Clang)
else()
set(COMPILER_RT_TEST_COMPILER_ID GNU)

View File

@ -118,10 +118,16 @@ set(COMPILER_RT_GTEST_PATH ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest)
set(COMPILER_RT_GTEST_SOURCE ${COMPILER_RT_GTEST_PATH}/src/gtest-all.cc)
set(COMPILER_RT_GTEST_CFLAGS
-DGTEST_NO_LLVM_RAW_OSTREAM=1
-DGTEST_HAS_RTTI=0
-I${COMPILER_RT_GTEST_PATH}/include
-I${COMPILER_RT_GTEST_PATH}
)
if(MSVC)
# Clang doesn't support SEH on Windows yet.
list(APPEND COMPILER_RT_GTEST_CFLAGS -DGTEST_HAS_SEH=0)
endif()
# Link objects into a single executable with COMPILER_RT_TEST_COMPILER,
# using specified link flags. Make executable a part of provided
# test_suite.
@ -147,9 +153,8 @@ macro(add_compiler_rt_test test_suite test_name)
separate_arguments(TEST_LINK_FLAGS)
endif()
add_custom_target(${test_name}
# MSVS CL doesn't allow a space between -Fe and the output file name.
COMMAND ${COMPILER_RT_TEST_COMPILER} ${TEST_OBJECTS}
${COMPILER_RT_TEST_COMPILER_EXE}"${output_bin}"
-o "${output_bin}"
${TEST_LINK_FLAGS}
DEPENDS ${TEST_DEPS})
# Make the test suite depend on the binary.

View File

@ -17,15 +17,21 @@ macro(clang_compile object_file source)
else()
string(REPLACE " " ";" global_flags "${CMAKE_C_FLAGS}")
endif()
# On Windows, CMAKE_*_FLAGS are built for MSVC but we use the GCC clang.exe
# which doesn't support flags starting with "/smth". Replace those with
# "-smth" equivalents.
if(MSVC)
string(REGEX REPLACE "^/" "-" global_flags "${global_flags}")
string(REPLACE ";/" ";-" global_flags "${global_flags}")
endif()
# Ignore unknown warnings. CMAKE_CXX_FLAGS may contain GCC-specific options
# which are not supported by Clang.
list(APPEND global_flags -Wno-unknown-warning-option)
set(compile_flags ${global_flags} ${SOURCE_CFLAGS})
add_custom_command(
OUTPUT ${object_file}
# MSVS CL doesn't allow a space between -Fo and the object file name.
COMMAND ${COMPILER_RT_TEST_COMPILER} ${compile_flags} -c
${COMPILER_RT_TEST_COMPILER_OBJ}"${object_file}"
-o "${object_file}"
${source_rpath}
MAIN_DEPENDENCY ${source}
DEPENDS ${SOURCE_DEPS})

View File

@ -26,24 +26,29 @@ set(ASAN_UNITTEST_COMMON_CFLAGS
-I${COMPILER_RT_SOURCE_DIR}/lib
-I${COMPILER_RT_SOURCE_DIR}/lib/asan
-I${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common/tests
-fno-rtti
-O2
-Wno-format
-Werror=sign-compare
-O2)
append_if(COMPILER_RT_HAS_G_FLAG -g ASAN_UNITTEST_COMMON_CFLAGS)
append_if(COMPILER_RT_HAS_Zi_FLAG -Zi ASAN_UNITTEST_COMMON_CFLAGS)
-Werror=sign-compare)
append_if(COMPILER_RT_HAS_WNO_VARIADIC_MACROS_FLAG -Wno-variadic-macros ASAN_UNITTEST_COMMON_CFLAGS)
# -gline-tables-only must be enough for ASan, so use it if possible.
if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
list(APPEND ASAN_UNITTEST_COMMON_CFLAGS -gline-tables-only)
else()
list(APPEND ASAN_UNITTEST_COMMON_CFLAGS -g)
endif()
if(MSVC)
# MSVC system headers and gtest use a lot of deprecated stuff.
list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
-Wno-deprecated-declarations)
# clang-cl doesn't support exceptions yet.
# clang doesn't support exceptions on Windows yet.
list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
/fallback
-D_HAS_EXCEPTIONS=0)
# We should teach clang-cl to understand more pragmas.
# We should teach clang to understand more pragmas.
list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
-Wno-unknown-pragmas
-Wno-undefined-inline)

View File

@ -38,28 +38,28 @@ set(SANITIZER_TEST_CFLAGS_COMMON
-I${COMPILER_RT_SOURCE_DIR}/include
-I${COMPILER_RT_SOURCE_DIR}/lib
-I${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common
-DGTEST_HAS_RTTI=0
-fno-rtti
-O2
-Werror=sign-compare
-Wno-non-virtual-dtor)
append_if(COMPILER_RT_HAS_G_FLAG -g SANITIZER_TEST_CFLAGS_COMMON)
append_if(COMPILER_RT_HAS_Zi_FLAG -Zi SANITIZER_TEST_CFLAGS_COMMON)
append_if(COMPILER_RT_HAS_FNO_RTTI_FLAG -fno-rtti SANITIZER_TEST_CFLAGS_COMMON)
append_if(COMPILER_RT_HAS_GR_FLAG -GR- SANITIZER_TEST_CFLAGS_COMMON)
# -gline-tables-only must be enough for these tests, so use it if possible.
if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
list(APPEND ASAN_UNITTEST_COMMON_CFLAGS -gline-tables-only)
else()
list(APPEND ASAN_UNITTEST_COMMON_CFLAGS -g)
endif()
if(MSVC)
# System headers and gtest use a lot of deprecated stuff.
# MSVC system headers and gtest use a lot of deprecated stuff.
list(APPEND SANITIZER_TEST_CFLAGS_COMMON
-Wno-deprecated-declarations)
# clang-cl doesn't support exceptions yet.
# clang doesn't support exceptions on Windows yet.
list(APPEND SANITIZER_TEST_CFLAGS_COMMON
/fallback
-D_HAS_EXCEPTIONS=0)
# We should teach clang-cl to understand more pragmas.
# We should teach clang to understand more pragmas.
list(APPEND SANITIZER_TEST_CFLAGS_COMMON
-Wno-unknown-pragmas
-Wno-undefined-inline)

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t | FileCheck %s
// This is a test for http://code.google.com/p/address-sanitizer/issues/detail?id=305

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: %run %t %t.dll | FileCheck %s
#include <malloc.h>

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: %run %t %t.dll | FileCheck %s
#include <malloc.h>

View File

@ -2,7 +2,7 @@
//
// Just make sure we can compile this.
// The actual compile&run sequence is to be done by the DLL tests.
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
//
// Get the list of ASan wrappers exported by the main module RTL:
// RUN: dumpbin /EXPORTS %t | grep -o "__asan_wrap[^ ]*" | grep -v @ | sort | uniq > %t.exported_wrappers

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: not %run %t %t.dll 2>&1 | FileCheck %s
#include <stdio.h>

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: not %run %t %t.dll 2>&1 | FileCheck %s
#include <stdio.h>

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: not %run %t %t.dll 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: not %run %t %t.dll 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: not %run %t %t.dll 2>&1 | FileCheck %s
#include <process.h>

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: not %run %t %t.dll 2>&1 | FileCheck %s
extern "C" __declspec(dllexport)

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: not %run %t %t.dll 2>&1 | FileCheck %s
struct C {

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: not %run %t %t.dll 2>&1 | FileCheck %s
#include <sanitizer/asan_interface.h>

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: env ASAN_OPTIONS=detect_stack_use_after_return=1 not %run %t %t.dll 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,5 +1,5 @@
// RUN: %clangxx_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clangxx_asan -LD -O0 %s -Fe%t.dll
// RUN: %clang_cl_asan -O0 %p/dll_host.cc -Fe%t
// RUN: %clang_cl_asan -LD -O0 %s -Fe%t.dll
// RUN: not %run %t %t.dll 2>&1 | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t | FileCheck %s
#include <stdio.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <stdio.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <stdio.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <stdio.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
int main() {

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
struct C {

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <stdio.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <stdio.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t | FileCheck %s
#include <stdio.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: env ASAN_OPTIONS=detect_stack_use_after_return=1 not %run %t 2>&1 | FileCheck %s
char *x;

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t
#include <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
#include <malloc.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: %run %t
// Just make sure we can parse <windows.h>

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
class Parent {

View File

@ -1,4 +1,4 @@
// RUN: %clangxx_asan -O0 %s -Fe%t
// RUN: %clang_cl_asan -O0 %s -Fe%t
// RUN: not %run %t 2>&1 | FileCheck %s
class Parent {

View File

@ -1,6 +1,7 @@
# -*- Python -*-
import os
import platform
def get_required_attr(config, attr_name):
attr_value = getattr(config, attr_name, None)
@ -32,19 +33,11 @@ else:
# FIXME: Review the set of required flags and check if it can be reduced.
target_cflags = [get_required_attr(config, "target_cflags")] + extra_linkflags
target_cxxflags = config.cxx_mode_flags + target_cflags
clang_asan_static_cflags = ["-fsanitize=address"] + target_cflags
clang_path = getattr(config, 'clang', None)
if clang_path.find("clang-cl") == -1:
clang_asan_static_cflags += ["-g",
"-mno-omit-leaf-frame-pointer",
"-fno-omit-frame-pointer",
"-fno-optimize-sibling-calls"]
else:
clang_asan_static_cflags += ["-Zi",
"-Wno-deprecated-declarations",
"-D_HAS_EXCEPTIONS=0"]
clang_asan_static_cflags = ["-fsanitize=address",
"-mno-omit-leaf-frame-pointer",
"-fno-omit-frame-pointer",
"-fno-optimize-sibling-calls",
"-g"] + target_cflags
clang_asan_static_cxxflags = config.cxx_mode_flags + clang_asan_static_cflags
if config.asan_dynamic:
@ -76,6 +69,16 @@ if config.asan_dynamic:
config.substitutions.append( ("%clang_asan_static ", build_invocation(clang_asan_static_cflags)) )
config.substitutions.append( ("%clangxx_asan_static ", build_invocation(clang_asan_static_cxxflags)) )
# Windows-specific tests might also use the clang-cl.exe driver.
if platform.system() == 'Windows':
clang_cl_asan_cxxflags = ["-fsanitize=address",
"-Wno-deprecated-declarations",
"-D_HAS_EXCEPTIONS=0",
"-Zi"] + target_cflags
clang_invocation = build_invocation(clang_cl_asan_cxxflags)
clang_cl_invocation = clang_invocation.replace("clang.exe","clang-cl.exe")
config.substitutions.append( ("%clang_cl_asan ", clang_cl_invocation) )
# FIXME: De-hardcode this path.
asan_source_dir = os.path.join(
get_required_attr(config, "compiler_rt_src_root"), "lib", "asan")