diff --git a/compiler-rt/test/lsan/CMakeLists.txt b/compiler-rt/test/lsan/CMakeLists.txt --- a/compiler-rt/test/lsan/CMakeLists.txt +++ b/compiler-rt/test/lsan/CMakeLists.txt @@ -1,7 +1,7 @@ set(LSAN_LIT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(LSAN_TESTSUITES) - + set(LSAN_TEST_ARCH ${LSAN_SUPPORTED_ARCH}) if(APPLE) darwin_filter_host_archs(LSAN_SUPPORTED_ARCH LSAN_TEST_ARCH) @@ -12,9 +12,9 @@ string(TOLOWER "-${arch}" LSAN_TEST_CONFIG_SUFFIX) get_test_cc_for_arch(${arch} LSAN_TEST_TARGET_CC LSAN_TEST_TARGET_CFLAGS) string(TOUPPER ${arch} ARCH_UPPER_CASE) + set(LSAN_LIT_TEST_MODE "Standalone") set(CONFIG_NAME ${ARCH_UPPER_CASE}LsanConfig) - configure_lit_site_cfg( ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg.py) @@ -22,11 +22,21 @@ set(CONFIG_NAME ${ARCH_UPPER_CASE}AsanConfig) set(LSAN_LIT_TEST_MODE "AddressSanitizer") - configure_lit_site_cfg( ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg.py) list(APPEND LSAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}) + + # Fixme: make this generic 64 bit check once confirmed that at least + # ARM64 works. + if (arch STREQUAL "x86_64" AND NOT APPLE) + set(CONFIG_NAME ${ARCH_UPPER_CASE}HWAsanConfig) + set(LSAN_LIT_TEST_MODE "HWAddressSanitizer") + configure_lit_site_cfg( + ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in + ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg.py) + list(APPEND LSAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}) + endif() endforeach() set(LSAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS}) diff --git a/compiler-rt/test/lsan/TestCases/Linux/cleanup_in_tsd_destructor.c b/compiler-rt/test/lsan/TestCases/Linux/cleanup_in_tsd_destructor.c --- a/compiler-rt/test/lsan/TestCases/Linux/cleanup_in_tsd_destructor.c +++ b/compiler-rt/test/lsan/TestCases/Linux/cleanup_in_tsd_destructor.c @@ -1,5 +1,8 @@ // Regression test for thread lifetime tracking. Thread data should be // considered live during the thread's termination, at least until the + +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan // user-installed TSD destructors have finished running (since they may contain // additional cleanup tasks). LSan doesn't actually meet that goal 100%, but it // makes its best effort. diff --git a/compiler-rt/test/lsan/TestCases/Linux/disabler_in_tsd_destructor.c b/compiler-rt/test/lsan/TestCases/Linux/disabler_in_tsd_destructor.c --- a/compiler-rt/test/lsan/TestCases/Linux/disabler_in_tsd_destructor.c +++ b/compiler-rt/test/lsan/TestCases/Linux/disabler_in_tsd_destructor.c @@ -2,6 +2,9 @@ // RUN: %clang_lsan %s -o %t // RUN: %env_lsan_opts="report_objects=1:use_registers=0:use_stacks=0:use_tls=1:use_ld_allocations=0" %run %t +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include diff --git a/compiler-rt/test/lsan/TestCases/Linux/fork_threaded.cpp b/compiler-rt/test/lsan/TestCases/Linux/fork_threaded.cpp --- a/compiler-rt/test/lsan/TestCases/Linux/fork_threaded.cpp +++ b/compiler-rt/test/lsan/TestCases/Linux/fork_threaded.cpp @@ -3,6 +3,9 @@ // RUN: %clangxx_lsan %s -o %t // RUN: %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include diff --git a/compiler-rt/test/lsan/TestCases/Linux/guard-page.c b/compiler-rt/test/lsan/TestCases/Linux/guard-page.c --- a/compiler-rt/test/lsan/TestCases/Linux/guard-page.c +++ b/compiler-rt/test/lsan/TestCases/Linux/guard-page.c @@ -1,6 +1,9 @@ // Check that if LSan finds that SP doesn't point into thread stack (e.g. // if swapcontext is used), LSan will not hit the guard page. // RUN: %clang_lsan %s -o %t && %run %t + +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan // Missing 'getcontext' and 'makecontext' on Android. // UNSUPPORTED: android diff --git a/compiler-rt/test/lsan/TestCases/Linux/libdl_deadlock.cpp b/compiler-rt/test/lsan/TestCases/Linux/libdl_deadlock.cpp --- a/compiler-rt/test/lsan/TestCases/Linux/libdl_deadlock.cpp +++ b/compiler-rt/test/lsan/TestCases/Linux/libdl_deadlock.cpp @@ -2,6 +2,9 @@ // where lsan would call dl_iterate_phdr while holding the allocator lock. // RUN: %clangxx_lsan %s -o %t && %run %t +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include diff --git a/compiler-rt/test/lsan/TestCases/Linux/log-path_test.cpp b/compiler-rt/test/lsan/TestCases/Linux/log-path_test.cpp --- a/compiler-rt/test/lsan/TestCases/Linux/log-path_test.cpp +++ b/compiler-rt/test/lsan/TestCases/Linux/log-path_test.cpp @@ -1,4 +1,7 @@ // RUN: %clangxx_lsan %s -o %t + +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan // The globs below do not work in the lit shell. // Regular run. diff --git a/compiler-rt/test/lsan/TestCases/Linux/use_tls_pthread_specific_dynamic.cpp b/compiler-rt/test/lsan/TestCases/Linux/use_tls_pthread_specific_dynamic.cpp --- a/compiler-rt/test/lsan/TestCases/Linux/use_tls_pthread_specific_dynamic.cpp +++ b/compiler-rt/test/lsan/TestCases/Linux/use_tls_pthread_specific_dynamic.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_stacks=0:use_registers=0:use_tls=1" %run %t 2>&1 // RUN: %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + // Investigate why it does not fail with use_tls=0 // UNSUPPORTED: arm-linux || armhf-linux diff --git a/compiler-rt/test/lsan/TestCases/Linux/use_tls_pthread_specific_static.cpp b/compiler-rt/test/lsan/TestCases/Linux/use_tls_pthread_specific_static.cpp --- a/compiler-rt/test/lsan/TestCases/Linux/use_tls_pthread_specific_static.cpp +++ b/compiler-rt/test/lsan/TestCases/Linux/use_tls_pthread_specific_static.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_stacks=0:use_registers=0:use_tls=1" %run %t 2>&1 // RUN: %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include diff --git a/compiler-rt/test/lsan/TestCases/Linux/use_tls_static.cpp b/compiler-rt/test/lsan/TestCases/Linux/use_tls_static.cpp --- a/compiler-rt/test/lsan/TestCases/Linux/use_tls_static.cpp +++ b/compiler-rt/test/lsan/TestCases/Linux/use_tls_static.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_stacks=0:use_registers=0:use_tls=1" %run %t 2>&1 // RUN: %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include "sanitizer_common/print_address.h" diff --git a/compiler-rt/test/lsan/TestCases/default_options.cpp b/compiler-rt/test/lsan/TestCases/default_options.cpp --- a/compiler-rt/test/lsan/TestCases/default_options.cpp +++ b/compiler-rt/test/lsan/TestCases/default_options.cpp @@ -1,5 +1,8 @@ // RUN: %clangxx_lsan -O2 %s -o %t && %run %t 2>&1 | FileCheck %s +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + extern "C" const char *__lsan_default_options() { // CHECK: Available flags for {{Leak|Address}}Sanitizer: diff --git a/compiler-rt/test/lsan/TestCases/disabler.c b/compiler-rt/test/lsan/TestCases/disabler.c --- a/compiler-rt/test/lsan/TestCases/disabler.c +++ b/compiler-rt/test/lsan/TestCases/disabler.c @@ -2,6 +2,9 @@ // RUN: %clang_lsan %s -o %t // RUN: %env_lsan_opts=report_objects=1:use_registers=0:use_stacks=0:use_tls=0 not %run %t 2>&1 | FileCheck %s +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + // Investigate why it does not fail with use_tls=0 // UNSUPPORTED: arm-linux || armhf-linux diff --git a/compiler-rt/test/lsan/TestCases/do_leak_check_override.cpp b/compiler-rt/test/lsan/TestCases/do_leak_check_override.cpp --- a/compiler-rt/test/lsan/TestCases/do_leak_check_override.cpp +++ b/compiler-rt/test/lsan/TestCases/do_leak_check_override.cpp @@ -1,5 +1,8 @@ // Test for __lsan_do_leak_check(). We test it by making the leak check run // before global destructors, which also tests compatibility with HeapChecker's + +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan // "normal" mode (LSan runs in "strict" mode by default). // RUN: %clangxx_lsan %s -o %t // RUN: %env_lsan_opts=use_stacks=0:use_registers=0 not %run %t 2>&1 | FileCheck --check-prefix=CHECK-strict %s diff --git a/compiler-rt/test/lsan/TestCases/high_allocator_contention.cpp b/compiler-rt/test/lsan/TestCases/high_allocator_contention.cpp --- a/compiler-rt/test/lsan/TestCases/high_allocator_contention.cpp +++ b/compiler-rt/test/lsan/TestCases/high_allocator_contention.cpp @@ -2,6 +2,9 @@ // Usage: ./a.out number_of_threads total_number_of_allocations // RUN: %clangxx_lsan %s -o %t // RUN: %env_lsan_opts=use_ld_allocations=0 %run %t 5 1000000 2>&1 + +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan #include #include #include diff --git a/compiler-rt/test/lsan/TestCases/ignore_object.c b/compiler-rt/test/lsan/TestCases/ignore_object.c --- a/compiler-rt/test/lsan/TestCases/ignore_object.c +++ b/compiler-rt/test/lsan/TestCases/ignore_object.c @@ -2,6 +2,9 @@ // RUN: %clang_lsan %s -o %t // RUN: %env_lsan_opts=report_objects=1:use_registers=0:use_stacks=0:use_tls=0 not %run %t 2>&1 | FileCheck %s +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + // Investigate why it does not fail with use_stack=0 // UNSUPPORTED: arm-linux || armhf-linux diff --git a/compiler-rt/test/lsan/TestCases/leak_check_at_exit.cpp b/compiler-rt/test/lsan/TestCases/leak_check_at_exit.cpp --- a/compiler-rt/test/lsan/TestCases/leak_check_at_exit.cpp +++ b/compiler-rt/test/lsan/TestCases/leak_check_at_exit.cpp @@ -5,6 +5,9 @@ // RUN: %env_lsan_opts=use_stacks=0:use_registers=0:leak_check_at_exit=0 not %run %t foo 2>&1 | FileCheck %s --check-prefix=CHECK-do // RUN: %env_lsan_opts=use_stacks=0:use_registers=0:leak_check_at_exit=0 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-dont +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include diff --git a/compiler-rt/test/lsan/TestCases/link_turned_off.cpp b/compiler-rt/test/lsan/TestCases/link_turned_off.cpp --- a/compiler-rt/test/lsan/TestCases/link_turned_off.cpp +++ b/compiler-rt/test/lsan/TestCases/link_turned_off.cpp @@ -2,6 +2,9 @@ // RUN: %clangxx_lsan %s -o %t // RUN: %env_lsan_opts=use_stacks=0:use_registers=0 %run %t // RUN: %env_lsan_opts=use_stacks=0:use_registers=0 not %run %t foo 2>&1 | FileCheck %s + +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan // // UNSUPPORTED: darwin diff --git a/compiler-rt/test/lsan/TestCases/malloc_zero.c b/compiler-rt/test/lsan/TestCases/malloc_zero.c --- a/compiler-rt/test/lsan/TestCases/malloc_zero.c +++ b/compiler-rt/test/lsan/TestCases/malloc_zero.c @@ -1,6 +1,9 @@ // RUN: %clang_lsan %s -o %t // RUN: %env_lsan_opts=use_stacks=0 not %run %t 2>&1 | FileCheck %s +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + /// Fails when only leak sanitizer is enabled // UNSUPPORTED: arm-linux, armhf-linux diff --git a/compiler-rt/test/lsan/TestCases/many_tls_keys_pthread.cpp b/compiler-rt/test/lsan/TestCases/many_tls_keys_pthread.cpp --- a/compiler-rt/test/lsan/TestCases/many_tls_keys_pthread.cpp +++ b/compiler-rt/test/lsan/TestCases/many_tls_keys_pthread.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_stacks=0:use_registers=0:use_tls=1" %run %t 2>&1 // RUN: %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + // On glibc, this requires the range returned by GetTLS to include // specific_1stblock and specific in `struct pthread`. // UNSUPPORTED: arm-linux, armhf-linux diff --git a/compiler-rt/test/lsan/TestCases/many_tls_keys_thread.cpp b/compiler-rt/test/lsan/TestCases/many_tls_keys_thread.cpp --- a/compiler-rt/test/lsan/TestCases/many_tls_keys_thread.cpp +++ b/compiler-rt/test/lsan/TestCases/many_tls_keys_thread.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_stacks=0:use_registers=0:use_tls=1" %run %t 2>&1 // RUN: %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + // Patch r303906 did not fix all the problems. // UNSUPPORTED: arm-linux,armhf-linux diff --git a/compiler-rt/test/lsan/TestCases/pointer_to_self.cpp b/compiler-rt/test/lsan/TestCases/pointer_to_self.cpp --- a/compiler-rt/test/lsan/TestCases/pointer_to_self.cpp +++ b/compiler-rt/test/lsan/TestCases/pointer_to_self.cpp @@ -3,6 +3,9 @@ // RUN: %clangxx_lsan %s -o %t // RUN: %env_lsan_opts="report_objects=1:use_registers=0:use_stacks=0" not %run %t 2>&1 | FileCheck %s +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include "sanitizer_common/print_address.h" diff --git a/compiler-rt/test/lsan/TestCases/realloc_too_big.c b/compiler-rt/test/lsan/TestCases/realloc_too_big.c --- a/compiler-rt/test/lsan/TestCases/realloc_too_big.c +++ b/compiler-rt/test/lsan/TestCases/realloc_too_big.c @@ -1,6 +1,9 @@ // RUN: %clang_lsan %s -o %t // RUN: %env_lsan_opts=allocator_may_return_null=1:max_allocation_size_mb=1:use_stacks=0 not %run %t 2>&1 | FileCheck %s +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + /// Fails when only leak sanitizer is enabled // UNSUPPORTED: arm-linux, armhf-linux diff --git a/compiler-rt/test/lsan/TestCases/recoverable_leak_check.cpp b/compiler-rt/test/lsan/TestCases/recoverable_leak_check.cpp --- a/compiler-rt/test/lsan/TestCases/recoverable_leak_check.cpp +++ b/compiler-rt/test/lsan/TestCases/recoverable_leak_check.cpp @@ -2,6 +2,9 @@ // RUN: %clangxx_lsan %s -o %t // RUN: %env_lsan_opts=use_stacks=0:use_registers=0 %run %t foo 2>&1 | FileCheck %s // RUN: %env_lsan_opts=use_stacks=0:use_registers=0 %run %t 2>&1 | FileCheck %s + +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan // // UNSUPPORTED: darwin diff --git a/compiler-rt/test/lsan/TestCases/register_root_region.cpp b/compiler-rt/test/lsan/TestCases/register_root_region.cpp --- a/compiler-rt/test/lsan/TestCases/register_root_region.cpp +++ b/compiler-rt/test/lsan/TestCases/register_root_region.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts=use_stacks=0:use_registers=0 not %run %t foo 2>&1 | FileCheck %s // RUN: %env_lsan_opts=use_stacks=0:use_registers=0:use_root_regions=0 not %run %t 2>&1 | FileCheck %s +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include diff --git a/compiler-rt/test/lsan/TestCases/suppressions_default.cpp b/compiler-rt/test/lsan/TestCases/suppressions_default.cpp --- a/compiler-rt/test/lsan/TestCases/suppressions_default.cpp +++ b/compiler-rt/test/lsan/TestCases/suppressions_default.cpp @@ -1,6 +1,9 @@ // RUN: %clangxx_lsan %s -o %t // RUN: %env_lsan_opts=use_registers=0:use_stacks=0 not %run %t 2>&1 | FileCheck %s +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include diff --git a/compiler-rt/test/lsan/TestCases/suppressions_file.cpp b/compiler-rt/test/lsan/TestCases/suppressions_file.cpp --- a/compiler-rt/test/lsan/TestCases/suppressions_file.cpp +++ b/compiler-rt/test/lsan/TestCases/suppressions_file.cpp @@ -1,5 +1,8 @@ // RUN: %clangxx_lsan %s -o %t +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + // RUN: rm -f %t.supp // RUN: touch %t.supp // RUN: %push_to_device %t.supp %device_rundir/%t.supp diff --git a/compiler-rt/test/lsan/TestCases/swapcontext.cpp b/compiler-rt/test/lsan/TestCases/swapcontext.cpp --- a/compiler-rt/test/lsan/TestCases/swapcontext.cpp +++ b/compiler-rt/test/lsan/TestCases/swapcontext.cpp @@ -1,6 +1,9 @@ // We can't unwind stack if we're running coroutines on heap-allocated // memory. Make sure we don't report these leaks. +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + // RUN: %clangxx_lsan %s -o %t // RUN: %env_lsan_opts= %run %t 2>&1 // RUN: %env_lsan_opts= not %run %t foo 2>&1 | FileCheck %s diff --git a/compiler-rt/test/lsan/TestCases/use_after_return.cpp b/compiler-rt/test/lsan/TestCases/use_after_return.cpp --- a/compiler-rt/test/lsan/TestCases/use_after_return.cpp +++ b/compiler-rt/test/lsan/TestCases/use_after_return.cpp @@ -5,6 +5,9 @@ // RUN: env ASAN_OPTIONS=detect_stack_use_after_return=1 %env_lsan_opts="report_objects=1:use_registers=0:use_stacks=1" %run %t 2>&1 // RUN: env ASAN_OPTIONS=detect_stack_use_after_return=1 %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + // Investigate why it does not fail with use_stack=0 // UNSUPPORTED: arm-linux || armhf-linux diff --git a/compiler-rt/test/lsan/TestCases/use_globals_initialized.cpp b/compiler-rt/test/lsan/TestCases/use_globals_initialized.cpp --- a/compiler-rt/test/lsan/TestCases/use_globals_initialized.cpp +++ b/compiler-rt/test/lsan/TestCases/use_globals_initialized.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_stacks=0:use_registers=0:use_globals=1" %run %t 2>&1 // RUN: %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include "sanitizer_common/print_address.h" diff --git a/compiler-rt/test/lsan/TestCases/use_globals_uninitialized.cpp b/compiler-rt/test/lsan/TestCases/use_globals_uninitialized.cpp --- a/compiler-rt/test/lsan/TestCases/use_globals_uninitialized.cpp +++ b/compiler-rt/test/lsan/TestCases/use_globals_uninitialized.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_stacks=0:use_registers=0:use_globals=1" %run %t 2>&1 // RUN: %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include "sanitizer_common/print_address.h" diff --git a/compiler-rt/test/lsan/TestCases/use_registers.cpp b/compiler-rt/test/lsan/TestCases/use_registers.cpp --- a/compiler-rt/test/lsan/TestCases/use_registers.cpp +++ b/compiler-rt/test/lsan/TestCases/use_registers.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_stacks=0:use_registers=1" %run %t 2>&1 // RUN: %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include "sanitizer_common/print_address.h" #include #include diff --git a/compiler-rt/test/lsan/TestCases/use_registers_extra.cpp b/compiler-rt/test/lsan/TestCases/use_registers_extra.cpp --- a/compiler-rt/test/lsan/TestCases/use_registers_extra.cpp +++ b/compiler-rt/test/lsan/TestCases/use_registers_extra.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_stacks=0:use_registers=1" %run %t 2>&1 // RUN: %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + // FIXME: Support more platforms. // REQUIRES: x86-target-arch && linux diff --git a/compiler-rt/test/lsan/TestCases/use_stacks.cpp b/compiler-rt/test/lsan/TestCases/use_stacks.cpp --- a/compiler-rt/test/lsan/TestCases/use_stacks.cpp +++ b/compiler-rt/test/lsan/TestCases/use_stacks.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_registers=0:use_stacks=1" %run %t 2>&1 // RUN: %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include "sanitizer_common/print_address.h" diff --git a/compiler-rt/test/lsan/TestCases/use_stacks_threaded.cpp b/compiler-rt/test/lsan/TestCases/use_stacks_threaded.cpp --- a/compiler-rt/test/lsan/TestCases/use_stacks_threaded.cpp +++ b/compiler-rt/test/lsan/TestCases/use_stacks_threaded.cpp @@ -4,6 +4,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_registers=0:use_stacks=1" %run %t 2>&1 // RUN: %env_lsan_opts="" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include diff --git a/compiler-rt/test/lsan/TestCases/use_unaligned.cpp b/compiler-rt/test/lsan/TestCases/use_unaligned.cpp --- a/compiler-rt/test/lsan/TestCases/use_unaligned.cpp +++ b/compiler-rt/test/lsan/TestCases/use_unaligned.cpp @@ -3,6 +3,9 @@ // RUN: %env_lsan_opts="report_objects=1:use_stacks=0:use_registers=0:use_unaligned=0" not %run %t 2>&1 | FileCheck %s // RUN: %env_lsan_opts="report_objects=1:use_stacks=0:use_registers=0:use_unaligned=1" %run %t 2>&1 +// Fixme: remove once test passes with hwasan +// UNSUPPORTED: hwasan + #include #include #include diff --git a/compiler-rt/test/lsan/lit.common.cfg.py b/compiler-rt/test/lsan/lit.common.cfg.py --- a/compiler-rt/test/lsan/lit.common.cfg.py +++ b/compiler-rt/test/lsan/lit.common.cfg.py @@ -19,8 +19,9 @@ # Setup source root. config.test_source_root = os.path.dirname(__file__) -# Choose between standalone and LSan+ASan modes. +# Choose between standalone and LSan+(ASan|HWAsan) modes. lsan_lit_test_mode = get_required_attr(config, 'lsan_lit_test_mode') +target_arch = getattr(config, 'target_arch', None) if lsan_lit_test_mode == "Standalone": config.name = "LeakSanitizer-Standalone" @@ -31,6 +32,14 @@ config.available_features.add('asan') if config.host_os == 'NetBSD': config.substitutions.insert(0, ('%run', config.netbsd_noaslr_prefix)) +elif lsan_lit_test_mode == "HWAddressSanitizer": + config.name = "LeakSanitizer-HWAddressSanitizer" + lsan_cflags = ["-fsanitize=hwaddress"] + if target_arch == "x86_64": + lsan_cflags = lsan_cflags + [ '-fsanitize-hwaddress-experimental-aliasing'] + config.available_features.add('hwasan') + if config.host_os == 'NetBSD': + config.substitutions.insert(0, ('%run', config.netbsd_noaslr_prefix)) else: lit_config.fatal("Unknown LSan test mode: %r" % lsan_lit_test_mode) config.name += config.name_suffix @@ -72,6 +81,9 @@ config.substitutions.append( ("%clangxx ", build_invocation(clang_cxxflags)) ) config.substitutions.append( ("%clang_lsan ", build_invocation(clang_lsan_cflags)) ) config.substitutions.append( ("%clangxx_lsan ", build_invocation(clang_lsan_cxxflags)) ) +config.substitutions.append( ("%clang_hwasan ", build_invocation(clang_lsan_cflags)) ) +config.substitutions.append( ("%clangxx_hwasan ", build_invocation(clang_lsan_cxxflags)) ) + # LeakSanitizer tests are currently supported on # Android{aarch64, x86, x86_64}, x86-64 Linux, PowerPC64 Linux, arm Linux, mips64 Linux, s390x Linux, loongarch64 Linux and x86_64 Darwin.