[compiler-rt] 3301f6e - [LSAN][HWASAN] Run LSAN tests with HWASAN enabled
Kirill Stoimenov via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 30 14:32:59 PST 2023
Author: Kirill Stoimenov
Date: 2023-01-30T22:32:31Z
New Revision: 3301f6e1355b295386ceda654424eddbc30d7784
URL: https://github.com/llvm/llvm-project/commit/3301f6e1355b295386ceda654424eddbc30d7784
DIFF: https://github.com/llvm/llvm-project/commit/3301f6e1355b295386ceda654424eddbc30d7784.diff
LOG: [LSAN][HWASAN] Run LSAN tests with HWASAN enabled
A lot of tests are disabled by using UNSUPPORTED. The plan is to remove UNSUPPORTED for tests that are fixed.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D142676
Added:
Modified:
compiler-rt/test/lsan/CMakeLists.txt
compiler-rt/test/lsan/TestCases/Linux/cleanup_in_tsd_destructor.c
compiler-rt/test/lsan/TestCases/Linux/disabler_in_tsd_destructor.c
compiler-rt/test/lsan/TestCases/Linux/fork_threaded.cpp
compiler-rt/test/lsan/TestCases/Linux/guard-page.c
compiler-rt/test/lsan/TestCases/Linux/libdl_deadlock.cpp
compiler-rt/test/lsan/TestCases/Linux/log-path_test.cpp
compiler-rt/test/lsan/TestCases/Linux/use_tls_pthread_specific_dynamic.cpp
compiler-rt/test/lsan/TestCases/Linux/use_tls_pthread_specific_static.cpp
compiler-rt/test/lsan/TestCases/Linux/use_tls_static.cpp
compiler-rt/test/lsan/TestCases/default_options.cpp
compiler-rt/test/lsan/TestCases/disabler.c
compiler-rt/test/lsan/TestCases/do_leak_check_override.cpp
compiler-rt/test/lsan/TestCases/high_allocator_contention.cpp
compiler-rt/test/lsan/TestCases/ignore_object.c
compiler-rt/test/lsan/TestCases/leak_check_at_exit.cpp
compiler-rt/test/lsan/TestCases/link_turned_off.cpp
compiler-rt/test/lsan/TestCases/malloc_zero.c
compiler-rt/test/lsan/TestCases/many_tls_keys_pthread.cpp
compiler-rt/test/lsan/TestCases/many_tls_keys_thread.cpp
compiler-rt/test/lsan/TestCases/pointer_to_self.cpp
compiler-rt/test/lsan/TestCases/realloc_too_big.c
compiler-rt/test/lsan/TestCases/recoverable_leak_check.cpp
compiler-rt/test/lsan/TestCases/register_root_region.cpp
compiler-rt/test/lsan/TestCases/suppressions_default.cpp
compiler-rt/test/lsan/TestCases/suppressions_file.cpp
compiler-rt/test/lsan/TestCases/swapcontext.cpp
compiler-rt/test/lsan/TestCases/use_after_return.cpp
compiler-rt/test/lsan/TestCases/use_globals_initialized.cpp
compiler-rt/test/lsan/TestCases/use_globals_uninitialized.cpp
compiler-rt/test/lsan/TestCases/use_registers.cpp
compiler-rt/test/lsan/TestCases/use_registers_extra.cpp
compiler-rt/test/lsan/TestCases/use_stacks.cpp
compiler-rt/test/lsan/TestCases/use_stacks_threaded.cpp
compiler-rt/test/lsan/TestCases/use_unaligned.cpp
compiler-rt/test/lsan/lit.common.cfg.py
Removed:
################################################################################
diff --git a/compiler-rt/test/lsan/CMakeLists.txt b/compiler-rt/test/lsan/CMakeLists.txt
index b3099956d4b49..3a0296b62f8af 100644
--- 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 @@ foreach(arch ${LSAN_TEST_ARCH})
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 @@ foreach(arch ${LSAN_TEST_ARCH})
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
index 00a0ec3b9967f..7204aa98c7deb 100644
--- 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
index 6e3a9b349fc4e..a590cfb8b621a 100644
--- 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 <assert.h>
#include <pthread.h>
#include <stdio.h>
diff --git a/compiler-rt/test/lsan/TestCases/Linux/fork_threaded.cpp b/compiler-rt/test/lsan/TestCases/Linux/fork_threaded.cpp
index 62702b4dfe47b..b80cfeef4342f 100644
--- 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 <assert.h>
#include <pthread.h>
#include <stdio.h>
diff --git a/compiler-rt/test/lsan/TestCases/Linux/guard-page.c b/compiler-rt/test/lsan/TestCases/Linux/guard-page.c
index ba03c1ff3535b..dd2a581586637 100644
--- 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
index ad7abe2d6478a..ddc9d888b68ad 100644
--- 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 <link.h>
#include <mutex>
#include <stdlib.h>
diff --git a/compiler-rt/test/lsan/TestCases/Linux/log-path_test.cpp b/compiler-rt/test/lsan/TestCases/Linux/log-path_test.cpp
index e2f59ea693c47..55f33843d465a 100644
--- 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
index e75fde243bcb4..da4edfdb79bb0 100644
--- 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
index 20000a59e3d5a..8685de4731b2b 100644
--- 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 <assert.h>
#include <pthread.h>
#include <stdio.h>
diff --git a/compiler-rt/test/lsan/TestCases/Linux/use_tls_static.cpp b/compiler-rt/test/lsan/TestCases/Linux/use_tls_static.cpp
index 0722b88fd8422..f3a92e2c9af70 100644
--- 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 <stdio.h>
#include <stdlib.h>
#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
index b5361c0cf7a1a..11376e70e575e 100644
--- 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
index b50b572a63598..fb57ef5c249a8 100644
--- 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
index 840842a2c2a27..ba41aaa75eecf 100644
--- 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
index e1ee9ce11833a..c3e4c01cbfb14 100644
--- 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 <assert.h>
#include <pthread.h>
#include <stdlib.h>
diff --git a/compiler-rt/test/lsan/TestCases/ignore_object.c b/compiler-rt/test/lsan/TestCases/ignore_object.c
index bd329ad2e3566..4a78c56514944 100644
--- 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
index e95040bee1d3d..c00fb5e1ceefc 100644
--- 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 <stdio.h>
#include <stdlib.h>
#include <sanitizer/lsan_interface.h>
diff --git a/compiler-rt/test/lsan/TestCases/link_turned_off.cpp b/compiler-rt/test/lsan/TestCases/link_turned_off.cpp
index d700d7a40cb93..7227e0b916988 100644
--- 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
index 5c8d1850a0f9a..aadf25bf82924 100644
--- 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
index 37b5f03b497a9..86a28396b9f41 100644
--- 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
index 70f54c0a32b42..dac13639b8db6 100644
--- 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
index efb1fd84051b2..ed8b1e8ea695f 100644
--- 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 <stdio.h>
#include <stdlib.h>
#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
index bb1316024b5cb..4f98309fc225e 100644
--- 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
index b3750625d78cc..ca0326d7e1f6b 100644
--- 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
index 52b80783d5889..9df46ce6fdc18 100644
--- 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 <assert.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/compiler-rt/test/lsan/TestCases/suppressions_default.cpp b/compiler-rt/test/lsan/TestCases/suppressions_default.cpp
index 533b3a05f26f1..9cc4a981f373c 100644
--- 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 <stdio.h>
#include <stdlib.h>
diff --git a/compiler-rt/test/lsan/TestCases/suppressions_file.cpp b/compiler-rt/test/lsan/TestCases/suppressions_file.cpp
index d74bb47e5f6bb..441bb12fc38e1 100644
--- 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
index b67f53ee024d0..f70b5de0255fb 100644
--- 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
index b0adb9ea0eac4..d32621ea7f482 100644
--- 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
index fe58a2fa8e577..e31bb285034b4 100644
--- 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 <stdio.h>
#include <stdlib.h>
#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
index 389ef3bf9ce5a..1d8fc614048ff 100644
--- 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 <stdio.h>
#include <stdlib.h>
#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
index ebea5f0a15d1b..69ac4b1590b88 100644
--- 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 <assert.h>
#include <pthread.h>
diff --git a/compiler-rt/test/lsan/TestCases/use_registers_extra.cpp b/compiler-rt/test/lsan/TestCases/use_registers_extra.cpp
index 9308ee9650579..ffeffc459655d 100644
--- 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
index f11d7decf430e..fc210f8c9ae4c 100644
--- 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 <stdio.h>
#include <stdlib.h>
#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
index 7ddba8802236b..015070f52fe9b 100644
--- 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 <assert.h>
#include <pthread.h>
#include <sched.h>
diff --git a/compiler-rt/test/lsan/TestCases/use_unaligned.cpp b/compiler-rt/test/lsan/TestCases/use_unaligned.cpp
index 48461aa9eb89a..743e32d19e34a 100644
--- 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 <stdio.h>
#include <stdlib.h>
#include <string.h>
diff --git a/compiler-rt/test/lsan/lit.common.cfg.py b/compiler-rt/test/lsan/lit.common.cfg.py
index 0abd7e83157ce..92f6f6be5bbd7 100644
--- a/compiler-rt/test/lsan/lit.common.cfg.py
+++ b/compiler-rt/test/lsan/lit.common.cfg.py
@@ -19,8 +19,9 @@ def get_required_attr(config, attr_name):
# 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 @@ def get_required_attr(config, attr_name):
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 @@ def build_invocation(compile_flags):
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.
More information about the llvm-commits
mailing list