<div dir="ltr">Hi,<div><br></div><div>After this change SanitizerCommon-lsan-i386-Linux::sem_init_glibc.cc has been consistently failing on my build bot:</div><div><a href="http://lab.llvm.org:8011/builders/clang-cuda-build/builds/4293">http://lab.llvm.org:8011/builders/clang-cuda-build/builds/4293</a><br></div><div><br></div><div>Any ideas what's wrong? It's an Ubuntu 16.04 x64 box, tests are run on Release+asserts build of clang.</div><div><br></div><div>--Artem</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 30, 2017 at 11:15 PM, Maxim Ostapenko via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: chefmax<br>
Date: Tue Jan 31 01:15:37 2017<br>
New Revision: 293610<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=293610&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=293610&view=rev</a><br>
Log:<br>
[lsan] Renable LSan for x86 Linux<br>
<br>
The missed clang part was committed at <a href="https://reviews.llvm.org/rL293609" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>rL293609</a> thus<br>
we can reenable LSan for x86 Linux.<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D28609" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D28609</a><br>
<br>
Modified:<br>
    compiler-rt/trunk/cmake/<wbr>config-ix.cmake<br>
    compiler-rt/trunk/lib/lsan/<wbr>lsan_allocator.cc<br>
    compiler-rt/trunk/lib/lsan/<wbr>lsan_common.h<br>
    compiler-rt/trunk/lib/lsan/<wbr>lsan_interceptors.cc<br>
    compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>flags.inc<br>
    compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>linux.cc<br>
    compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>linux.h<br>
    compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>stoptheworld_linux_libcdep.cc<br>
    compiler-rt/trunk/test/asan/<wbr>lit.cfg<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/disabler.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/do_leak_check_<wbr>override.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/high_allocator_<wbr>contention.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/large_allocation_<wbr>leak.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/leak_check_at_exit.<wbr>cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/link_turned_off.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/pointer_to_self.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/print_suppressions.<wbr>cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/recoverable_leak_<wbr>check.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/register_root_<wbr>region.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/stale_stack_leak.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/suppressions_<wbr>default.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/suppressions_file.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_after_return.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_globals_<wbr>initialized.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_globals_<wbr>uninitialized.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_poisoned_asan.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_registers.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_stacks.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_stacks_threaded.<wbr>cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_dynamic.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_pthread_<wbr>specific_dynamic.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_pthread_<wbr>specific_static.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_static.cc<br>
    compiler-rt/trunk/test/lsan/<wbr>TestCases/use_unaligned.cc<br>
    compiler-rt/trunk/test/<wbr>sanitizer_common/TestCases/<wbr>Posix/sanitizer_set_death_<wbr>callback_test.cc<br>
    compiler-rt/trunk/test/<wbr>sanitizer_common/TestCases/<wbr>corelimit.cc<br>
    compiler-rt/trunk/test/<wbr>sanitizer_common/lit.common.<wbr>cfg<br>
    compiler-rt/trunk/test/<wbr>sanitizer_common/print_<wbr>address.h<br>
<br>
Modified: compiler-rt/trunk/cmake/<wbr>config-ix.cmake<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/config-ix.cmake?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>cmake/config-ix.cmake?rev=<wbr>293610&r1=293609&r2=293610&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/cmake/<wbr>config-ix.cmake (original)<br>
+++ compiler-rt/trunk/cmake/<wbr>config-ix.cmake Tue Jan 31 01:15:37 2017<br>
@@ -164,7 +164,7 @@ set(ALL_SANITIZER_COMMON_<wbr>SUPPORTED_ARCH<br>
 set(ALL_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}<br>
     ${MIPS32} ${MIPS64} ${PPC64} ${S390X})<br>
 set(ALL_DFSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64})<br>
-set(ALL_LSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64})<br>
+set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64})<br>
 set(ALL_MSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64} ${PPC64})<br>
 set(ALL_PROFILE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC64}<br>
     ${MIPS32} ${MIPS64} ${S390X})<br>
<br>
Modified: compiler-rt/trunk/lib/lsan/<wbr>lsan_allocator.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_allocator.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>lsan/lsan_allocator.cc?rev=<wbr>293610&r1=293609&r2=293610&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/lsan/<wbr>lsan_allocator.cc (original)<br>
+++ compiler-rt/trunk/lib/lsan/<wbr>lsan_allocator.cc Tue Jan 31 01:15:37 2017<br>
@@ -28,12 +28,21 @@ namespace __lsan {<br>
 struct ChunkMetadata {<br>
   u8 allocated : 8;  // Must be first.<br>
   ChunkTag tag : 2;<br>
+#if SANITIZER_WORDSIZE == 64<br>
   uptr requested_size : 54;<br>
+#else<br>
+  uptr requested_size : 32;<br>
+  uptr padding : 22;<br>
+#endif<br>
   u32 stack_trace_id;<br>
 };<br>
<br>
-#if defined(__mips64) || defined(__aarch64__)<br>
+#if defined(__mips64) || defined(__aarch64__) || defined(__i386__)<br>
+#if defined(__i386__)<br>
+static const uptr kMaxAllowedMallocSize = 1UL << 30;<br>
+#else<br>
 static const uptr kMaxAllowedMallocSize = 4UL << 30;<br>
+#endif<br>
 static const uptr kRegionSizeLog = 20;<br>
 static const uptr kNumRegions = SANITIZER_MMAP_RANGE_SIZE >> kRegionSizeLog;<br>
 typedef TwoLevelByteMap<(kNumRegions >> 12), 1 << 12> ByteMap;<br>
<br>
Modified: compiler-rt/trunk/lib/lsan/<wbr>lsan_common.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common.h?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>lsan/lsan_common.h?rev=293610&<wbr>r1=293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/lsan/<wbr>lsan_common.h (original)<br>
+++ compiler-rt/trunk/lib/lsan/<wbr>lsan_common.h Tue Jan 31 01:15:37 2017<br>
@@ -22,9 +22,19 @@<br>
 #include "sanitizer_common/sanitizer_<wbr>stoptheworld.h"<br>
 #include "sanitizer_common/sanitizer_<wbr>symbolizer.h"<br>
<br>
+// LeakSanitizer relies on some Glibc's internals (e.g. TLS machinery) thus<br>
+// supported for Linux only. Also, LSan doesn't like 32 bit architectures<br>
+// because of "small" (4 bytes) pointer size that leads to high false negative<br>
+// ratio on large leaks. But we still want to have it for some 32 bit arches<br>
+// (e.g. x86), see <a href="https://github.com/google/sanitizers/issues/403" rel="noreferrer" target="_blank">https://github.com/google/<wbr>sanitizers/issues/403</a>.<br>
+// To enable LeakSanitizer on new architecture, one need to implement<br>
+// internal_clone function as well as (probably) adjust TLS machinery for<br>
+// new architecture inside sanitizer library.<br>
 #if (SANITIZER_LINUX && !SANITIZER_ANDROID) && (SANITIZER_WORDSIZE == 64) \<br>
      && (defined(__x86_64__) ||  defined(__mips64) ||  defined(__aarch64__))<br>
 #define CAN_SANITIZE_LEAKS 1<br>
+#elif SANITIZER_LINUX && !SANITIZER_ANDROID && defined(__i386__)<br>
+#define CAN_SANITIZE_LEAKS 1<br>
 #else<br>
 #define CAN_SANITIZE_LEAKS 0<br>
 #endif<br>
<br>
Modified: compiler-rt/trunk/lib/lsan/<wbr>lsan_interceptors.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_interceptors.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>lsan/lsan_interceptors.cc?rev=<wbr>293610&r1=293609&r2=293610&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/lsan/<wbr>lsan_interceptors.cc (original)<br>
+++ compiler-rt/trunk/lib/lsan/<wbr>lsan_interceptors.cc Tue Jan 31 01:15:37 2017<br>
@@ -27,6 +27,8 @@<br>
 #include "lsan_common.h"<br>
 #include "lsan_thread.h"<br>
<br>
+#include <stddef.h><br>
+<br>
 using namespace __lsan;<br>
<br>
 extern "C" {<br>
@@ -186,13 +188,13 @@ INTERCEPTOR(void, cfree, void *p) ALIAS(<br>
   return Allocate(stack, size, 1, kAlwaysClearMemory);<br>
<br>
 INTERCEPTOR_ATTRIBUTE<br>
-void *operator new(uptr size) { OPERATOR_NEW_BODY; }<br>
+void *operator new(size_t size) { OPERATOR_NEW_BODY; }<br>
 INTERCEPTOR_ATTRIBUTE<br>
-void *operator new[](uptr size) { OPERATOR_NEW_BODY; }<br>
+void *operator new[](size_t size) { OPERATOR_NEW_BODY; }<br>
 INTERCEPTOR_ATTRIBUTE<br>
-void *operator new(uptr size, std::nothrow_t const&) { OPERATOR_NEW_BODY; }<br>
+void *operator new(size_t size, std::nothrow_t const&) { OPERATOR_NEW_BODY; }<br>
 INTERCEPTOR_ATTRIBUTE<br>
-void *operator new[](uptr size, std::nothrow_t const&) { OPERATOR_NEW_BODY; }<br>
+void *operator new[](size_t size, std::nothrow_t const&) { OPERATOR_NEW_BODY; }<br>
<br>
 #define OPERATOR_DELETE_BODY \<br>
   ENSURE_LSAN_INITED;        \<br>
<br>
Modified: compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>flags.inc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>flags.inc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>flags.inc (original)<br>
+++ compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>flags.inc Tue Jan 31 01:15:37 2017<br>
@@ -62,7 +62,8 @@ COMMON_FLAG(<br>
 COMMON_FLAG(<br>
     int, verbosity, 0,<br>
     "Verbosity level (0 - silent, 1 - a bit of output, 2+ - more output).")<br>
-COMMON_FLAG(bool, detect_leaks, true, "Enable memory leak detection.")<br>
+COMMON_FLAG(bool, detect_leaks, SANITIZER_WORDSIZE == 64,<br>
+            "Enable memory leak detection.")<br>
 COMMON_FLAG(<br>
     bool, leak_check_at_exit, true,<br>
     "Invoke leak checking in an atexit handler. Has no effect if "<br>
<br>
Modified: compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>linux.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>linux.cc?rev=293610&r1=293609&<wbr>r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>linux.cc (original)<br>
+++ compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>linux.cc Tue Jan 31 01:15:37 2017<br>
@@ -1175,6 +1175,71 @@ uptr internal_clone(int (*fn)(void *), v<br>
                "r0", "r29", "r27", "r28");<br>
   return res;<br>
 }<br>
+#elif defined(__i386__) && SANITIZER_LINUX<br>
+uptr internal_clone(int (*fn)(void *), void *child_stack, int flags, void *arg,<br>
+                    int *parent_tidptr, void *newtls, int *child_tidptr) {<br>
+  int res;<br>
+  if (!fn || !child_stack)<br>
+    return -EINVAL;<br>
+  CHECK_EQ(0, (uptr)child_stack % 16);<br>
+  child_stack = (char *)child_stack - 7 * sizeof(unsigned int);<br>
+  ((unsigned int *)child_stack)[0] = (uptr)flags;<br>
+  ((unsigned int *)child_stack)[1] = (uptr)0;<br>
+  ((unsigned int *)child_stack)[2] = (uptr)fn;<br>
+  ((unsigned int *)child_stack)[3] = (uptr)arg;<br>
+  __asm__ __volatile__(<br>
+                       /* %eax = syscall(%eax = SYSCALL(clone),<br>
+                        *                %ebx = flags,<br>
+                        *                %ecx = child_stack,<br>
+                        *                %edx = parent_tidptr,<br>
+                        *                %esi  = new_tls,<br>
+                        *                %edi = child_tidptr)<br>
+                        */<br>
+<br>
+                        /* Obtain flags */<br>
+                        "movl    (%%ecx), %%ebx\n"<br>
+                        /* Do the system call */<br>
+                        "pushl   %%ebx\n"<br>
+                        "pushl   %%esi\n"<br>
+                        "pushl   %%edi\n"<br>
+                        /* Remember the flag value.  */<br>
+                        "movl    %%ebx, (%%ecx)\n"<br>
+                        "int     $0x80\n"<br>
+                        "popl    %%edi\n"<br>
+                        "popl    %%esi\n"<br>
+                        "popl    %%ebx\n"<br>
+<br>
+                        /* if (%eax != 0)<br>
+                         *   return;<br>
+                         */<br>
+<br>
+                        "test    %%eax,%%eax\n"<br>
+                        "jnz    1f\n"<br>
+<br>
+                        /* terminate the stack frame */<br>
+                        "xorl   %%ebp,%%ebp\n"<br>
+                        /* Call FN. */<br>
+                        "call    *%%ebx\n"<br>
+#ifdef PIC<br>
+                        "call    here\n"<br>
+                        "here:\n"<br>
+                        "popl    %%ebx\n"<br>
+                        "addl    $_GLOBAL_OFFSET_TABLE_+[.-<wbr>here], %%ebx\n"<br>
+#endif<br>
+                        /* Call exit */<br>
+                        "movl    %%eax, %%ebx\n"<br>
+                        "movl    %2, %%eax\n"<br>
+                        "int     $0x80\n"<br>
+                        "1:\n"<br>
+                       : "=a" (res)<br>
+                       : "a"(SYSCALL(clone)), "i"(SYSCALL(exit)),<br>
+                         "c"(child_stack),<br>
+                         "d"(parent_tidptr),<br>
+                         "S"(newtls),<br>
+                         "D"(child_tidptr)<br>
+                       : "memory");<br>
+  return res;<br>
+}<br>
 #endif  // defined(__x86_64__) && SANITIZER_LINUX<br>
<br>
 #if SANITIZER_ANDROID<br>
<br>
Modified: compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>linux.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.h?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>linux.h?rev=293610&r1=293609&<wbr>r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>linux.h (original)<br>
+++ compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>linux.h Tue Jan 31 01:15:37 2017<br>
@@ -48,7 +48,7 @@ int internal_sigaction_syscall(int signu<br>
 #endif<br>
 void internal_sigdelset(__<wbr>sanitizer_sigset_t *set, int signum);<br>
 #if defined(__x86_64__) || defined(__mips__) || defined(__aarch64__) \<br>
-  || defined(__powerpc64__) || defined(__s390__)<br>
+  || defined(__powerpc64__) || defined(__s390__) || defined(__i386__)<br>
 uptr internal_clone(int (*fn)(void *), void *child_stack, int flags, void *arg,<br>
                     int *parent_tidptr, void *newtls, int *child_tidptr);<br>
 #endif<br>
<br>
Modified: compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>stoptheworld_linux_libcdep.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>stoptheworld_linux_libcdep.cc?<wbr>rev=293610&r1=293609&r2=<wbr>293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>stoptheworld_linux_libcdep.cc (original)<br>
+++ compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>stoptheworld_linux_libcdep.cc Tue Jan 31 01:15:37 2017<br>
@@ -16,7 +16,7 @@<br>
<br>
 #if SANITIZER_LINUX && (defined(__x86_64__) || defined(__mips__) || \<br>
                         defined(__aarch64__) || defined(__powerpc64__) || \<br>
-                        defined(__s390__))<br>
+                        defined(__s390__) || defined(__i386__))<br>
<br>
 #include "sanitizer_stoptheworld.h"<br>
<br>
@@ -528,4 +528,4 @@ uptr SuspendedThreadsList::<wbr>RegisterCount<br>
<br>
 #endif  // SANITIZER_LINUX && (defined(__x86_64__) || defined(__mips__)<br>
         // || defined(__aarch64__) || defined(__powerpc64__)<br>
-        // || defined(__s390__)<br>
+        // || defined(__s390__) || defined(__i386__)<br>
<br>
Modified: compiler-rt/trunk/test/asan/<wbr>lit.cfg<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/lit.cfg?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/asan/lit.cfg?rev=293610&<wbr>r1=293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/asan/<wbr>lit.cfg (original)<br>
+++ compiler-rt/trunk/test/asan/<wbr>lit.cfg Tue Jan 31 01:15:37 2017<br>
@@ -205,7 +205,7 @@ if config.target_arch != 'arm' and confi<br>
   config.available_features.add(<wbr>'stable-runtime')<br>
<br>
 # Turn on leak detection on 64-bit Linux.<br>
-if config.host_os == 'Linux' and config.target_arch == 'x86_64':<br>
+if config.host_os == 'Linux' and (config.target_arch == 'x86_64' or config.target_arch == 'i386'):<br>
   config.available_features.add(<wbr>'leak-detection')<br>
<br>
 # Set LD_LIBRARY_PATH to pick dynamic runtime up properly.<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/disabler.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/disabler.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/disabler.<wbr>cc?rev=293610&r1=293609&r2=<wbr>293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/disabler.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/disabler.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test for ScopedDisabler.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_registers=0:use_stacks=0:<wbr>use_globals=0:use_tls=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_<wbr>registers=0:use_stacks=0:use_<wbr>globals=0:use_tls=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t 2>&1 | FileCheck %s<br>
<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/do_leak_check_<wbr>override.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/do_leak_check_override.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/do_leak_<wbr>check_override.cc?rev=293610&<wbr>r1=293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/do_leak_check_<wbr>override.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/do_leak_check_<wbr>override.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,7 +1,7 @@<br>
 // Test for __lsan_do_leak_check(). We test it by making the leak check run<br>
 // before global destructors, which also tests compatibility with HeapChecker's<br>
 // "normal" mode (LSan runs in "strict" mode by default).<br>
-// RUN: LSAN_BASE="use_stacks=0:use_<wbr>registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:use_<wbr>stacks=0:use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t 2>&1 | FileCheck --check-prefix=CHECK-strict %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t foo 2>&1 | FileCheck --check-prefix=CHECK-normal %s<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/high_allocator_<wbr>contention.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/high_allocator_contention.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/high_<wbr>allocator_contention.cc?rev=<wbr>293610&r1=293609&r2=293610&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/high_allocator_<wbr>contention.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/high_allocator_<wbr>contention.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,6 +1,6 @@<br>
 // A benchmark that executes malloc/free pairs in parallel.<br>
 // Usage: ./a.out number_of_threads total_number_of_allocations<br>
-// RUN: LSAN_BASE="use_ld_allocations=<wbr>0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:use_<wbr>ld_allocations=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE %run %t 5 1000000 2>&1<br>
 #include <assert.h><br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/large_allocation_<wbr>leak.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/large_allocation_leak.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/large_<wbr>allocation_leak.cc?rev=293610&<wbr>r1=293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/large_allocation_<wbr>leak.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/large_allocation_<wbr>leak.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,8 +1,12 @@<br>
 // Test that LargeMmapAllocator's chunks aren't reachable via some internal data structure.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_stacks=0:use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_stacks=0:<wbr>use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t 2>&1 | FileCheck %s<br>
<br>
+// For 32 bit LSan it's pretty likely that large chunks are "reachable" from some<br>
+// internal data structures (e.g. Glibc global data).<br>
+// UNSUPPORTED: x86<br>
+<br>
 #include <stdio.h><br>
 #include <stdlib.h><br>
 #include "sanitizer_common/print_<wbr>address.h"<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/leak_check_at_exit.<wbr>cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/leak_check_at_exit.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/leak_<wbr>check_at_exit.cc?rev=293610&<wbr>r1=293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/leak_check_at_exit.<wbr>cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/leak_check_at_exit.<wbr>cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test for the leak_check_at_exit flag.<br>
-// RUN: LSAN_BASE="use_stacks=0:use_<wbr>registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:use_<wbr>stacks=0:use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t foo 2>&1 | FileCheck %s --check-prefix=CHECK-do<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-do<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/link_turned_off.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/link_turned_off.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/link_<wbr>turned_off.cc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/link_turned_off.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/link_turned_off.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test for disabling LSan at link-time.<br>
-// RUN: LSAN_BASE="use_stacks=0:use_<wbr>registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:use_<wbr>stacks=0:use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE %run %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t foo 2>&1 | FileCheck %s<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/pointer_to_self.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/pointer_to_self.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/pointer_<wbr>to_self.cc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/pointer_to_self.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/pointer_to_self.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,6 +1,6 @@<br>
 // Regression test: pointers to self should not confuse LSan into thinking the<br>
 // object is indirectly leaked. Only external pointers count.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_<wbr>registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>stacks=0" not %run %t 2>&1 | FileCheck %s<br>
<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/print_suppressions.<wbr>cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/print_suppressions.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/print_<wbr>suppressions.cc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/print_suppressions.<wbr>cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/print_suppressions.<wbr>cc Tue Jan 31 01:15:37 2017<br>
@@ -1,6 +1,6 @@<br>
 // Print matched suppressions only if print_suppressions=1 AND at least one is<br>
 // matched. Default is print_suppressions=true.<br>
-// RUN: LSAN_BASE="use_registers=0:<wbr>use_stacks=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:use_<wbr>registers=0:use_stacks=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:print_<wbr>suppressions=0 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-dont-<wbr>print<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-dont-<wbr>print<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/recoverable_leak_<wbr>check.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/recoverable_leak_check.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/<wbr>recoverable_leak_check.cc?rev=<wbr>293610&r1=293609&r2=293610&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/recoverable_leak_<wbr>check.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/recoverable_leak_<wbr>check.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test for on-demand leak checking.<br>
-// RUN: LSAN_BASE="use_stacks=0:use_<wbr>registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:use_<wbr>stacks=0:use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE %run %t foo 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE %run %t 2>&1 | FileCheck %s<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/register_root_<wbr>region.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/register_root_region.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/register_<wbr>root_region.cc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/register_root_<wbr>region.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/register_root_<wbr>region.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test for __lsan_(un)register_root_<wbr>region().<br>
-// RUN: LSAN_BASE="use_stacks=0:use_<wbr>registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:use_<wbr>stacks=0:use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE %run %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t foo 2>&1 | FileCheck %s<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/stale_stack_leak.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/stale_stack_leak.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/stale_<wbr>stack_leak.cc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/stale_stack_leak.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/stale_stack_leak.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test that out-of-scope local variables are ignored by LSan.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_registers=0:use_stacks=1"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_<wbr>registers=0:use_stacks=1"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE":<wbr>exitcode=0" %run %t 2>&1 | FileCheck --check-prefix=CHECK-sanity %s<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/suppressions_<wbr>default.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/suppressions_default.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/<wbr>suppressions_default.cc?rev=<wbr>293610&r1=293609&r2=293610&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/suppressions_<wbr>default.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/suppressions_<wbr>default.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,4 +1,4 @@<br>
-// RUN: LSAN_BASE="use_registers=0:<wbr>use_stacks=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:use_<wbr>registers=0:use_stacks=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t 2>&1 | FileCheck %s<br>
<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/suppressions_file.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/suppressions_file.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/<wbr>suppressions_file.cc?rev=<wbr>293610&r1=293609&r2=293610&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/suppressions_file.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/suppressions_file.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,4 +1,4 @@<br>
-// RUN: LSAN_BASE="use_registers=0:<wbr>use_stacks=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:use_<wbr>registers=0:use_stacks=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
<br>
 // RUN: rm -f %t.supp<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_after_return.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_after_return.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_after_<wbr>return.cc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_after_return.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_after_return.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,6 +1,6 @@<br>
 // Test that fake stack (introduced by ASan's use-after-return mode) is included<br>
 // in the root set.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_<wbr>registers=0"<br>
 // RUN: %clangxx_lsan %s -O2 -o %t<br>
 // RUN: ASAN_OPTIONS=$ASAN_OPTIONS:<wbr>detect_stack_use_after_return=<wbr>1 LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>stacks=0" not %run %t 2>&1 | FileCheck %s<br>
 // RUN: ASAN_OPTIONS=$ASAN_OPTIONS:<wbr>detect_stack_use_after_return=<wbr>1 LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>stacks=1" %run %t 2>&1<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_globals_<wbr>initialized.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_globals_initialized.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_<wbr>globals_initialized.cc?rev=<wbr>293610&r1=293609&r2=293610&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_globals_<wbr>initialized.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_globals_<wbr>initialized.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test that initialized globals are included in the root set.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_stacks=0:use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_stacks=0:<wbr>use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>globals=0" not %run %t 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>globals=1" %run %t 2>&1<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_globals_<wbr>uninitialized.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_globals_uninitialized.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_<wbr>globals_uninitialized.cc?rev=<wbr>293610&r1=293609&r2=293610&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_globals_<wbr>uninitialized.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_globals_<wbr>uninitialized.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test that uninitialized globals are included in the root set.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_stacks=0:use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_stacks=0:<wbr>use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>globals=0" not %run %t 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>globals=1" %run %t 2>&1<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_poisoned_asan.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_poisoned_asan.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_<wbr>poisoned_asan.cc?rev=293610&<wbr>r1=293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_poisoned_asan.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_poisoned_asan.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,6 +1,6 @@<br>
 // ASan-poisoned memory should be ignored if use_poisoned is false.<br>
 // REQUIRES: asan<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_stacks=0:use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_stacks=0:<wbr>use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>poisoned=0" not %run %t 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>poisoned=1" %run %t 2>&1<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_registers.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_registers.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_<wbr>registers.cc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_registers.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_registers.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test that registers of running threads are included in the root set.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_stacks=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_stacks=0"<br>
 // RUN: %clangxx_lsan -pthread %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>registers=0" not %run %t 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>registers=1" %run %t 2>&1<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_stacks.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_stacks.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_<wbr>stacks.cc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_stacks.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_stacks.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test that stack of main thread is included in the root set.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_<wbr>registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>stacks=0" not %run %t 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>stacks=1" %run %t 2>&1<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_stacks_threaded.<wbr>cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_stacks_threaded.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_<wbr>stacks_threaded.cc?rev=293610&<wbr>r1=293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_stacks_threaded.<wbr>cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_stacks_threaded.<wbr>cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test that stacks of non-main threads are included in the root set.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_<wbr>registers=0"<br>
 // RUN: %clangxx_lsan -pthread %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>stacks=0" not %run %t 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>stacks=1" %run %t 2>&1<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_dynamic.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_tls_dynamic.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_tls_<wbr>dynamic.cc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_dynamic.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_dynamic.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test that dynamically allocated TLS space is included in the root set.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_stacks=0:use_registers=0:<wbr>use_ld_allocations=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_stacks=0:<wbr>use_registers=0:use_ld_<wbr>allocations=0"<br>
 // RUN: %clangxx %s -DBUILD_DSO -fPIC -shared -o %t-so.so<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>tls=0" not %run %t 2>&1 | FileCheck %s<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_pthread_<wbr>specific_dynamic.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_tls_pthread_specific_dynamic.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_tls_<wbr>pthread_specific_dynamic.cc?<wbr>rev=293610&r1=293609&r2=<wbr>293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_pthread_<wbr>specific_dynamic.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_pthread_<wbr>specific_dynamic.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test that dynamically allocated thread-specific storage is included in the root set.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_stacks=0:use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_stacks=0:<wbr>use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>tls=0" not %run %t 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>tls=1" %run %t 2>&1<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_pthread_<wbr>specific_static.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_tls_pthread_specific_static.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_tls_<wbr>pthread_specific_static.cc?<wbr>rev=293610&r1=293609&r2=<wbr>293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_pthread_<wbr>specific_static.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_pthread_<wbr>specific_static.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test that statically allocated thread-specific storage is included in the root set.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_stacks=0:use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_stacks=0:<wbr>use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>tls=0" not %run %t 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>tls=1" %run %t 2>&1<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_static.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_tls_static.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_tls_<wbr>static.cc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_static.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_tls_static.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test that statically allocated TLS space is included in the root set.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_stacks=0:use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_stacks=0:<wbr>use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>tls=0" not %run %t 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>tls=1" %run %t 2>&1<br>
<br>
Modified: compiler-rt/trunk/test/lsan/<wbr>TestCases/use_unaligned.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lsan/TestCases/use_unaligned.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/lsan/TestCases/use_<wbr>unaligned.cc?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/lsan/<wbr>TestCases/use_unaligned.cc (original)<br>
+++ compiler-rt/trunk/test/lsan/<wbr>TestCases/use_unaligned.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // Test that unaligned pointers are detected correctly.<br>
-// RUN: LSAN_BASE="report_objects=1:<wbr>use_stacks=0:use_registers=0"<br>
+// RUN: LSAN_BASE="detect_leaks=1:<wbr>report_objects=1:use_stacks=0:<wbr>use_registers=0"<br>
 // RUN: %clangxx_lsan %s -o %t<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>unaligned=0" not %run %t 2>&1 | FileCheck %s<br>
 // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_<wbr>unaligned=1" %run %t 2>&1<br>
<br>
Modified: compiler-rt/trunk/test/<wbr>sanitizer_common/TestCases/<wbr>Posix/sanitizer_set_death_<wbr>callback_test.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/sanitizer_set_death_callback_test.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/sanitizer_common/<wbr>TestCases/Posix/sanitizer_set_<wbr>death_callback_test.cc?rev=<wbr>293610&r1=293609&r2=293610&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/<wbr>sanitizer_common/TestCases/<wbr>Posix/sanitizer_set_death_<wbr>callback_test.cc (original)<br>
+++ compiler-rt/trunk/test/<wbr>sanitizer_common/TestCases/<wbr>Posix/sanitizer_set_death_<wbr>callback_test.cc Tue Jan 31 01:15:37 2017<br>
@@ -2,6 +2,13 @@<br>
<br>
 // REQUIRES: stable-runtime<br>
<br>
+// For standalone LSan on x86 we have a problem: compiler spills the address<br>
+// of allocated at line 42 memory thus memory block allocated in Leak() function<br>
+// ends up to be classified as reachable despite the fact we zero out 'sink' at<br>
+// the last line of main function. The problem doesn't reproduce with ASan because<br>
+// quarantine prohibits memory block reuse for different allocations.<br>
+// XFAIL: lsan-x86<br>
+<br>
 #include <sanitizer/common_interface_<wbr>defs.h><br>
 #include <stdio.h><br>
<br>
<br>
Modified: compiler-rt/trunk/test/<wbr>sanitizer_common/TestCases/<wbr>corelimit.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/sanitizer_common/TestCases/corelimit.cc?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/sanitizer_common/<wbr>TestCases/corelimit.cc?rev=<wbr>293610&r1=293609&r2=293610&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/<wbr>sanitizer_common/TestCases/<wbr>corelimit.cc (original)<br>
+++ compiler-rt/trunk/test/<wbr>sanitizer_common/TestCases/<wbr>corelimit.cc Tue Jan 31 01:15:37 2017<br>
@@ -1,5 +1,5 @@<br>
 // RUN: %clangxx -O0 %s -o %t && %run %t<br>
-// XFAIL: lsan<br>
+// UNSUPPORTED: lsan<br>
<br>
 #include <assert.h><br>
 #include <sys/time.h><br>
<br>
Modified: compiler-rt/trunk/test/<wbr>sanitizer_common/lit.common.<wbr>cfg<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/sanitizer_common/lit.common.cfg?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/sanitizer_common/lit.<wbr>common.cfg?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/<wbr>sanitizer_common/lit.common.<wbr>cfg (original)<br>
+++ compiler-rt/trunk/test/<wbr>sanitizer_common/lit.common.<wbr>cfg Tue Jan 31 01:15:37 2017<br>
@@ -26,6 +26,9 @@ config.available_features.add(<wbr>config.too<br>
 if config.target_arch not in ['arm', 'armhf', 'aarch64']:<br>
   config.available_features.add(<wbr>'stable-runtime')<br>
<br>
+if config.host_os == 'Linux' and config.target_arch == 'i386' and config.tool_name == "lsan":<br>
+  config.available_features.add(<wbr>"lsan-x86")<br>
+<br>
 if config.host_os == 'Darwin':<br>
   # On Darwin, we default to `abort_on_error=1`, which would make tests run<br>
   # much slower. Let's override this and run lit tests with 'abort_on_error=0'.<br>
<br>
Modified: compiler-rt/trunk/test/<wbr>sanitizer_common/print_<wbr>address.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/sanitizer_common/print_address.h?rev=293610&r1=293609&r2=293610&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/sanitizer_common/print_<wbr>address.h?rev=293610&r1=<wbr>293609&r2=293610&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/<wbr>sanitizer_common/print_<wbr>address.h (original)<br>
+++ compiler-rt/trunk/test/<wbr>sanitizer_common/print_<wbr>address.h Tue Jan 31 01:15:37 2017<br>
@@ -11,6 +11,8 @@ void print_address(const char *str, int<br>
     // On FreeBSD, the %p conversion specifier works as 0x%x and thus does not<br>
     // match to the format used in the diagnotic message.<br>
     fprintf(stderr, "0x%012lx ", (unsigned long) p);<br>
+#elif defined(__i386__)<br>
+    fprintf(stderr, "0x%8lx ", (unsigned long) p);<br>
 #elif defined(__mips64)<br>
     fprintf(stderr, "0x%010lx ", (unsigned long) p);<br>
 #endif<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">--Artem Belevich</div></div>
</div>