diff options
-rw-r--r-- | compiler-rt/lib/asan/asan_internal.h | 22 | ||||
-rw-r--r-- | compiler-rt/lib/asan/asan_posix.cc | 12 |
2 files changed, 13 insertions, 21 deletions
diff --git a/compiler-rt/lib/asan/asan_internal.h b/compiler-rt/lib/asan/asan_internal.h index 224cc20360e..ab915a3b9ff 100644 --- a/compiler-rt/lib/asan/asan_internal.h +++ b/compiler-rt/lib/asan/asan_internal.h @@ -31,10 +31,6 @@ #endif #endif -#ifdef ANDROID -#include <sys/atomics.h> -#endif - #if defined(__has_feature) && __has_feature(address_sanitizer) # error "The AddressSanitizer run-time should not be" " instrumented by AddressSanitizer" @@ -109,6 +105,7 @@ bool AsanInterceptsSignal(int signum); void InstallSignalHandlers(); int GetPid(); uintptr_t GetThreadSelf(); +int AtomicInc(int *a); // Wrapper for TLS/TSD. void AsanTSDInit(); @@ -240,23 +237,6 @@ class LowLevelAllocator { char *allocated_current_; }; -// -------------------------- Atomic ---------------- {{{1 -static inline int AtomicInc(int *a) { -#ifdef ANDROID - return __atomic_inc(a) + 1; -#else - return __sync_add_and_fetch(a, 1); -#endif -} - -static inline int AtomicDec(int *a) { -#ifdef ANDROID - return __atomic_dec(a) - 1; -#else - return __sync_add_and_fetch(a, -1); -#endif -} - } // namespace __asan #endif // ASAN_INTERNAL_H diff --git a/compiler-rt/lib/asan/asan_posix.cc b/compiler-rt/lib/asan/asan_posix.cc index 2bc9e485309..b7e21bd84a7 100644 --- a/compiler-rt/lib/asan/asan_posix.cc +++ b/compiler-rt/lib/asan/asan_posix.cc @@ -24,6 +24,10 @@ #include <sys/resource.h> #include <unistd.h> +#ifdef ANDROID +#include <sys/atomics.h> +#endif + namespace __asan { static void MaybeInstallSigaction(int signum, @@ -77,6 +81,14 @@ uintptr_t GetThreadSelf() { return (uintptr_t)pthread_self(); } +int AtomicInc(int *a) { +#ifdef ANDROID + return __atomic_inc(a) + 1; +#else + return __sync_add_and_fetch(a, 1); +#endif +} + // ---------------------- TSD ---------------- {{{1 static pthread_key_t tsd_key; |