Move MSan lit-tests under test/msan
authorAlexey Samsonov <samsonov@google.com>
Fri, 14 Feb 2014 13:02:58 +0000 (13:02 +0000)
committerAlexey Samsonov <samsonov@google.com>
Fri, 14 Feb 2014 13:02:58 +0000 (13:02 +0000)
llvm-svn: 201412

90 files changed:
compiler-rt/CMakeLists.txt
compiler-rt/lib/msan/CMakeLists.txt
compiler-rt/lib/msan/lit_tests/CMakeLists.txt [deleted file]
compiler-rt/lib/msan/lit_tests/lit.cfg [deleted file]
compiler-rt/lib/msan/tests/CMakeLists.txt
compiler-rt/test/CMakeLists.txt
compiler-rt/test/lsan/CMakeLists.txt
compiler-rt/test/msan/CMakeLists.txt [new file with mode: 0644]
compiler-rt/test/msan/Linux/getresid.cc [moved from compiler-rt/lib/msan/lit_tests/Linux/getresid.cc with 100% similarity]
compiler-rt/test/msan/Linux/glob.cc [moved from compiler-rt/lib/msan/lit_tests/Linux/glob.cc with 100% similarity]
compiler-rt/test/msan/Linux/glob_altdirfunc.cc [moved from compiler-rt/lib/msan/lit_tests/Linux/glob_altdirfunc.cc with 100% similarity]
compiler-rt/test/msan/Linux/glob_nomatch.cc [moved from compiler-rt/lib/msan/lit_tests/Linux/glob_nomatch.cc with 100% similarity]
compiler-rt/test/msan/Linux/glob_test_root/aa [moved from compiler-rt/lib/msan/lit_tests/Linux/glob_test_root/aa with 100% similarity]
compiler-rt/test/msan/Linux/glob_test_root/ab [moved from compiler-rt/lib/msan/lit_tests/Linux/glob_test_root/ab with 100% similarity]
compiler-rt/test/msan/Linux/glob_test_root/ba [moved from compiler-rt/lib/msan/lit_tests/Linux/glob_test_root/ba with 100% similarity]
compiler-rt/test/msan/Linux/lit.local.cfg [moved from compiler-rt/lib/msan/lit_tests/Linux/lit.local.cfg with 100% similarity]
compiler-rt/test/msan/Linux/syscalls.cc [moved from compiler-rt/lib/msan/lit_tests/Linux/syscalls.cc with 100% similarity]
compiler-rt/test/msan/Linux/tcgetattr.cc [moved from compiler-rt/lib/msan/lit_tests/Linux/tcgetattr.cc with 100% similarity]
compiler-rt/test/msan/Linux/xattr.cc [moved from compiler-rt/lib/msan/lit_tests/Linux/xattr.cc with 100% similarity]
compiler-rt/test/msan/Linux/xattr_test_root/a [moved from compiler-rt/lib/msan/lit_tests/Linux/xattr_test_root/a with 100% similarity]
compiler-rt/test/msan/SharedLibs/dso-origin-so.cc [moved from compiler-rt/lib/msan/lit_tests/SharedLibs/dso-origin-so.cc with 100% similarity]
compiler-rt/test/msan/SharedLibs/dso-origin.h [moved from compiler-rt/lib/msan/lit_tests/SharedLibs/dso-origin.h with 100% similarity]
compiler-rt/test/msan/SharedLibs/lit.local.cfg [moved from compiler-rt/lib/msan/lit_tests/SharedLibs/lit.local.cfg with 100% similarity]
compiler-rt/test/msan/Unit/lit.site.cfg.in [moved from compiler-rt/lib/msan/lit_tests/Unit/lit.site.cfg.in with 78% similarity]
compiler-rt/test/msan/allocator_returns_null.cc [moved from compiler-rt/lib/msan/lit_tests/allocator_returns_null.cc with 100% similarity]
compiler-rt/test/msan/backtrace.cc [moved from compiler-rt/lib/msan/lit_tests/backtrace.cc with 100% similarity]
compiler-rt/test/msan/c-strdup.c [moved from compiler-rt/lib/msan/lit_tests/c-strdup.c with 100% similarity]
compiler-rt/test/msan/cxa_atexit.cc [moved from compiler-rt/lib/msan/lit_tests/cxa_atexit.cc with 100% similarity]
compiler-rt/test/msan/default_blacklist.cc [moved from compiler-rt/lib/msan/lit_tests/default_blacklist.cc with 100% similarity]
compiler-rt/test/msan/dlerror.cc [moved from compiler-rt/lib/msan/lit_tests/dlerror.cc with 100% similarity]
compiler-rt/test/msan/dso-origin.cc [moved from compiler-rt/lib/msan/lit_tests/dso-origin.cc with 100% similarity]
compiler-rt/test/msan/dtls_test.c [moved from compiler-rt/lib/msan/lit_tests/dtls_test.c with 100% similarity]
compiler-rt/test/msan/errno.cc [moved from compiler-rt/lib/msan/lit_tests/errno.cc with 100% similarity]
compiler-rt/test/msan/getaddrinfo-positive.cc [moved from compiler-rt/lib/msan/lit_tests/getaddrinfo-positive.cc with 100% similarity]
compiler-rt/test/msan/getaddrinfo.cc [moved from compiler-rt/lib/msan/lit_tests/getaddrinfo.cc with 100% similarity]
compiler-rt/test/msan/getline.cc [moved from compiler-rt/lib/msan/lit_tests/getline.cc with 100% similarity]
compiler-rt/test/msan/getline_test_data [moved from compiler-rt/lib/msan/lit_tests/getline_test_data with 100% similarity]
compiler-rt/test/msan/heap-origin.cc [moved from compiler-rt/lib/msan/lit_tests/heap-origin.cc with 100% similarity]
compiler-rt/test/msan/iconv.cc [moved from compiler-rt/lib/msan/lit_tests/iconv.cc with 100% similarity]
compiler-rt/test/msan/if_indextoname.cc [moved from compiler-rt/lib/msan/lit_tests/if_indextoname.cc with 100% similarity]
compiler-rt/test/msan/ifaddrs.cc [moved from compiler-rt/lib/msan/lit_tests/ifaddrs.cc with 100% similarity]
compiler-rt/test/msan/initgroups.cc [moved from compiler-rt/lib/msan/lit_tests/initgroups.cc with 100% similarity]
compiler-rt/test/msan/inline.cc [moved from compiler-rt/lib/msan/lit_tests/inline.cc with 100% similarity]
compiler-rt/test/msan/insertvalue_origin.cc [moved from compiler-rt/lib/msan/lit_tests/insertvalue_origin.cc with 100% similarity]
compiler-rt/test/msan/ioctl.cc [moved from compiler-rt/lib/msan/lit_tests/ioctl.cc with 100% similarity]
compiler-rt/test/msan/ioctl_custom.cc [moved from compiler-rt/lib/msan/lit_tests/ioctl_custom.cc with 100% similarity]
compiler-rt/test/msan/ioctl_sound.cc [moved from compiler-rt/lib/msan/lit_tests/ioctl_sound.cc with 100% similarity]
compiler-rt/test/msan/keep-going-dso.cc [moved from compiler-rt/lib/msan/lit_tests/keep-going-dso.cc with 100% similarity]
compiler-rt/test/msan/keep-going.cc [moved from compiler-rt/lib/msan/lit_tests/keep-going.cc with 100% similarity]
compiler-rt/test/msan/lit.cfg [new file with mode: 0644]
compiler-rt/test/msan/lit.site.cfg.in [moved from compiler-rt/lib/msan/lit_tests/lit.site.cfg.in with 73% similarity]
compiler-rt/test/msan/malloc_hook.cc [moved from compiler-rt/lib/msan/lit_tests/malloc_hook.cc with 100% similarity]
compiler-rt/test/msan/mmap_below_shadow.cc [moved from compiler-rt/lib/msan/lit_tests/mmap_below_shadow.cc with 100% similarity]
compiler-rt/test/msan/no_sanitize_memory.cc [moved from compiler-rt/lib/msan/lit_tests/no_sanitize_memory.cc with 100% similarity]
compiler-rt/test/msan/no_sanitize_memory_prop.cc [moved from compiler-rt/lib/msan/lit_tests/no_sanitize_memory_prop.cc with 100% similarity]
compiler-rt/test/msan/poison_in_free.cc [moved from compiler-rt/lib/msan/lit_tests/poison_in_free.cc with 100% similarity]
compiler-rt/test/msan/pthread_getattr_np_deadlock.cc [moved from compiler-rt/lib/msan/lit_tests/pthread_getattr_np_deadlock.cc with 100% similarity]
compiler-rt/test/msan/ptrace.cc [moved from compiler-rt/lib/msan/lit_tests/ptrace.cc with 100% similarity]
compiler-rt/test/msan/readdir64.cc [moved from compiler-rt/lib/msan/lit_tests/readdir64.cc with 100% similarity]
compiler-rt/test/msan/scandir.cc [moved from compiler-rt/lib/msan/lit_tests/scandir.cc with 100% similarity]
compiler-rt/test/msan/scandir_null.cc [moved from compiler-rt/lib/msan/lit_tests/scandir_null.cc with 100% similarity]
compiler-rt/test/msan/scandir_test_root/aaa [moved from compiler-rt/lib/msan/lit_tests/scandir_test_root/aaa with 100% similarity]
compiler-rt/test/msan/scandir_test_root/aab [moved from compiler-rt/lib/msan/lit_tests/scandir_test_root/aab with 100% similarity]
compiler-rt/test/msan/scandir_test_root/bbb [moved from compiler-rt/lib/msan/lit_tests/scandir_test_root/bbb with 100% similarity]
compiler-rt/test/msan/select.cc [moved from compiler-rt/lib/msan/lit_tests/select.cc with 100% similarity]
compiler-rt/test/msan/select_origin.cc [moved from compiler-rt/lib/msan/lit_tests/select_origin.cc with 100% similarity]
compiler-rt/test/msan/setlocale.cc [moved from compiler-rt/lib/msan/lit_tests/setlocale.cc with 100% similarity]
compiler-rt/test/msan/signal_stress_test.cc [moved from compiler-rt/lib/msan/lit_tests/signal_stress_test.cc with 100% similarity]
compiler-rt/test/msan/sigwait.cc [moved from compiler-rt/lib/msan/lit_tests/sigwait.cc with 100% similarity]
compiler-rt/test/msan/sigwaitinfo.cc [moved from compiler-rt/lib/msan/lit_tests/sigwaitinfo.cc with 100% similarity]
compiler-rt/test/msan/stack-origin.cc [moved from compiler-rt/lib/msan/lit_tests/stack-origin.cc with 100% similarity]
compiler-rt/test/msan/strerror_r-non-gnu.c [moved from compiler-rt/lib/msan/lit_tests/strerror_r-non-gnu.c with 100% similarity]
compiler-rt/test/msan/strlen_of_shadow.cc [moved from compiler-rt/lib/msan/lit_tests/strlen_of_shadow.cc with 100% similarity]
compiler-rt/test/msan/sync_lock_set_and_test.cc [moved from compiler-rt/lib/msan/lit_tests/sync_lock_set_and_test.cc with 100% similarity]
compiler-rt/test/msan/textdomain.cc [moved from compiler-rt/lib/msan/lit_tests/textdomain.cc with 100% similarity]
compiler-rt/test/msan/times.cc [moved from compiler-rt/lib/msan/lit_tests/times.cc with 100% similarity]
compiler-rt/test/msan/tls_reuse.cc [moved from compiler-rt/lib/msan/lit_tests/tls_reuse.cc with 100% similarity]
compiler-rt/test/msan/tzset.cc [moved from compiler-rt/lib/msan/lit_tests/tzset.cc with 100% similarity]
compiler-rt/test/msan/unaligned_read_origin.cc [moved from compiler-rt/lib/msan/lit_tests/unaligned_read_origin.cc with 100% similarity]
compiler-rt/test/msan/use-after-free.cc [moved from compiler-rt/lib/msan/lit_tests/use-after-free.cc with 100% similarity]
compiler-rt/test/msan/vector_cvt.cc [moved from compiler-rt/lib/msan/lit_tests/vector_cvt.cc with 100% similarity]
compiler-rt/test/msan/vector_select.cc [moved from compiler-rt/lib/msan/lit_tests/vector_select.cc with 100% similarity]
compiler-rt/test/msan/wrap_indirect_calls.cc [moved from compiler-rt/lib/msan/lit_tests/wrap_indirect_calls.cc with 100% similarity]
compiler-rt/test/msan/wrap_indirect_calls/caller.cc [moved from compiler-rt/lib/msan/lit_tests/wrap_indirect_calls/caller.cc with 100% similarity]
compiler-rt/test/msan/wrap_indirect_calls/lit.local.cfg [moved from compiler-rt/lib/msan/lit_tests/wrap_indirect_calls/lit.local.cfg with 100% similarity]
compiler-rt/test/msan/wrap_indirect_calls/one.cc [moved from compiler-rt/lib/msan/lit_tests/wrap_indirect_calls/one.cc with 100% similarity]
compiler-rt/test/msan/wrap_indirect_calls/two.cc [moved from compiler-rt/lib/msan/lit_tests/wrap_indirect_calls/two.cc with 100% similarity]
compiler-rt/test/msan/wrap_indirect_calls/wrapper.cc [moved from compiler-rt/lib/msan/lit_tests/wrap_indirect_calls/wrapper.cc with 100% similarity]
compiler-rt/test/msan/wrap_indirect_calls2.cc [moved from compiler-rt/lib/msan/lit_tests/wrap_indirect_calls2.cc with 100% similarity]
compiler-rt/test/msan/wrap_indirect_calls_in_rtl.cc [moved from compiler-rt/lib/msan/lit_tests/wrap_indirect_calls_in_rtl.cc with 100% similarity]

index 211d917..3bbcf0a 100644 (file)
@@ -233,6 +233,7 @@ filter_available_targets(SANITIZER_COMMON_SUPPORTED_ARCH
   x86_64 i386 powerpc64 arm)
 filter_available_targets(DFSAN_SUPPORTED_ARCH x86_64)
 filter_available_targets(LSAN_SUPPORTED_ARCH x86_64)
+filter_available_targets(MSAN_SUPPORTED_ARCH x86_64)
 filter_available_targets(UBSAN_SUPPORTED_ARCH x86_64 i386)
 
 add_subdirectory(include)
@@ -248,6 +249,13 @@ if (NOT ANDROID)
   endif()
 endif()
 
+set(COMPILER_RT_LIBCXX_PATH ${LLVM_MAIN_SRC_DIR}/projects/libcxx)
+if(EXISTS ${COMPILER_RT_LIBCXX_PATH}/)
+  set(COMPILER_RT_HAS_LIBCXX_SOURCES TRUE)
+else()
+  set(COMPILER_RT_HAS_LIBCXX_SOURCES FALSE)
+endif()
+
 add_subdirectory(lib)
 
 if(LLVM_INCLUDE_TESTS)
index 06f3f65..d876a73 100644 (file)
@@ -17,7 +17,7 @@ set(MSAN_RTL_CFLAGS
   -ffreestanding)
 
 # Static runtime library.
-set(MSAN_RUNTIME_LIBRARIES)
+add_custom_target(msan)
 set(arch "x86_64")
 if(CAN_TARGET_${arch})
   add_compiler_rt_static_runtime(clang_rt.msan-${arch} ${arch}
@@ -26,25 +26,16 @@ if(CAN_TARGET_${arch})
             $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
             $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
     CFLAGS ${MSAN_RTL_CFLAGS})
-  list(APPEND MSAN_RUNTIME_LIBRARIES clang_rt.msan-${arch})
+  add_dependencies(msan clang_rt.msan-${arch})
   if(UNIX)
     add_sanitizer_rt_symbols(clang_rt.msan-${arch} msan.syms.extra)
-    list(APPEND MSAN_RUNTIME_LIBRARIES clang_rt.msan-${arch}-symbols)
+    add_dependencies(msan clang_rt.msan-${arch}-symbols)
   endif()
 endif()
 
 add_compiler_rt_resource_file(msan_blacklist msan_blacklist.txt)
-
-# We should only build MSan unit tests if we can build instrumented libcxx.
-set(MSAN_LIBCXX_PATH ${LLVM_MAIN_SRC_DIR}/projects/libcxx)
-if(EXISTS ${MSAN_LIBCXX_PATH}/)
-  set(MSAN_CAN_INSTRUMENT_LIBCXX TRUE)
-else()
-  set(MSAN_CAN_INSTRUMENT_LIBCXX FALSE)
-endif()
+add_dependencies(msan msan_blacklist)
 
 if(LLVM_INCLUDE_TESTS)
   add_subdirectory(tests)
 endif()
-
-add_subdirectory(lit_tests)
diff --git a/compiler-rt/lib/msan/lit_tests/CMakeLists.txt b/compiler-rt/lib/msan/lit_tests/CMakeLists.txt
deleted file mode 100644 (file)
index 38d1e59..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-set(MSAN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..)
-set(MSAN_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/..)
-
-configure_lit_site_cfg(
-  ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
-  ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)
-
-if(MSAN_CAN_INSTRUMENT_LIBCXX)
-  configure_lit_site_cfg(
-    ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
-    ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg)
-endif()
-
-if(COMPILER_RT_CAN_EXECUTE_TESTS AND CAN_TARGET_x86_64)
-  # Run MSan tests only if we're sure we may produce working binaries.
-  set(MSAN_TEST_DEPS
-    ${SANITIZER_COMMON_LIT_TEST_DEPS}
-    ${MSAN_RUNTIME_LIBRARIES}
-    msan_blacklist)
-  set(MSAN_TEST_PARAMS
-    msan_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)
-  if(LLVM_INCLUDE_TESTS AND MSAN_CAN_INSTRUMENT_LIBCXX)
-    list(APPEND MSAN_TEST_DEPS MsanUnitTests)
-  endif()
-  add_lit_testsuite(check-msan "Running the MemorySanitizer tests"
-    ${CMAKE_CURRENT_BINARY_DIR}
-    PARAMS ${MSAN_TEST_PARAMS}
-    DEPENDS ${MSAN_TEST_DEPS}
-    )
-  set_target_properties(check-msan PROPERTIES FOLDER "MSan tests")
-endif()
diff --git a/compiler-rt/lib/msan/lit_tests/lit.cfg b/compiler-rt/lib/msan/lit_tests/lit.cfg
deleted file mode 100644 (file)
index da1bde6..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# -*- Python -*-
-
-import os
-
-import lit.util
-
-def get_required_attr(config, attr_name):
-  attr_value = getattr(config, attr_name, None)
-  if not attr_value:
-    lit_config.fatal(
-      "No attribute %r in test configuration! You may need to run "
-      "tests from your build directory or add this attribute "
-      "to lit.site.cfg " % attr_name)
-  return attr_value
-
-# Setup config name.
-config.name = 'MemorySanitizer'
-
-# Setup source root.
-config.test_source_root = os.path.dirname(__file__)
-
-def DisplayNoConfigMessage():
-  lit_config.fatal("No site specific configuration available! " +
-                   "Try running your test from the build tree or running " +
-                   "make check-msan")
-
-# Figure out LLVM source root.
-llvm_src_root = getattr(config, 'llvm_src_root', None)
-if llvm_src_root is None:
-  # We probably haven't loaded the site-specific configuration: the user
-  # is likely trying to run a test file directly, and the site configuration
-  # wasn't created by the build system.
-  msan_site_cfg = lit_config.params.get('msan_site_config', None)
-  if (msan_site_cfg) and (os.path.exists(msan_site_cfg)):
-    lit_config.load_config(config, msan_site_cfg)
-    raise SystemExit
-
-  # Try to guess the location of site-specific configuration using llvm-config
-  # util that can point where the build tree is.
-  llvm_config = lit.util.which("llvm-config", config.environment["PATH"])
-  if not llvm_config:
-    DisplayNoConfigMessage()
-
-  # Find out the presumed location of generated site config.
-  llvm_obj_root = lit.util.capture(["llvm-config", "--obj-root"]).strip()
-  msan_site_cfg = os.path.join(llvm_obj_root, "projects", "compiler-rt",
-                               "lib", "msan", "lit_tests", "lit.site.cfg")
-  if (not msan_site_cfg) or (not os.path.exists(msan_site_cfg)):
-    DisplayNoConfigMessage()
-
-  lit_config.load_config(config, msan_site_cfg)
-  raise SystemExit
-
-# Setup default compiler flags used with -fsanitize=memory option.
-clang_msan_cflags = ["-fsanitize=memory",
-                     "-mno-omit-leaf-frame-pointer",
-                     "-fno-omit-frame-pointer",
-                     "-fno-optimize-sibling-calls",
-                     "-g",
-                     "-m64"]
-clang_msan_cxxflags = ["--driver-mode=g++ "] + clang_msan_cflags
-config.substitutions.append( ("%clang_msan ",
-                              " ".join([config.clang] + clang_msan_cflags) + 
-                              " ") )
-config.substitutions.append( ("%clangxx_msan ",
-                              " ".join([config.clang] + clang_msan_cxxflags) + 
-                              " ") )
-
-# Default test suffixes.
-config.suffixes = ['.c', '.cc', '.cpp']
-
-# MemorySanitizer tests are currently supported on Linux only.
-if config.host_os not in ['Linux']:
-  config.unsupported = True
index 9c49f16..d679524 100644 (file)
@@ -6,9 +6,9 @@ include_directories(..)
 include_directories(../..)
 
 # Instrumented libcxx sources and build flags.
-file(GLOB MSAN_LIBCXX_SOURCES ${MSAN_LIBCXX_PATH}/src/*.cpp)
+file(GLOB MSAN_LIBCXX_SOURCES ${COMPILER_RT_LIBCXX_PATH}/src/*.cpp)
 set(MSAN_LIBCXX_CFLAGS
-  -I${MSAN_LIBCXX_PATH}/include
+  -I${COMPILER_RT_LIBCXX_PATH}/include
   -fsanitize=memory
   -fsanitize-memory-track-origins
   -fPIC
@@ -39,7 +39,7 @@ set(MSAN_UNITTEST_HEADERS
 )
 set(MSANDR_UNITTEST_SOURCE msandr_test_so.cc)
 set(MSAN_UNITTEST_COMMON_CFLAGS
-  -I${MSAN_LIBCXX_PATH}/include
+  -I${COMPILER_RT_LIBCXX_PATH}/include
   ${COMPILER_RT_GTEST_INCLUDE_CFLAGS}
   -I${COMPILER_RT_SOURCE_DIR}/include
   -I${COMPILER_RT_SOURCE_DIR}/lib
@@ -78,7 +78,7 @@ macro(msan_compile obj_list source arch)
   get_target_flags_for_arch(${arch} TARGET_CFLAGS)
   clang_compile(${output_obj} ${source}
                 CFLAGS ${ARGN} ${TARGET_CFLAGS}
-                DEPS gtest ${MSAN_RUNTIME_LIBRARIES} ${MSAN_UNITTEST_HEADERS})
+                DEPS gtest msan ${MSAN_UNITTEST_HEADERS})
   list(APPEND ${obj_list} ${output_obj})
 endmacro()
 
@@ -99,7 +99,7 @@ macro(add_msan_test test_suite test_name arch)
   get_target_flags_for_arch(${arch} TARGET_LINK_FLAGS)
   add_compiler_rt_test(${test_suite} ${test_name}
                        OBJECTS ${ARGN}
-                       DEPS ${MSAN_RUNTIME_LIBRARIES} ${ARGN}
+                       DEPS msan ${ARGN}
                             ${MSAN_LOADABLE_SO}
                        LINK_FLAGS ${MSAN_UNITTEST_LINK_FLAGS}
                                   ${TARGET_LINK_FLAGS}
@@ -128,7 +128,7 @@ macro(add_msan_tests_for_arch arch)
   msan_link_shared(MSAN_INST_LIBCXX "libcxx" ${arch}
                    OBJECTS ${MSAN_INST_LIBCXX_OBJECTS}
                    LINKFLAGS ${MSAN_LIBCXX_LINK_FLAGS}
-                   DEPS ${MSAN_INST_LIBCXX_OBJECTS} ${MSAN_RUNTIME_LIBRARIES})
+                   DEPS ${MSAN_INST_LIBCXX_OBJECTS} msan)
 
   # Instrumented tests.
   set(MSAN_INST_TEST_OBJECTS)
@@ -151,13 +151,13 @@ macro(add_msan_tests_for_arch arch)
   set(MSAN_LOADABLE_SO)
   msan_link_shared(MSAN_LOADABLE_SO "libmsan_loadable" ${arch}
                    OBJECTS ${MSAN_INST_LOADABLE_OBJECTS}
-                   DEPS ${MSAN_INST_LOADABLE_OBJECTS} ${MSAN_RUNTIME_LIBRARIES})
+                   DEPS ${MSAN_INST_LOADABLE_OBJECTS} msan)
 
   # Uninstrumented shared library tests.
   set(MSANDR_TEST_SO)
   msan_link_shared(MSANDR_TEST_SO "libmsandr_test" ${arch}
                    OBJECTS ${MSANDR_TEST_OBJECTS}
-                   DEPS ${MSANDR_TEST_OBJECTS} ${MSAN_RUNTIME_LIBRARIES})
+                   DEPS ${MSANDR_TEST_OBJECTS} msan)
 
   # Link everything together.
   add_msan_test(MsanUnitTests "Msan-${arch}-Test" ${arch}
@@ -165,7 +165,8 @@ macro(add_msan_tests_for_arch arch)
                 ${MSAN_INST_LIBCXX} ${MSANDR_TEST_SO})
 endmacro()
 
-if(COMPILER_RT_CAN_EXECUTE_TESTS AND MSAN_CAN_INSTRUMENT_LIBCXX)
+# We should only build MSan unit tests if we can build instrumented libcxx.
+if(COMPILER_RT_CAN_EXECUTE_TESTS AND COMPILER_RT_HAS_LIBCXX_SOURCES)
   if(CAN_TARGET_x86_64)
     add_msan_tests_for_arch(x86_64)
   endif()
index 6c9b08f..4b8401e 100644 (file)
@@ -15,6 +15,9 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS)
   if(LSAN_SUPPORTED_ARCH)
     add_subdirectory(lsan)
   endif()
+  if(MSAN_SUPPORTED_ARCH)
+    add_subdirectory(msan)
+  endif()
   if(UBSAN_SUPPORTED_ARCH)
     add_subdirectory(ubsan)
   endif()
index 6b1fb06..d84b182 100644 (file)
@@ -10,7 +10,7 @@ configure_lit_site_cfg(
   ${CMAKE_CURRENT_BINARY_DIR}/AsanConfig/lit.site.cfg
   )
 
-if(COMPILER_RT_CAN_EXECUTE_TESTS AND NOT APPLE AND NOT ANDROID)
+if(NOT APPLE AND NOT ANDROID)
   set(LSAN_TEST_DEPS
     ${SANITIZER_COMMON_LIT_TEST_DEPS}
     lsan
diff --git a/compiler-rt/test/msan/CMakeLists.txt b/compiler-rt/test/msan/CMakeLists.txt
new file mode 100644 (file)
index 0000000..3387f82
--- /dev/null
@@ -0,0 +1,22 @@
+set(MSAN_LIT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+
+configure_lit_site_cfg(
+  ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
+  ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)
+
+set(MSAN_TEST_DEPS
+  ${SANITIZER_COMMON_LIT_TEST_DEPS}
+  msan)
+
+if(LLVM_INCLUDE_TESTS AND COMPILER_RT_HAS_LIBCXX_SOURCES)
+  configure_lit_site_cfg(
+    ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
+    ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg)
+  list(APPEND MSAN_TEST_DEPS MsanUnitTests)
+endif()
+
+add_lit_testsuite(check-msan "Running the MemorySanitizer tests"
+  ${CMAKE_CURRENT_BINARY_DIR}
+  DEPENDS ${MSAN_TEST_DEPS}
+  )
+set_target_properties(check-msan PROPERTIES FOLDER "MSan tests")
@@ -9,5 +9,6 @@ config.name = 'MemorySanitizer-Unit'
 
 # Setup test source and exec root. For unit tests, we define
 # it as build directory with MSan unit tests.
-config.test_exec_root = "@MSAN_BINARY_DIR@/tests"
+# FIXME: Don't use hardcoded path to MSan unit tests.
+config.test_exec_root = "@COMPILER_RT_BINARY_DIR@/lib/msan/tests"
 config.test_source_root = config.test_exec_root
diff --git a/compiler-rt/test/msan/lit.cfg b/compiler-rt/test/msan/lit.cfg
new file mode 100644 (file)
index 0000000..3031e6a
--- /dev/null
@@ -0,0 +1,31 @@
+# -*- Python -*-
+
+import os
+
+# Setup config name.
+config.name = 'MemorySanitizer'
+
+# Setup source root.
+config.test_source_root = os.path.dirname(__file__)
+
+# Setup default compiler flags used with -fsanitize=memory option.
+clang_msan_cflags = ["-fsanitize=memory",
+                     "-mno-omit-leaf-frame-pointer",
+                     "-fno-omit-frame-pointer",
+                     "-fno-optimize-sibling-calls",
+                     "-g",
+                     "-m64"]
+clang_msan_cxxflags = ["--driver-mode=g++ "] + clang_msan_cflags
+config.substitutions.append( ("%clang_msan ",
+                              " ".join([config.clang] + clang_msan_cflags) + 
+                              " ") )
+config.substitutions.append( ("%clangxx_msan ",
+                              " ".join([config.clang] + clang_msan_cxxflags) + 
+                              " ") )
+
+# Default test suffixes.
+config.suffixes = ['.c', '.cc', '.cpp']
+
+# MemorySanitizer tests are currently supported on Linux only.
+if config.host_os not in ['Linux']:
+  config.unsupported = True
similarity index 73%
rename from compiler-rt/lib/msan/lit_tests/lit.site.cfg.in
rename to compiler-rt/test/msan/lit.site.cfg.in
index 6d1eccc..fb22a57 100644 (file)
@@ -2,4 +2,4 @@
 lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured")
 
 # Load tool-specific config that would do the real work.
-lit_config.load_config(config, "@MSAN_SOURCE_DIR@/lit_tests/lit.cfg")
+lit_config.load_config(config, "@MSAN_LIT_SOURCE_DIR@/lit.cfg")