[compiler-rt] f9a0163 - [LSAN][HWASAN] Run LSAN tests with HWASAN enabled

Kirill Stoimenov via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 27 16:07:28 PST 2023


Author: Kirill Stoimenov
Date: 2023-01-28T00:07:19Z
New Revision: f9a01630988716f1b52afe6727f34fe86c07c58a

URL: https://github.com/llvm/llvm-project/commit/f9a01630988716f1b52afe6727f34fe86c07c58a
DIFF: https://github.com/llvm/llvm-project/commit/f9a01630988716f1b52afe6727f34fe86c07c58a.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 b3099956d4b4..010710657908 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")
+    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 00a0ec3b9967..7204aa98c7de 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 6e3a9b349fc4..a590cfb8b621 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 62702b4dfe47..b80cfeef4342 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 ba03c1ff3535..dd2a58158663 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 ad7abe2d6478..ddc9d888b68a 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 e2f59ea693c4..55f33843d465 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 e75fde243bcb..da4edfdb79bb 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 20000a59e3d5..8685de4731b2 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 0722b88fd842..f3a92e2c9af7 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 b5361c0cf7a1..11376e70e575 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 b50b572a6359..fb57ef5c249a 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 840842a2c2a2..ba41aaa75eec 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 e1ee9ce11833..c3e4c01cbfb1 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 bd329ad2e356..4a78c5651494 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 e95040bee1d3..c00fb5e1ceef 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 d700d7a40cb9..7227e0b91698 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 5c8d1850a0f9..aadf25bf8292 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 37b5f03b497a..86a28396b9f4 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 70f54c0a32b4..dac13639b8db 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 efb1fd84051b..ed8b1e8ea695 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 bb1316024b5c..4f98309fc225 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 b3750625d78c..ca0326d7e1f6 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 52b80783d588..9df46ce6fdc1 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 533b3a05f26f..9cc4a981f373 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 d74bb47e5f6b..441bb12fc38e 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 b67f53ee024d..f70b5de0255f 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 b0adb9ea0eac..d32621ea7f48 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 fe58a2fa8e57..e31bb285034b 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 389ef3bf9ce5..1d8fc614048f 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 ebea5f0a15d1..69ac4b1590b8 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 9308ee965057..ffeffc459655 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 f11d7decf430..fc210f8c9ae4 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 7ddba8802236..015070f52fe9 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 48461aa9eb89..743e32d19e34 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 0abd7e83157c..2d80e216b6f4 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,15 @@ 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 + ['-fuse-ld=lld',
+        '-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 +82,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