[PATCH] D31995: Enable LSan on PowerPC64.

Aleksey Shlyapnikov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 12 15:54:32 PDT 2017


alekseyshl created this revision.
Herald added a subscriber: nemanjai.

With https://reviews.llvm.org/D31555 commited, looks like basic LSan functionality
works on PPC64. Time to enable LSan there.


https://reviews.llvm.org/D31995

Files:
  lib/lsan/lsan_allocator.h
  lib/lsan/lsan_common.h
  test/lsan/lit.common.cfg


Index: test/lsan/lit.common.cfg
===================================================================
--- test/lsan/lit.common.cfg
+++ test/lsan/lit.common.cfg
@@ -52,9 +52,9 @@
 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, arm Linux and mips64 Linux only.
+# LeakSanitizer tests are currently supported on x86-64 Linux, PowerPC64 Linux, arm Linux and mips64 Linux only.
 # LSAN breaks on Thumb, so disabling from all ARM targets until we sort this out. PR32636.
-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', 'ppc64']:
   config.unsupported = True
 
 # Don't support Thumb due to broken fast unwinder
Index: lib/lsan/lsan_common.h
===================================================================
--- lib/lsan/lsan_common.h
+++ lib/lsan/lsan_common.h
@@ -32,7 +32,8 @@
 // new architecture inside sanitizer library.
 #if (SANITIZER_LINUX && !SANITIZER_ANDROID || SANITIZER_MAC) && \
     (SANITIZER_WORDSIZE == 64) &&                               \
-    (defined(__x86_64__) || defined(__mips64) || defined(__aarch64__))
+    (defined(__x86_64__) || defined(__mips64) || defined(__aarch64__) || \
+     defined(__powerpc64__))
 #define CAN_SANITIZE_LEAKS 1
 #elif defined(__i386__) && \
     (SANITIZER_LINUX && !SANITIZER_ANDROID || SANITIZER_MAC)
Index: lib/lsan/lsan_allocator.h
===================================================================
--- lib/lsan/lsan_allocator.h
+++ lib/lsan/lsan_allocator.h
@@ -59,7 +59,7 @@
 typedef SizeClassAllocator32<0, SANITIZER_MMAP_RANGE_SIZE,
     sizeof(ChunkMetadata), SizeClassMap, kRegionSizeLog, ByteMap>
     PrimaryAllocator;
-#elif defined(__x86_64__)
+#elif defined(__x86_64__) || defined(__powerpc64__)
 struct AP64 {  // Allocator64 parameters. Deliberately using a short name.
   static const uptr kSpaceBeg = 0x600000000000ULL;
   static const uptr kSpaceSize =  0x40000000000ULL; // 4T.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D31995.95046.patch
Type: text/x-patch
Size: 2166 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170412/5ddccc56/attachment-0001.bin>


More information about the llvm-commits mailing list