[compiler-rt] r243051 - [sanitizer] Implement logging to syslog.

Evgenii Stepanov eugeni.stepanov at gmail.com
Mon Jul 27 17:30:57 PDT 2015


No, I did not realize that sanitizer_linux_libcdep.cc is built on
FreeBSD. Fixed in r243359.

On Mon, Jul 27, 2015 at 5:13 PM, Alexey Samsonov <vonosmas at gmail.com> wrote:
> Have you seen this build failure?
>
> http://lab.llvm.org:8011/builders/sanitizer_x86_64-freebsd/builds/5766/steps/compile/logs/stdio
>
> On Thu, Jul 23, 2015 at 3:05 PM, Evgeniy Stepanov
> <eugeni.stepanov at gmail.com> wrote:
>>
>> Author: eugenis
>> Date: Thu Jul 23 17:05:20 2015
>> New Revision: 243051
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=243051&view=rev
>>
>> Log:
>> [sanitizer] Implement logging to syslog.
>>
>> Previously, Android target had a logic of duplicating all sanitizer
>> output to logcat. This change extends it to all posix platforms via
>> the use of syslog, controlled by log_to_syslog flag. Enabled by
>> default on Android, off everywhere else.
>>
>> A bit of cmake magic is required to allow Printf() to call a libc
>> function. I'm adding a stub implementation to support no-libc builds
>> like dfsan and safestack.
>>
>> This is a second attempt. I believe I've fixed all the issues that
>> prompted the revert: Mac build, and all kinds of non-CMake builds
>> (there are 3 of those).
>>
>> Added:
>>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_nolibc.cc
>> Modified:
>>     compiler-rt/trunk/lib/dfsan/CMakeLists.txt
>>     compiler-rt/trunk/lib/safestack/CMakeLists.txt
>>     compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt
>>     compiler-rt/trunk/lib/sanitizer_common/Makefile.mk
>>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
>>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc
>>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc
>>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux_libcdep.cc
>>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc
>>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc
>>     compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt
>>     compiler-rt/trunk/lib/tsan/go/buildgo.sh
>>     compiler-rt/trunk/lib/tsan/rtl/Makefile.old
>>
>> Modified: compiler-rt/trunk/lib/dfsan/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/dfsan/CMakeLists.txt?rev=243051&r1=243050&r2=243051&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/dfsan/CMakeLists.txt (original)
>> +++ compiler-rt/trunk/lib/dfsan/CMakeLists.txt Thu Jul 23 17:05:20 2015
>> @@ -25,6 +25,7 @@ foreach(arch ${DFSAN_SUPPORTED_ARCH})
>>    add_compiler_rt_runtime(clang_rt.dfsan-libc-${arch} ${arch} STATIC
>>      SOURCES ${DFSAN_RTL_SOURCES}
>>              $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
>> +            $<TARGET_OBJECTS:RTSanitizerCommonNoLibc.${arch}>
>>              CFLAGS ${DFSAN_NOLIBC_CFLAGS})
>>    add_sanitizer_rt_symbols(clang_rt.dfsan-${arch} dfsan.syms.extra)
>>    add_dependencies(dfsan
>>
>> Modified: compiler-rt/trunk/lib/safestack/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/safestack/CMakeLists.txt?rev=243051&r1=243050&r2=243051&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/safestack/CMakeLists.txt (original)
>> +++ compiler-rt/trunk/lib/safestack/CMakeLists.txt Thu Jul 23 17:05:20
>> 2015
>> @@ -22,6 +22,7 @@ else()
>>        SOURCES ${SAFESTACK_SOURCES}
>>                $<TARGET_OBJECTS:RTInterception.${arch}>
>>                $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
>> +              $<TARGET_OBJECTS:RTSanitizerCommonNoLibc.${arch}>
>>        CFLAGS ${SAFESTACK_CFLAGS})
>>      add_dependencies(safestack clang_rt.safestack-${arch})
>>    endforeach()
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt?rev=243051&r1=243050&r2=243051&view=diff
>>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/CMakeLists.txt Thu Jul 23
>> 17:05:20 2015
>> @@ -33,6 +33,12 @@ set(SANITIZER_SOURCES
>>    sanitizer_thread_registry.cc
>>    sanitizer_win.cc)
>>
>> +# Libc functions stubs. These sources should be linked instead of
>> +# SANITIZER_LIBCDEP_SOURCES when sanitizer_common library must not depend
>> on
>> +# libc.
>> +set(SANITIZER_NOLIBC_SOURCES
>> +  sanitizer_common_nolibc.cc)
>> +
>>  set(SANITIZER_LIBCDEP_SOURCES
>>    sanitizer_common_libcdep.cc
>>    sanitizer_coverage_libcdep.cc
>> @@ -145,6 +151,10 @@ else()
>>      ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
>>      SOURCES ${SANITIZER_SOURCES} CFLAGS ${SANITIZER_CFLAGS}
>>      DEFS ${SANITIZER_COMMON_DEFINITIONS})
>> +  add_compiler_rt_object_libraries(RTSanitizerCommonNoLibc
>> +    ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
>> +    SOURCES ${SANITIZER_NOLIBC_SOURCES} CFLAGS ${SANITIZER_CFLAGS}
>> +    DEFS ${SANITIZER_COMMON_DEFINITIONS})
>>    add_compiler_rt_object_libraries(RTSanitizerCommonLibc
>>      ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
>>      SOURCES ${SANITIZER_LIBCDEP_SOURCES} CFLAGS ${SANITIZER_CFLAGS}
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/Makefile.mk
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/Makefile.mk?rev=243051&r1=243050&r2=243051&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/Makefile.mk (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/Makefile.mk Thu Jul 23 17:05:20
>> 2015
>> @@ -11,6 +11,7 @@ ModuleName := sanitizer_common
>>  SubDirs :=
>>
>>  Sources := $(foreach file,$(wildcard $(Dir)/*.cc),$(notdir $(file)))
>> +Sources := $(filter-out $(wildcard $(Dir)/*_nolibc.cc),$(Sources))
>>  ObjNames := $(Sources:%.cc=%.o)
>>
>>  Implementation := Generic
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=243051&r1=243050&r2=243051&view=diff
>>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h Thu Jul 23
>> 17:05:20 2015
>> @@ -628,15 +628,20 @@ enum AndroidApiLevel {
>>    ANDROID_POST_LOLLIPOP = 23
>>  };
>>
>> -#if SANITIZER_ANDROID
>> +#if SANITIZER_LINUX
>>  // Initialize Android logging. Any writes before this are silently lost.
>>  void AndroidLogInit();
>> -void AndroidLogWrite(const char *buffer);
>> +void WriteToSyslog(const char *buffer);
>> +#else
>> +INLINE void AndroidLogInit() {}
>> +INLINE void WriteToSyslog(const char *buffer) {}
>> +#endif
>> +
>> +#if SANITIZER_ANDROID
>>  void GetExtraActivationFlags(char *buf, uptr size);
>>  void SanitizerInitializeUnwinder();
>>  AndroidApiLevel AndroidGetApiLevel();
>>  #else
>> -INLINE void AndroidLogInit() {}
>>  INLINE void AndroidLogWrite(const char *buffer_unused) {}
>>  INLINE void GetExtraActivationFlags(char *buf, uptr size) { *buf = '\0';
>> }
>>  INLINE void SanitizerInitializeUnwinder() {}
>>
>> Added: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_nolibc.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_nolibc.cc?rev=243051&view=auto
>>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_nolibc.cc
>> (added)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_nolibc.cc Thu
>> Jul 23 17:05:20 2015
>> @@ -0,0 +1,21 @@
>> +//===-- sanitizer_common_nolibc.cc
>> ----------------------------------------===//
>> +//
>> +//                     The LLVM Compiler Infrastructure
>> +//
>> +// This file is distributed under the University of Illinois Open Source
>> +// License. See LICENSE.TXT for details.
>> +//
>>
>> +//===----------------------------------------------------------------------===//
>> +//
>> +// This file contains stubs for libc function to facilitate optional use
>> of
>> +// libc in no-libcdep sources.
>>
>> +//===----------------------------------------------------------------------===//
>> +
>> +#include "sanitizer_platform.h"
>> +#include "sanitizer_common.h"
>> +
>> +namespace __sanitizer {
>> +
>> +void WriteToSyslog(const char *buffer) {}
>> +
>> +}
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc?rev=243051&r1=243050&r2=243051&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc Thu Jul 23
>> 17:05:20 2015
>> @@ -55,6 +55,10 @@ COMMON_FLAG(
>>      "Mention name of executable when reporting error and "
>>      "append executable name to logs (as in \"log_path.exe_name.pid\").")
>>  COMMON_FLAG(
>> +    bool, log_to_syslog, SANITIZER_ANDROID,
>> +    "Write all sanitizer output to syslog in addition to other means of "
>> +    "logging.")
>> +COMMON_FLAG(
>>      int, verbosity, 0,
>>      "Verbosity level (0 - silent, 1 - a bit of output, 2+ - more
>> output).")
>>  COMMON_FLAG(bool, detect_leaks, true, "Enable memory leak detection.")
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc?rev=243051&r1=243050&r2=243051&view=diff
>>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc Thu Jul 23
>> 17:05:20 2015
>> @@ -15,7 +15,6 @@
>>  #include "sanitizer_platform.h"
>>  #if SANITIZER_FREEBSD || SANITIZER_LINUX
>>
>> -#include "sanitizer_allocator_internal.h"
>>  #include "sanitizer_common.h"
>>  #include "sanitizer_flags.h"
>>  #include "sanitizer_internal_defs.h"
>> @@ -75,7 +74,6 @@ extern char **environ;  // provided by c
>>  #endif
>>
>>  #if SANITIZER_ANDROID
>> -#include <android/log.h>
>>  #include <sys/system_properties.h>
>>  #endif
>>
>> @@ -920,33 +918,6 @@ uptr internal_clone(int (*fn)(void *), v
>>  #endif  // defined(__x86_64__) && SANITIZER_LINUX
>>
>>  #if SANITIZER_ANDROID
>> -static atomic_uint8_t android_log_initialized;
>> -
>> -void AndroidLogInit() {
>> -  atomic_store(&android_log_initialized, 1, memory_order_release);
>> -}
>> -// This thing is not, strictly speaking, async signal safe, but it does
>> not seem
>> -// to cause any issues. Alternative is writing to log devices directly,
>> but
>> -// their location and message format might change in the future, so we'd
>> really
>> -// like to avoid that.
>> -void AndroidLogWrite(const char *buffer) {
>> -  if (!atomic_load(&android_log_initialized, memory_order_acquire))
>> -    return;
>> -
>> -  char *copy = internal_strdup(buffer);
>> -  char *p = copy;
>> -  char *q;
>> -  // __android_log_write has an implicit message length limit.
>> -  // Print one line at a time.
>> -  do {
>> -    q = internal_strchr(p, '\n');
>> -    if (q) *q = '\0';
>> -    __android_log_write(ANDROID_LOG_INFO, NULL, p);
>> -    if (q) p = q + 1;
>> -  } while (q);
>> -  InternalFree(copy);
>> -}
>> -
>>  void GetExtraActivationFlags(char *buf, uptr size) {
>>    CHECK(size > PROP_VALUE_MAX);
>>    __system_property_get("asan.options", buf);
>>
>> Modified:
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux_libcdep.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux_libcdep.cc?rev=243051&r1=243050&r2=243051&view=diff
>>
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux_libcdep.cc
>> (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux_libcdep.cc Thu
>> Jul 23 17:05:20 2015
>> @@ -15,6 +15,7 @@
>>  #include "sanitizer_platform.h"
>>  #if SANITIZER_FREEBSD || SANITIZER_LINUX
>>
>> +#include "sanitizer_allocator_internal.h"
>>  #include "sanitizer_atomic.h"
>>  #include "sanitizer_common.h"
>>  #include "sanitizer_flags.h"
>> @@ -47,6 +48,12 @@
>>  #include <android/api-level.h>
>>  #endif
>>
>> +#if SANITIZER_ANDROID && __ANDROID_API__ < 21
>> +#include <android/log.h>
>> +#else
>> +#include <syslog.h>
>> +#endif
>> +
>>  #if !SANITIZER_ANDROID
>>  #include <elf.h>
>>  #include <unistd.h>
>> @@ -161,7 +168,7 @@ bool SanitizerGetThreadName(char *name,
>>  #endif
>>  }
>>
>> -#if !SANITIZER_FREEBSD
>> +#if !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_GO
>>  static uptr g_tls_size;
>>  #endif
>>
>> @@ -198,7 +205,7 @@ void InitTlsSize() {
>>    size_t tls_align = 0;
>>    get_tls(&tls_size, &tls_align);
>>    g_tls_size = tls_size;
>> -#endif  // !SANITIZER_FREEBSD && !SANITIZER_ANDROID
>> +#endif  // !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_GO
>>  }
>>
>>  #if (defined(__x86_64__) || defined(__i386__) || defined(__mips__)) \
>> @@ -341,7 +348,7 @@ static void GetTls(uptr *addr, uptr *siz
>>
>>  #if !SANITIZER_GO
>>  uptr GetTlsSize() {
>> -#if SANITIZER_FREEBSD
>> +#if SANITIZER_FREEBSD || SANITIZER_ANDROID
>>    uptr addr, size;
>>    GetTls(&addr, &size);
>>    return size;
>> @@ -376,6 +383,7 @@ void GetThreadStackAndTls(bool main, upt
>>  #endif
>>  }
>>
>> +#if !SANITIZER_GO
>>  void AdjustStackSize(void *attr_) {
>>    pthread_attr_t *attr = (pthread_attr_t *)attr_;
>>    uptr stackaddr = 0;
>> @@ -400,6 +408,7 @@ void AdjustStackSize(void *attr_) {
>>      }
>>    }
>>  }
>> +#endif // !SANITIZER_GO
>>
>>  # if !SANITIZER_FREEBSD
>>  typedef ElfW(Phdr) Elf_Phdr;
>> @@ -510,6 +519,50 @@ uptr GetRSS() {
>>    return rss * GetPageSizeCached();
>>  }
>>
>> +// 64-bit Android targets don't provide the deprecated
>> __android_log_write.
>> +// Starting with the L release, syslog() works and is preferable to
>> +// __android_log_write.
>> +#if SANITIZER_ANDROID && __ANDROID_API__ < 21
>> +static atomic_uint8_t android_log_initialized;
>> +
>> +void AndroidLogInit() {
>> +  atomic_store(&android_log_initialized, 1, memory_order_release);
>> +}
>> +
>> +static bool IsSyslogAvailable() {
>> +  return atomic_load(&android_log_initialized, memory_order_acquire);
>> +}
>> +
>> +static void WriteOneLineToSyslog(const char *s) {
>> +  __android_log_write(ANDROID_LOG_INFO, NULL, s);
>> +}
>> +#else
>> +void AndroidLogInit() {}
>> +
>> +static bool IsSyslogAvailable() { return true; }
>> +
>> +static void WriteOneLineToSyslog(const char *s) { syslog(LOG_INFO, "%s",
>> s); }
>> +#endif
>> +
>> +void WriteToSyslog(const char *buffer) {
>> +  if (!IsSyslogAvailable())
>> +    return;
>> +  char *copy = internal_strdup(buffer);
>> +  char *p = copy;
>> +  char *q;
>> +  // syslog, at least on Android, has an implicit message length limit.
>> +  // Print one line at a time.
>> +  do {
>> +    q = internal_strchr(p, '\n');
>> +    if (q)
>> +      *q = '\0';
>> +    WriteOneLineToSyslog(p);
>> +    if (q)
>> +      p = q + 1;
>> +  } while (q);
>> +  InternalFree(copy);
>> +}
>> +
>>  }  // namespace __sanitizer
>>
>>  #endif  // SANITIZER_FREEBSD || SANITIZER_LINUX
>>
>> Modified:
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc?rev=243051&r1=243050&r2=243051&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc
>> (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc Thu
>> Jul 23 17:05:20 2015
>> @@ -30,9 +30,9 @@
>>  #include <stdlib.h>
>>  #include <sys/mman.h>
>>  #include <sys/resource.h>
>> +#include <sys/stat.h>
>>  #include <sys/time.h>
>>  #include <sys/types.h>
>> -#include <sys/stat.h>
>>  #include <unistd.h>
>>
>>  #if SANITIZER_FREEBSD
>> @@ -274,7 +274,6 @@ void *MmapNoAccess(uptr fixed_addr, uptr
>>    return (void *)internal_mmap((void *)fixed_addr, size, PROT_NONE,
>> flags, fd,
>>                                 0);
>>  }
>> -
>> -}  // namespace __sanitizer
>> +} // namespace __sanitizer
>>
>>  #endif  // SANITIZER_POSIX
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc?rev=243051&r1=243050&r2=243051&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc Thu Jul 23
>> 17:05:20 2015
>> @@ -279,7 +279,8 @@ static void SharedPrintfCode(bool append
>>  #   undef CHECK_NEEDED_LENGTH
>>    }
>>    RawWrite(buffer);
>> -  AndroidLogWrite(buffer);
>> +  if (common_flags()->log_to_syslog)
>> +    WriteToSyslog(buffer);
>>    CallPrintfAndReportCallback(buffer);
>>    // If we had mapped any memory, clean up.
>>    if (buffer != local_buffer)
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt?rev=243051&r1=243050&r2=243051&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/tests/CMakeLists.txt Thu Jul 23
>> 17:05:20 2015
>> @@ -172,7 +172,8 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS AND NOT
>>    else()
>>      if(CAN_TARGET_x86_64)
>>        add_sanitizer_common_lib("RTSanitizerCommon.test.nolibc.x86_64"
>> -
>> $<TARGET_OBJECTS:RTSanitizerCommon.x86_64>)
>> +                               $<TARGET_OBJECTS:RTSanitizerCommon.x86_64>
>> +
>> $<TARGET_OBJECTS:RTSanitizerCommonNoLibc.x86_64>)
>>      endif()
>>      foreach(arch ${SANITIZER_UNITTEST_SUPPORTED_ARCH})
>>        add_sanitizer_common_lib("RTSanitizerCommon.test.${arch}"
>>
>> Modified: compiler-rt/trunk/lib/tsan/go/buildgo.sh
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/go/buildgo.sh?rev=243051&r1=243050&r2=243051&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/tsan/go/buildgo.sh (original)
>> +++ compiler-rt/trunk/lib/tsan/go/buildgo.sh Thu Jul 23 17:05:20 2015
>> @@ -45,6 +45,7 @@ if [ "`uname -a | grep Linux`" != "" ];
>>                 ../../sanitizer_common/sanitizer_procmaps_common.cc
>>                 ../../sanitizer_common/sanitizer_procmaps_linux.cc
>>                 ../../sanitizer_common/sanitizer_linux.cc
>> +               ../../sanitizer_common/sanitizer_linux_libcdep.cc
>>
>> ../../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
>>         "
>>  elif [ "`uname -a | grep FreeBSD`" != "" ]; then
>>
>> Modified: compiler-rt/trunk/lib/tsan/rtl/Makefile.old
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/Makefile.old?rev=243051&r1=243050&r2=243051&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/tsan/rtl/Makefile.old (original)
>> +++ compiler-rt/trunk/lib/tsan/rtl/Makefile.old Thu Jul 23 17:05:20 2015
>> @@ -35,7 +35,7 @@ LIBTSAN_HEADERS=$(wildcard *.h) \
>>  LIBTSAN_SRC=$(wildcard *.cc)
>>  LIBTSAN_ASM_SRC=$(wildcard *.S)
>>  INTERCEPTION_SRC=$(wildcard $(INTERCEPTION)/*.cc)
>> -COMMON_SRC=$(wildcard $(COMMON)/*.cc)
>> +COMMON_SRC=$(filter-out $(wildcard $(COMMON)/*_nolibc.cc),$(wildcard
>> $(COMMON)/*.cc))
>>
>>  LIBTSAN_OBJ=$(patsubst %.cc,%.o,$(LIBTSAN_SRC)) \
>>             $(patsubst %.S,%.o,$(LIBTSAN_ASM_SRC)) \
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
>
>
> --
> Alexey Samsonov
> vonosmas at gmail.com



More information about the llvm-commits mailing list