From 7124b5f6f98c0fabaa0d7654845569ceab78d3b4 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Tue, 11 Apr 2017 14:28:49 +0000 Subject: [PATCH] Revert r299923, it doesn't build in bootstrap builds. FAILED: lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.arm.dir/sanitizer_linux.cc.o lib/sanitizer_common/sanitizer_linux.cc:1340:24: error: invalid instruction BLX(ip) ^ lib/sanitizer_common/sanitizer_linux.cc:1313:19: note: expanded from macro 'BLX' # define BLX(R) "mov lr, pc; bx" #R "\n" ^ :6:13: note: instantiated into assembly here mov lr, pc; bxip ^~~~ llvm-svn: 299943 --- compiler-rt/cmake/config-ix.cmake | 7 +-- compiler-rt/lib/asan/tests/asan_test.cc | 8 --- compiler-rt/lib/lsan/lsan_allocator.cc | 2 +- compiler-rt/lib/lsan/lsan_allocator.h | 3 +- compiler-rt/lib/lsan/lsan_common.h | 34 ++--------- .../lib/sanitizer_common/sanitizer_linux.cc | 66 ---------------------- compiler-rt/lib/sanitizer_common/sanitizer_linux.h | 3 +- .../sanitizer_common/sanitizer_linux_libcdep.cc | 16 ++---- .../lib/sanitizer_common/sanitizer_platform.h | 6 -- .../sanitizer_stoptheworld_linux_libcdep.cc | 5 +- .../test/asan/TestCases/Linux/clang_gcc_abi.cc | 2 +- compiler-rt/test/asan/lit.cfg | 5 -- .../test/lsan/TestCases/large_allocation_leak.cc | 2 +- compiler-rt/test/lsan/TestCases/swapcontext.cc | 8 +-- compiler-rt/test/lsan/TestCases/use_registers.cc | 5 -- compiler-rt/test/lsan/TestCases/use_tls_dynamic.cc | 2 +- compiler-rt/test/lsan/lit.common.cfg | 7 +-- compiler-rt/test/sanitizer_common/print_address.h | 2 +- 18 files changed, 24 insertions(+), 159 deletions(-) diff --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake index 60cb39a..e336541 100644 --- a/compiler-rt/cmake/config-ix.cmake +++ b/compiler-rt/cmake/config-ix.cmake @@ -164,12 +164,7 @@ set(ALL_SANITIZER_COMMON_SUPPORTED_ARCH ${X86} ${X86_64} ${PPC64} set(ALL_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${MIPS32} ${MIPS64} ${PPC64} ${S390X}) set(ALL_DFSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64}) - -if(APPLE) - set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64}) -else() - set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64} ${ARM32}) -endif() +set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64}) set(ALL_MSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64} ${PPC64}) set(ALL_PROFILE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC64} ${MIPS32} ${MIPS64} ${S390X}) diff --git a/compiler-rt/lib/asan/tests/asan_test.cc b/compiler-rt/lib/asan/tests/asan_test.cc index 7ac7295..31215cf 100644 --- a/compiler-rt/lib/asan/tests/asan_test.cc +++ b/compiler-rt/lib/asan/tests/asan_test.cc @@ -685,7 +685,6 @@ void *ThreadStackReuseFunc2(void *unused) { return 0; } -#if !defined(__thumb__) TEST(AddressSanitizer, ThreadStackReuseTest) { pthread_t t; PTHREAD_CREATE(&t, 0, ThreadStackReuseFunc1, 0); @@ -693,7 +692,6 @@ TEST(AddressSanitizer, ThreadStackReuseTest) { PTHREAD_CREATE(&t, 0, ThreadStackReuseFunc2, 0); PTHREAD_JOIN(t, 0); } -#endif #if defined(__SSE2__) #include @@ -1093,11 +1091,6 @@ TEST(AddressSanitizer, ThreadedStressStackReuseTest) { } } -// pthread_exit tries to perform unwinding stuff that leads to dlopen'ing -// libgcc_s.so. dlopen in its turn calls malloc to store "libgcc_s.so" string -// that confuses LSan on Thumb because it fails to understand that this -// allocation happens in dynamic linker and should be ignored. -#if !defined(__thumb__) static void *PthreadExit(void *a) { pthread_exit(0); return 0; @@ -1110,7 +1103,6 @@ TEST(AddressSanitizer, PthreadExitTest) { PTHREAD_JOIN(t, 0); } } -#endif // FIXME: Why does clang-cl define __EXCEPTIONS? #if defined(__EXCEPTIONS) && !defined(_WIN32) diff --git a/compiler-rt/lib/lsan/lsan_allocator.cc b/compiler-rt/lib/lsan/lsan_allocator.cc index 9c8acc1..640497d 100644 --- a/compiler-rt/lib/lsan/lsan_allocator.cc +++ b/compiler-rt/lib/lsan/lsan_allocator.cc @@ -24,7 +24,7 @@ extern "C" void *memset(void *ptr, int value, uptr num); namespace __lsan { -#if defined(__i386__) || defined(__arm__) +#if defined(__i386__) static const uptr kMaxAllowedMallocSize = 1UL << 30; #elif defined(__mips64) || defined(__aarch64__) static const uptr kMaxAllowedMallocSize = 4UL << 30; diff --git a/compiler-rt/lib/lsan/lsan_allocator.h b/compiler-rt/lib/lsan/lsan_allocator.h index bd19211..9c3dce9 100644 --- a/compiler-rt/lib/lsan/lsan_allocator.h +++ b/compiler-rt/lib/lsan/lsan_allocator.h @@ -48,8 +48,7 @@ struct ChunkMetadata { u32 stack_trace_id; }; -#if defined(__mips64) || defined(__aarch64__) || defined(__i386__) || \ - defined(__arm__) +#if defined(__mips64) || defined(__aarch64__) || defined(__i386__) static const uptr kRegionSizeLog = 20; static const uptr kNumRegions = SANITIZER_MMAP_RANGE_SIZE >> kRegionSizeLog; typedef TwoLevelByteMap<(kNumRegions >> 12), 1 << 12> ByteMap; diff --git a/compiler-rt/lib/lsan/lsan_common.h b/compiler-rt/lib/lsan/lsan_common.h index 2851a66..082492d 100644 --- a/compiler-rt/lib/lsan/lsan_common.h +++ b/compiler-rt/lib/lsan/lsan_common.h @@ -37,9 +37,6 @@ #elif defined(__i386__) && \ (SANITIZER_LINUX && !SANITIZER_ANDROID || SANITIZER_MAC) #define CAN_SANITIZE_LEAKS 1 -#elif defined(__arm__) && \ - SANITIZER_LINUX && !SANITIZER_ANDROID -#define CAN_SANITIZE_LEAKS 1 #else #define CAN_SANITIZE_LEAKS 0 #endif @@ -147,36 +144,13 @@ struct ScopedInterceptorDisabler { ~ScopedInterceptorDisabler() { EnableInThisThread(); } }; -// According to Itanium C++ ABI array cookie is a one word containing -// size of allocated array. -static inline bool IsItaniumABIArrayCookie(uptr chunk_beg, uptr chunk_size, - uptr addr) { - return chunk_size == sizeof(uptr) && chunk_beg + chunk_size == addr && - *reinterpret_cast(chunk_beg) == 0; -} - -// According to ARM C++ ABI array cookie consists of two words: -// struct array_cookie { -// std::size_t element_size; // element_size != 0 -// std::size_t element_count; -// }; -static inline bool IsARMABIArrayCookie(uptr chunk_beg, uptr chunk_size, - uptr addr) { - return chunk_size == 2 * sizeof(uptr) && chunk_beg + chunk_size == addr && - *reinterpret_cast(chunk_beg + sizeof(uptr)) == 0; -} - // Special case for "new T[0]" where T is a type with DTOR. -// new T[0] will allocate a cookie (one or two words) for the array size (0) -// and store a pointer to the end of allocated chunk. The actual cookie layout -// varies between platforms according to their C++ ABI implementation. +// new T[0] will allocate one word for the array size (0) and store a pointer +// to the end of allocated chunk. inline bool IsSpecialCaseOfOperatorNew0(uptr chunk_beg, uptr chunk_size, uptr addr) { -#if defined(__arm__) - return IsARMABIArrayCookie(chunk_beg, chunk_size, addr); -#else - return IsItaniumABIArrayCookie(chunk_beg, chunk_size, addr); -#endif + return chunk_size == sizeof(uptr) && chunk_beg + chunk_size == addr && + *reinterpret_cast(chunk_beg) == 0; } // The following must be implemented in the parent tool. diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc b/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc index fef5b31..e166d1d 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc @@ -1283,72 +1283,6 @@ uptr internal_clone(int (*fn)(void *), void *child_stack, int flags, void *arg, : "memory"); return res; } -#elif defined(__arm__) && SANITIZER_LINUX -uptr internal_clone(int (*fn)(void *), void *child_stack, int flags, void *arg, - int *parent_tidptr, void *newtls, int *child_tidptr) { - unsigned int res; - if (!fn || !child_stack) - return -EINVAL; - child_stack = (char *)child_stack - 2 * sizeof(unsigned int); - ((unsigned int *)child_stack)[0] = (uptr)fn; - ((unsigned int *)child_stack)[1] = (uptr)arg; - register int r0 __asm__("r0") = flags; - register void *r1 __asm__("r1") = child_stack; - register int *r2 __asm__("r2") = parent_tidptr; - register void *r3 __asm__("r3") = newtls; - register int *r4 __asm__("r4") = child_tidptr; - register int r7 __asm__("r7") = __NR_clone; - -#if __ARM_ARCH > 4 || defined (__ARM_ARCH_4T__) -# define ARCH_HAS_BX -#endif -#if __ARM_ARCH > 4 -# define ARCH_HAS_BLX -#endif - -#ifdef ARCH_HAS_BX -# ifdef ARCH_HAS_BLX -# define BLX(R) "blx " #R "\n" -# else -# define BLX(R) "mov lr, pc; bx" #R "\n" -# endif -#else -# define BLX(R) "mov lr, pc; mov pc," #R "\n" -#endif - - __asm__ __volatile__( - /* %r0 = syscall(%r7 = SYSCALL(clone), - * %r0 = flags, - * %r1 = child_stack, - * %r2 = parent_tidptr, - * %r3 = new_tls, - * %r4 = child_tidptr) - */ - - /* Do the system call */ - "swi 0x0\n" - - /* if (%r0 != 0) - * return %r0; - */ - "cmp r0, #0\n" - "bne 1f\n" - - /* In the child, now. Call "fn(arg)". */ - "ldr r0, [sp, #4]\n" - "ldr ip, [sp], #8\n" - BLX(ip) - /* Call _exit(%r0). */ - "mov r7, %7\n" - "swi 0x0\n" - "1:\n" - "mov %0, r0\n" - : "=r"(res) - : "r"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r7), - "i"(__NR_exit) - : "memory"); - return res; -} #endif // defined(__x86_64__) && SANITIZER_LINUX #if SANITIZER_ANDROID diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux.h b/compiler-rt/lib/sanitizer_common/sanitizer_linux.h index 14047b4..bba8624 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_linux.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux.h @@ -48,8 +48,7 @@ int internal_sigaction_syscall(int signum, const void *act, void *oldact); #endif void internal_sigdelset(__sanitizer_sigset_t *set, int signum); #if defined(__x86_64__) || defined(__mips__) || defined(__aarch64__) \ - || defined(__powerpc64__) || defined(__s390__) || defined(__i386__) \ - || defined(__arm__) + || defined(__powerpc64__) || defined(__s390__) || defined(__i386__) uptr internal_clone(int (*fn)(void *), void *child_stack, int flags, void *arg, int *parent_tidptr, void *newtls, int *child_tidptr); #endif diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc index 6fde671..a5e2840 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc @@ -183,8 +183,8 @@ void InitTlsSize() { } #endif // !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_GO #if (defined(__x86_64__) || defined(__i386__) || defined(__mips__) \ - || defined(__aarch64__) || defined(__powerpc64__) || defined(__s390__) \ - || defined(__arm__)) && SANITIZER_LINUX && !SANITIZER_ANDROID + || defined(__aarch64__) || defined(__powerpc64__) || defined(__s390__)) \ + && SANITIZER_LINUX && !SANITIZER_ANDROID // sizeof(struct pthread) from glibc. static atomic_uintptr_t kThreadDescriptorSize; @@ -192,14 +192,14 @@ uptr ThreadDescriptorSize() { uptr val = atomic_load(&kThreadDescriptorSize, memory_order_relaxed); if (val) return val; -#if defined(__x86_64__) || defined(__i386__) || defined(__arm__) +#if defined(__x86_64__) || defined(__i386__) #ifdef _CS_GNU_LIBC_VERSION char buf[64]; uptr len = confstr(_CS_GNU_LIBC_VERSION, buf, sizeof(buf)); if (len < sizeof(buf) && internal_strncmp(buf, "glibc 2.", 8) == 0) { char *end; int minor = internal_simple_strtoll(buf + 8, &end, 10); - if (end != buf + 8 && (*end == '\0' || *end == '.' || *end == '-')) { + if (end != buf + 8 && (*end == '\0' || *end == '.')) { int patch = 0; if (*end == '.') // strtoll will return 0 if no valid conversion could be performed @@ -208,9 +208,6 @@ uptr ThreadDescriptorSize() { /* sizeof(struct pthread) values from various glibc versions. */ if (SANITIZER_X32) val = 1728; // Assume only one particular version for x32. - // For ARM sizeof(struct pthread) changed in Glibc 2.23. - else if (SANITIZER_ARM) - val = minor <= 22 ? 1120 : 1216; else if (minor <= 3) val = FIRST_32_SECOND_64(1104, 1696); else if (minor == 4) @@ -296,7 +293,7 @@ uptr ThreadSelf() { rdhwr %0,$29;\ .set pop" : "=r" (thread_pointer)); descr_addr = thread_pointer - kTlsTcbOffset - TlsPreTcbSize(); -# elif defined(__aarch64__) || defined(__arm__) +# elif defined(__aarch64__) descr_addr = reinterpret_cast(__builtin_thread_pointer()) - ThreadDescriptorSize(); # elif defined(__s390__) @@ -345,8 +342,7 @@ static void GetTls(uptr *addr, uptr *size) { *size = GetTlsSize(); *addr -= *size; *addr += ThreadDescriptorSize(); -# elif defined(__mips__) || defined(__aarch64__) || defined(__powerpc64__) \ - || defined(__arm__) +# elif defined(__mips__) || defined(__aarch64__) || defined(__powerpc64__) *addr = ThreadSelf(); *size = GetTlsSize(); # else diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform.h index 1a64108..d9a8e8d 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform.h @@ -162,12 +162,6 @@ # define SANITIZER_PPC64V2 0 #endif -#if defined(__arm__) -# define SANITIZER_ARM 1 -#else -# define SANITIZER_ARM 0 -#endif - // By default we allow to use SizeClassAllocator64 on 64-bit platform. // But in some cases (e.g. AArch64's 39-bit address space) SizeClassAllocator64 // does not work well and we need to fallback to SizeClassAllocator32. diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc b/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc index 6e4baee..3c0fd7b 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc @@ -16,8 +16,7 @@ #if SANITIZER_LINUX && (defined(__x86_64__) || defined(__mips__) || \ defined(__aarch64__) || defined(__powerpc64__) || \ - defined(__s390__) || defined(__i386__) || \ - defined(__arm__)) + defined(__s390__) || defined(__i386__)) #include "sanitizer_stoptheworld.h" @@ -533,4 +532,4 @@ uptr SuspendedThreadsList::RegisterCount() { #endif // SANITIZER_LINUX && (defined(__x86_64__) || defined(__mips__) // || defined(__aarch64__) || defined(__powerpc64__) - // || defined(__s390__) || defined(__i386__) || defined(__arm__) + // || defined(__s390__) || defined(__i386__) diff --git a/compiler-rt/test/asan/TestCases/Linux/clang_gcc_abi.cc b/compiler-rt/test/asan/TestCases/Linux/clang_gcc_abi.cc index 79710dc..845f412 100644 --- a/compiler-rt/test/asan/TestCases/Linux/clang_gcc_abi.cc +++ b/compiler-rt/test/asan/TestCases/Linux/clang_gcc_abi.cc @@ -3,7 +3,7 @@ // RUN: %clangxx_asan -O2 -x c %s -o %t && not %run %t 2>&1 | FileCheck %s // RUN: %clangxx_asan -O3 -x c %s -o %t && not %run %t 2>&1 | FileCheck %s -// REQUIRES: arm-target-arch, fast-unwinder-works +// REQUIRES: arm-target-arch // XFAIL: armv7l-unknown-linux-gnueabihf #include diff --git a/compiler-rt/test/asan/lit.cfg b/compiler-rt/test/asan/lit.cfg index 9093b44..37ba10d 100644 --- a/compiler-rt/test/asan/lit.cfg +++ b/compiler-rt/test/asan/lit.cfg @@ -2,7 +2,6 @@ import os import platform -import re import lit.formats @@ -212,10 +211,6 @@ config.substitutions.append( ("%xdynamiclib_namespec", '%basename_t.dynamic') ) if config.target_arch != 'arm' and config.target_arch != 'armhf' and config.target_arch != 'aarch64': config.available_features.add('stable-runtime') -# Fast unwinder doesn't work with Thumb -if not re.match('-mthumb', config.target_cflags): - config.available_features.add('fast-unwinder-works') - # Turn on leak detection on 64-bit Linux. if config.host_os == 'Linux' and (config.target_arch == 'x86_64' or config.target_arch == 'i386'): config.available_features.add('leak-detection') diff --git a/compiler-rt/test/lsan/TestCases/large_allocation_leak.cc b/compiler-rt/test/lsan/TestCases/large_allocation_leak.cc index c3da932..7254f9c 100644 --- a/compiler-rt/test/lsan/TestCases/large_allocation_leak.cc +++ b/compiler-rt/test/lsan/TestCases/large_allocation_leak.cc @@ -5,7 +5,7 @@ // For 32 bit LSan it's pretty likely that large chunks are "reachable" from some // internal data structures (e.g. Glibc global data). -// UNSUPPORTED: x86, arm +// UNSUPPORTED: x86 #include #include diff --git a/compiler-rt/test/lsan/TestCases/swapcontext.cc b/compiler-rt/test/lsan/TestCases/swapcontext.cc index f990526..f7e95ed 100644 --- a/compiler-rt/test/lsan/TestCases/swapcontext.cc +++ b/compiler-rt/test/lsan/TestCases/swapcontext.cc @@ -2,10 +2,8 @@ // memory. Make sure we don't report these leaks. // RUN: %clangxx_lsan %s -o %t -// RUN: LSAN_BASE="detect_leaks=1" -// RUN: LSAN_OPTIONS=$LSAN_BASE %run %t 2>&1 -// RUN: LSAN_OPTIONS=$LSAN_BASE not %run %t foo 2>&1 | FileCheck %s -// UNSUPPORTED: arm +// RUN: %run %t 2>&1 +// RUN: not %run %t foo 2>&1 | FileCheck %s #include #if defined(__APPLE__) @@ -25,7 +23,7 @@ void Child() { } int main(int argc, char *argv[]) { - char stack_memory[kStackSize + 1] __attribute__((aligned(16))); + char stack_memory[kStackSize + 1]; char *heap_memory = new char[kStackSize + 1]; char *child_stack = (argc > 1) ? stack_memory : heap_memory; diff --git a/compiler-rt/test/lsan/TestCases/use_registers.cc b/compiler-rt/test/lsan/TestCases/use_registers.cc index 2fe1331..7896874 100644 --- a/compiler-rt/test/lsan/TestCases/use_registers.cc +++ b/compiler-rt/test/lsan/TestCases/use_registers.cc @@ -33,11 +33,6 @@ void *registers_thread_func(void *arg) { : : "r" (p) ); -#elif defined(__arm__) - asm ( "mov r5, %0" - : - : "r" (p) - ); #else #error "Test is not supported on this architecture." #endif diff --git a/compiler-rt/test/lsan/TestCases/use_tls_dynamic.cc b/compiler-rt/test/lsan/TestCases/use_tls_dynamic.cc index 6af82d5..c20232d 100644 --- a/compiler-rt/test/lsan/TestCases/use_tls_dynamic.cc +++ b/compiler-rt/test/lsan/TestCases/use_tls_dynamic.cc @@ -5,7 +5,7 @@ // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_tls=0" not %run %t 2>&1 | FileCheck %s // RUN: LSAN_OPTIONS=$LSAN_BASE:"use_tls=1" %run %t 2>&1 // RUN: LSAN_OPTIONS="" %run %t 2>&1 -// UNSUPPORTED: i386-linux,i686-linux,arm +// UNSUPPORTED: i386-linux,i686-linux #ifndef BUILD_DSO #include diff --git a/compiler-rt/test/lsan/lit.common.cfg b/compiler-rt/test/lsan/lit.common.cfg index f47d76e..8580eec 100644 --- a/compiler-rt/test/lsan/lit.common.cfg +++ b/compiler-rt/test/lsan/lit.common.cfg @@ -3,7 +3,6 @@ # Common configuration for running leak detection tests under LSan/ASan. import os -import re import lit.util @@ -53,11 +52,7 @@ config.substitutions.append( ("%clang_lsan ", build_invocation(clang_lsan_cflags config.substitutions.append( ("%clangxx_lsan ", build_invocation(clang_lsan_cxxflags)) ) # LeakSanitizer tests are currently supported on x86-64 Linux and mips64 Linux only. -if config.host_os not in ['Linux'] or config.host_arch not in ['x86_64', 'mips64', 'arm', 'armhf']: - config.unsupported = True - -# Don't support Thumb due to broken fast unwinder -if re.match('-mthumb', config.target_cflags): +if config.host_os not in ['Linux'] or config.host_arch not in ['x86_64', 'mips64']: config.unsupported = True config.suffixes = ['.c', '.cc', '.cpp'] diff --git a/compiler-rt/test/sanitizer_common/print_address.h b/compiler-rt/test/sanitizer_common/print_address.h index 63d9a93..99261b3 100644 --- a/compiler-rt/test/sanitizer_common/print_address.h +++ b/compiler-rt/test/sanitizer_common/print_address.h @@ -11,7 +11,7 @@ void print_address(const char *str, int n, ...) { // On FreeBSD, the %p conversion specifier works as 0x%x and thus does not // match to the format used in the diagnotic message. fprintf(stderr, "0x%012lx ", (unsigned long) p); -#elif defined(__i386__) || defined(__arm__) +#elif defined(__i386__) fprintf(stderr, "0x%8lx ", (unsigned long) p); #elif defined(__mips64) fprintf(stderr, "0x%010lx ", (unsigned long) p); -- 2.7.4