mirror of
https://github.com/darlinghq/darling-compiler-rt.git
synced 2024-11-27 05:40:31 +00:00
[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). It also fixes the android build issue. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@250898 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b909c018d0
commit
0729a38100
@ -267,7 +267,7 @@ set(ALL_SANITIZER_COMMON_SUPPORTED_ARCH ${X86} ${X86_64} ${PPC64}
|
||||
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})
|
||||
|
@ -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;
|
||||
|
@ -119,6 +119,8 @@ static inline bool CanBeAHeapPointer(uptr p) {
|
||||
return ((p >> 47) == 0);
|
||||
#elif defined(__mips64)
|
||||
return ((p >> 40) == 0);
|
||||
#elif defined(__aarch64__)
|
||||
return ((p >> SANITIZER_AARCH64_VMA) == 0);
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
|
@ -22,8 +22,8 @@
|
||||
#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_ANDROID) && (SANITIZER_WORDSIZE == 64) \
|
||||
&& (defined(__x86_64__) || defined(__mips64) || defined(__aarch64__))
|
||||
#define CAN_SANITIZE_LEAKS 1
|
||||
#else
|
||||
#define CAN_SANITIZE_LEAKS 0
|
||||
|
@ -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];
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user