diff options
| author | Yabin Cui <yabinc@google.com> | 2015-12-09 22:32:38 +0000 |
|---|---|---|
| committer | Yabin Cui <yabinc@google.com> | 2015-12-09 22:32:38 +0000 |
| commit | 4ddbe8508a0bb7b3b5bcf892034594a29292bd36 (patch) | |
| tree | e390c4a1eaaa60df6aef3031c9d0fbee73aac18d /compiler-rt | |
| parent | 02b8e94943ca216ca9df313fd076c3e7a2d29448 (diff) | |
| download | bcm5719-llvm-4ddbe8508a0bb7b3b5bcf892034594a29292bd36.tar.gz bcm5719-llvm-4ddbe8508a0bb7b3b5bcf892034594a29292bd36.zip | |
[tsan] Use REAL(malloc) instead of __libc_malloc for Android.
Summary:
Android doesn't have __libc_malloc and related allocation
functions. As its dynamic linker doesn't use malloc, so
we can use REAL(malloc) to replace __libc_malloc safely.
Reviewers: kcc, eugenis, dvyukov
Subscribers: llvm-commits, tberghammer, danalbert, srhines
Differential Revision: http://reviews.llvm.org/D15297
llvm-svn: 255167
Diffstat (limited to 'compiler-rt')
| -rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_interceptors.cc | 11 | ||||
| -rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_new_delete.cc | 2 |
2 files changed, 11 insertions, 2 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc b/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc index f2c28de1eda..91dc8c65fa3 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc +++ b/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc @@ -48,6 +48,13 @@ using namespace __tsan; // NOLINT #define __libc_realloc REAL(realloc) #define __libc_calloc REAL(calloc) #define __libc_free REAL(free) +#elif SANITIZER_ANDROID +#define __errno_location __errno +#define __libc_malloc REAL(malloc) +#define __libc_realloc REAL(realloc) +#define __libc_calloc REAL(calloc) +#define __libc_free REAL(free) +#define mallopt(a, b) #endif #if SANITIZER_LINUX || SANITIZER_FREEBSD @@ -105,10 +112,12 @@ extern "C" void *pthread_self(); extern "C" void _exit(int status); extern "C" int *__errno_location(); extern "C" int fileno_unlocked(void *stream); +#if !SANITIZER_ANDROID extern "C" void *__libc_calloc(uptr size, uptr n); extern "C" void *__libc_realloc(void *ptr, uptr size); +#endif extern "C" int dirfd(void *dirp); -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_ANDROID extern "C" int mallopt(int param, int value); #endif extern __sanitizer_FILE *stdout, *stderr; diff --git a/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc b/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc index ecbdb62b013..ebb422cf202 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc +++ b/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc @@ -23,7 +23,7 @@ struct nothrow_t {}; DECLARE_REAL(void *, malloc, uptr size) DECLARE_REAL(void, free, void *ptr) -#if SANITIZER_MAC +#if SANITIZER_MAC || SANITIZER_ANDROID #define __libc_malloc REAL(malloc) #define __libc_free REAL(free) #endif |

