Index: cmake/config-ix.cmake =================================================================== --- cmake/config-ix.cmake +++ cmake/config-ix.cmake @@ -246,7 +246,7 @@ ${SANITIZER_COMMON_SUPPORTED_ARCH}) filter_available_targets(ASAN_SUPPORTED_ARCH x86_64 i386 i686 powerpc64 powerpc64le arm mips mipsel mips64 mips64el) -filter_available_targets(DFSAN_SUPPORTED_ARCH x86_64 mips64 mips64el) +filter_available_targets(DFSAN_SUPPORTED_ARCH x86_64 mips64 mips64el aarch64) filter_available_targets(LSAN_SUPPORTED_ARCH x86_64 mips64 mips64el) filter_available_targets(MSAN_SUPPORTED_ARCH x86_64 mips64 mips64el) filter_available_targets(PROFILE_SUPPORTED_ARCH x86_64 i386 i686 arm mips mips64 Index: lib/dfsan/dfsan.h =================================================================== --- lib/dfsan/dfsan.h +++ lib/dfsan/dfsan.h @@ -46,7 +46,7 @@ inline dfsan_label *shadow_for(void *ptr) { #if defined(__x86_64__) return (dfsan_label *) ((((uptr) ptr) & ~0x700000000000) << 1); -#elif defined(__mips64) +#elif defined(__mips64) || defined(__aarch64__) return (dfsan_label *) ((((uptr) ptr) & ~0xF000000000) << 1); #endif } Index: lib/dfsan/dfsan.cc =================================================================== --- lib/dfsan/dfsan.cc +++ lib/dfsan/dfsan.cc @@ -64,7 +64,7 @@ // account for the double byte representation of shadow labels and move the // address into the shadow memory range. See the function shadow_for below. -// On Linux/MIPS64, memory is laid out as follows: +// On Linux/MIPS64 and Linux/AArch64, memory is laid out as follows: // // +--------------------+ 0x10000000000 (top of memory) // | application memory | @@ -87,7 +87,7 @@ static const uptr kUnionTableAddr = 0x200000000000; static const uptr kUnusedAddr = kUnionTableAddr + sizeof(dfsan_union_table_t); static const uptr kAppAddr = 0x700000008000; -#elif defined(__mips64) +#elif defined(__mips64) || defined(__aarch64__) static const uptr kShadowAddr = 0x10000; static const uptr kUnionTableAddr = 0x2000000000; static const uptr kUnusedAddr = kUnionTableAddr + sizeof(dfsan_union_table_t);