[compiler-rt] r249337 - [lsan] [aarch64] Add support for AArch64

Evgenii Stepanov via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 6 14:02:49 PDT 2015


This breaks the sanitizer bot:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/20637/steps/build%20compiler-rt%20android%2Faarch64/logs/stdio

On Mon, Oct 5, 2015 at 12:16 PM, Adhemerval Zanella via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: azanella
> Date: Mon Oct  5 14:16:09 2015
> New Revision: 249337
>
> URL: http://llvm.org/viewvc/llvm-project?rev=249337&view=rev
> Log:
> [lsan] [aarch64] Add support for AArch64
>
> This patch add support for leak sanitizer for aarch64.  Similar to
> MIPS it uses a SizeClassAllocator32 due VMA constraints (aarch64
> currently supports 39 and 42-bit VMA).
>
> Modified:
>     compiler-rt/trunk/cmake/config-ix.cmake
>     compiler-rt/trunk/lib/lsan/lsan_allocator.cc
>     compiler-rt/trunk/lib/lsan/lsan_common.cc
>     compiler-rt/trunk/lib/lsan/lsan_common.h
>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc
>
> Modified: compiler-rt/trunk/cmake/config-ix.cmake
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/config-ix.cmake?rev=249337&r1=249336&r2=249337&view=diff
> ==============================================================================
> --- compiler-rt/trunk/cmake/config-ix.cmake (original)
> +++ compiler-rt/trunk/cmake/config-ix.cmake Mon Oct  5 14:16:09 2015
> @@ -266,7 +266,7 @@ set(ALL_SANITIZER_COMMON_SUPPORTED_ARCH
>  set(ALL_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}
>      ${MIPS32} ${MIPS64} ${PPC64})
>  set(ALL_DFSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64})
> -set(ALL_LSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64})
> +set(ALL_LSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64})
>  set(ALL_MSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64})
>  set(ALL_PROFILE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC64}
>      ${MIPS32} ${MIPS64})
>
> Modified: compiler-rt/trunk/lib/lsan/lsan_allocator.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_allocator.cc?rev=249337&r1=249336&r2=249337&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/lsan/lsan_allocator.cc (original)
> +++ compiler-rt/trunk/lib/lsan/lsan_allocator.cc Mon Oct  5 14:16:09 2015
> @@ -32,7 +32,7 @@ struct ChunkMetadata {
>    u32 stack_trace_id;
>  };
>
> -#if defined(__mips64)
> +#if defined(__mips64) || defined(__aarch64__)
>  static const uptr kMaxAllowedMallocSize = 4UL << 30;
>  static const uptr kRegionSizeLog = 20;
>  static const uptr kNumRegions = SANITIZER_MMAP_RANGE_SIZE >> kRegionSizeLog;
>
> Modified: compiler-rt/trunk/lib/lsan/lsan_common.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common.cc?rev=249337&r1=249336&r2=249337&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/lsan/lsan_common.cc (original)
> +++ compiler-rt/trunk/lib/lsan/lsan_common.cc Mon Oct  5 14:16:09 2015
> @@ -119,6 +119,8 @@ static inline bool CanBeAHeapPointer(upt
>    return ((p >> 47) == 0);
>  #elif defined(__mips64)
>    return ((p >> 40) == 0);
> +#elif defined(__aarch64__)
> +  return ((p >> SANITIZER_AARCH64_VMA) == 0);
>  #else
>    return true;
>  #endif
>
> Modified: compiler-rt/trunk/lib/lsan/lsan_common.h
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common.h?rev=249337&r1=249336&r2=249337&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/lsan/lsan_common.h (original)
> +++ compiler-rt/trunk/lib/lsan/lsan_common.h Mon Oct  5 14:16:09 2015
> @@ -22,8 +22,9 @@
>  #include "sanitizer_common/sanitizer_stoptheworld.h"
>  #include "sanitizer_common/sanitizer_symbolizer.h"
>
> -#if SANITIZER_LINUX && (defined(__x86_64__) || defined(__mips64)) \
> -    && (SANITIZER_WORDSIZE == 64)
> +#if SANITIZER_LINUX && (SANITIZER_WORDSIZE == 64) && (defined(__x86_64__) \
> +                                                  ||  defined(__mips64) \
> +                                                  ||  defined(__aarch64__))
>  #define CAN_SANITIZE_LEAKS 1
>  #else
>  #define CAN_SANITIZE_LEAKS 0
>
> 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=249337&r1=249336&r2=249337&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc Mon Oct  5 14:16:09 2015
> @@ -497,7 +497,7 @@ void BlockingMutex::CheckLocked() {
>  // Note that getdents64 uses a different structure format. We only provide the
>  // 32-bit syscall here.
>  struct linux_dirent {
> -#if SANITIZER_X32
> +#if SANITIZER_X32 || defined(__aarch64__)
>    u64 d_ino;
>    u64 d_off;
>  #else
> @@ -505,6 +505,9 @@ struct linux_dirent {
>    unsigned long      d_off;
>  #endif
>    unsigned short     d_reclen;
> +#ifdef __aarch64__
> +  unsigned char      d_type;
> +#endif
>    char               d_name[256];
>  };
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list