diff options
author | Maxim Ostapenko <chefmax7@gmail.com> | 2017-04-11 08:13:38 +0000 |
---|---|---|
committer | Maxim Ostapenko <chefmax7@gmail.com> | 2017-04-11 08:13:38 +0000 |
commit | 77094f117908a9b2f3b2cb4ebe5dbf6c744a851d (patch) | |
tree | dfb7edbdacf51c1c19728eeec5dce0d8e4f90840 /test/lsan | |
parent | 769089a0ba7eaefe9d6670fa2c49850e50151364 (diff) |
[lsan] Enable LSan for arm Linux
This patch enables LSan for arm Linux.
Differential Revision: https://reviews.llvm.org/D29586
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@299923 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/lsan')
-rw-r--r-- | test/lsan/TestCases/large_allocation_leak.cc | 2 | ||||
-rw-r--r-- | test/lsan/TestCases/swapcontext.cc | 8 | ||||
-rw-r--r-- | test/lsan/TestCases/use_registers.cc | 5 | ||||
-rw-r--r-- | test/lsan/TestCases/use_tls_dynamic.cc | 2 | ||||
-rw-r--r-- | test/lsan/lit.common.cfg | 7 |
5 files changed, 18 insertions, 6 deletions
diff --git a/test/lsan/TestCases/large_allocation_leak.cc b/test/lsan/TestCases/large_allocation_leak.cc index 7254f9cbe..c3da932a4 100644 --- a/test/lsan/TestCases/large_allocation_leak.cc +++ b/test/lsan/TestCases/large_allocation_leak.cc @@ -5,7 +5,7 @@ // For 32 bit LSan it's pretty likely that large chunks are "reachable" from some // internal data structures (e.g. Glibc global data). -// UNSUPPORTED: x86 +// UNSUPPORTED: x86, arm #include <stdio.h> #include <stdlib.h> diff --git a/test/lsan/TestCases/swapcontext.cc b/test/lsan/TestCases/swapcontext.cc index f7e95ed2c..f990526cf 100644 --- a/test/lsan/TestCases/swapcontext.cc +++ b/test/lsan/TestCases/swapcontext.cc @@ -2,8 +2,10 @@ // memory. Make sure we don't report these leaks. // RUN: %clangxx_lsan %s -o %t -// RUN: %run %t 2>&1 -// RUN: not %run %t foo 2>&1 | FileCheck %s +// RUN: LSAN_BASE="detect_leaks=1" +// RUN: LSAN_OPTIONS=$LSAN_BASE %run %t 2>&1 +// RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t foo 2>&1 | FileCheck %s +// UNSUPPORTED: arm #include <stdio.h> #if defined(__APPLE__) @@ -23,7 +25,7 @@ void Child() { } int main(int argc, char *argv[]) { - char stack_memory[kStackSize + 1]; + char stack_memory[kStackSize + 1] __attribute__((aligned(16))); char *heap_memory = new char[kStackSize + 1]; char *child_stack = (argc > 1) ? stack_memory : heap_memory; diff --git a/test/lsan/TestCases/use_registers.cc b/test/lsan/TestCases/use_registers.cc index 789687401..2fe13318e 100644 --- a/test/lsan/TestCases/use_registers.cc +++ b/test/lsan/TestCases/use_registers.cc @@ -33,6 +33,11 @@ void *registers_thread_func(void *arg) { : : "r" (p) ); +#elif defined(__arm__) + asm ( "mov r5, %0" + : + : "r" (p) + ); #else #error "Test is not supported on this architecture." #endif diff --git a/test/lsan/TestCases/use_tls_dynamic.cc b/test/lsan/TestCases/use_tls_dynamic.cc index c20232dc3..6af82d59e 100644 --- a/test/lsan/TestCases/use_tls_dynamic.cc +++ b/test/lsan/TestCases/use_tls_dynamic.cc @@ -5,7 +5,7 @@ // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_tls=0" not %run %t 2>&1 | FileCheck %s // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_tls=1" %run %t 2>&1 // RUN: LSAN_OPTIONS="" %run %t 2>&1 -// UNSUPPORTED: i386-linux,i686-linux +// UNSUPPORTED: i386-linux,i686-linux,arm #ifndef BUILD_DSO #include <assert.h> diff --git a/test/lsan/lit.common.cfg b/test/lsan/lit.common.cfg index 8580eec33..f47d76e6d 100644 --- a/test/lsan/lit.common.cfg +++ b/test/lsan/lit.common.cfg @@ -3,6 +3,7 @@ # Common configuration for running leak detection tests under LSan/ASan. import os +import re import lit.util @@ -52,7 +53,11 @@ config.substitutions.append( ("%clang_lsan ", build_invocation(clang_lsan_cflags config.substitutions.append( ("%clangxx_lsan ", build_invocation(clang_lsan_cxxflags)) ) # LeakSanitizer tests are currently supported on x86-64 Linux and mips64 Linux only. -if config.host_os not in ['Linux'] or config.host_arch not in ['x86_64', 'mips64']: +if config.host_os not in ['Linux'] or config.host_arch not in ['x86_64', 'mips64', 'arm', 'armhf']: + config.unsupported = True + +# Don't support Thumb due to broken fast unwinder +if re.match('-mthumb', config.target_cflags): config.unsupported = True config.suffixes = ['.c', '.cc', '.cpp'] |