Index: sanitizer_common/sanitizer_atomic_clang_other.h =================================================================== --- sanitizer_common/sanitizer_atomic_clang_other.h +++ sanitizer_common/sanitizer_atomic_clang_other.h @@ -53,7 +53,7 @@ // 64-bit load on 32-bit platform. // Gross, but simple and reliable. // Assume that it is not in read-only memory. - v = __sync_fetch_and_add((typename T::Type volatile*)&a->val_dont_use, 0); + v = __sync_fetch_and_add(const_cast(&a->val_dont_use), 0); } return v; } Index: sanitizer_common/sanitizer_platform_limits_posix.h =================================================================== --- sanitizer_common/sanitizer_platform_limits_posix.h +++ sanitizer_common/sanitizer_platform_limits_posix.h @@ -275,10 +275,17 @@ #endif #if SANITIZER_LINUX && !SANITIZER_ANDROID + +#if defined(__arm__) + const unsigned struct_xdr_ops_num_funs = 9; +#else + const unsigned struct_xdr_ops_num_funs = 10; +#endif + struct __sanitizer_XDR { int x_op; struct xdr_ops { - uptr fns[10]; + uptr fns[struct_xdr_ops_num_funs]; } *x_ops; uptr x_public; uptr x_private;