[LSan] Enable LSan tests on PPC64 Linux.
authorAlex Shlyapnikov <alekseys@google.com>
Thu, 26 Oct 2017 20:59:04 +0000 (20:59 +0000)
committerAlex Shlyapnikov <alekseys@google.com>
Thu, 26 Oct 2017 20:59:04 +0000 (20:59 +0000)
Summary:
LSan is functional on PPC64 Linux now, let's enable all tests.

One test required ppc specific changes: use_registers.cc.

Reviewers: eugenis

Subscribers: mgorny, llvm-commits

Differential Revision: https://reviews.llvm.org/D39316

llvm-svn: 316698

compiler-rt/cmake/config-ix.cmake
compiler-rt/test/lsan/TestCases/use_registers.cc
compiler-rt/test/lsan/lit.common.cfg

index e4976ce..30b3081 100644 (file)
@@ -199,7 +199,7 @@ set(ALL_FUZZER_SUPPORTED_ARCH x86_64)
 if(APPLE)
   set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64})
 else()
-  set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64} ${ARM32})
+  set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64} ${ARM32} ${PPC64})
 endif()
 set(ALL_MSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64} ${PPC64})
 set(ALL_PROFILE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC64}
index 5d5ede5..edcf1ae 100644 (file)
@@ -38,6 +38,11 @@ void *registers_thread_func(void *arg) {
       :
       : "r" (p)
       );
+#elif defined(__powerpc__)
+  asm ( "mr 30, %0"
+      :
+      : "r" (p)
+      );
 #else
 #error "Test is not supported on this architecture."
 #endif
index 610b1b1..a5df951 100644 (file)
@@ -68,7 +68,7 @@ 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, PowerPC64 Linux, arm Linux, mips64 Linux, and x86_64 Darwin.
-supported_linux = config.host_os is 'Linux' and config.host_arch in ['x86_64', 'ppc64', 'mips64', 'arm', 'armhf', 'armv7l']
+supported_linux = config.host_os is 'Linux' and config.host_arch in ['x86_64', 'ppc64', 'ppc64le', 'mips64', 'arm', 'armhf', 'armv7l']
 supported_darwin = config.host_os is 'Darwin' and config.target_arch is 'x86_64'
 if not (supported_linux or supported_darwin):
   config.unsupported = True