For some targets uptr is mapped to unsigned int and size_t to unsigned long and sizeof(int)==sizeof(long) holds. Still, these are distinct types and type checking may fail. Therefore, replace uptr by usize/SIZE_T wherever a size_t is expected.
Part of #116957 Cherry picked from LLVM commit 9a156f6b2b0c892d8713ba907f07f027b24953d8 (removed memprof, msan, and nsan parts). libsanitizer/ChangeLog: PR sanitizer/117725 * asan/asan_interceptors.cpp: Cherry picked LLVM commit 9a156f6b2b0c892d8713ba907f07f027b24953d8. * asan/asan_interceptors.h: Ditto. * asan/asan_interceptors_memintrinsics.h: Ditto. * asan/sanitizer_common_interceptors.inc: Ditto. * sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc: Ditto. * sanitizer_common/sanitizer_platform_limits_posix.h: Ditto. * tsan/tsan_interceptors_posix.cpp: Ditto. --- Added tsan parts. libsanitizer/asan/asan_interceptors.cpp | 6 ++-- libsanitizer/asan/asan_interceptors.h | 6 ++-- .../asan/asan_interceptors_memintrinsics.h | 4 +-- .../sanitizer_common_interceptors.inc | 26 +++++++------- ...izer_common_interceptors_memintrinsics.inc | 34 +++++++++---------- .../sanitizer_platform_limits_posix.h | 2 +- libsanitizer/tsan/tsan_interceptors_posix.cpp | 4 +-- 7 files changed, 41 insertions(+), 41 deletions(-) diff --git a/libsanitizer/asan/asan_interceptors.cpp b/libsanitizer/asan/asan_interceptors.cpp index c13bcf2382b..48f7636fbcb 100644 --- a/libsanitizer/asan/asan_interceptors.cpp +++ b/libsanitizer/asan/asan_interceptors.cpp @@ -85,7 +85,7 @@ int OnExit() { // ---------------------- Wrappers ---------------- {{{1 using namespace __asan; -DECLARE_REAL_AND_INTERCEPTOR(void *, malloc, uptr) +DECLARE_REAL_AND_INTERCEPTOR(void *, malloc, usize) DECLARE_REAL_AND_INTERCEPTOR(void, free, void *) #define COMMON_INTERCEPT_FUNCTION_VER(name, ver) \ @@ -529,7 +529,7 @@ DEFINE_REAL(char*, index, const char *string, int c) return REAL(strcat)(to, from); } -INTERCEPTOR(char*, strncat, char *to, const char *from, uptr size) { +INTERCEPTOR(char*, strncat, char *to, const char *from, usize size) { void *ctx; ASAN_INTERCEPTOR_ENTER(ctx, strncat); AsanInitFromRtl(); @@ -617,7 +617,7 @@ INTERCEPTOR(char*, __strdup, const char *s) { } #endif // ASAN_INTERCEPT___STRDUP -INTERCEPTOR(char*, strncpy, char *to, const char *from, uptr size) { +INTERCEPTOR(char*, strncpy, char *to, const char *from, usize size) { void *ctx; ASAN_INTERCEPTOR_ENTER(ctx, strncpy); AsanInitFromRtl(); diff --git a/libsanitizer/asan/asan_interceptors.h b/libsanitizer/asan/asan_interceptors.h index 652379d39a3..85cde07ca7e 100644 --- a/libsanitizer/asan/asan_interceptors.h +++ b/libsanitizer/asan/asan_interceptors.h @@ -129,11 +129,11 @@ void InitializePlatformInterceptors(); # define ASAN_INTERCEPT_PTHREAD_ATFORK 0 #endif -DECLARE_REAL(int, memcmp, const void *a1, const void *a2, uptr size) +DECLARE_REAL(int, memcmp, const void *a1, const void *a2, SIZE_T size) DECLARE_REAL(char*, strchr, const char *str, int c) DECLARE_REAL(SIZE_T, strlen, const char *s) -DECLARE_REAL(char*, strncpy, char *to, const char *from, uptr size) -DECLARE_REAL(uptr, strnlen, const char *s, uptr maxlen) +DECLARE_REAL(char*, strncpy, char *to, const char *from, SIZE_T size) +DECLARE_REAL(SIZE_T, strnlen, const char *s, SIZE_T maxlen) DECLARE_REAL(char*, strstr, const char *s1, const char *s2) # if !SANITIZER_APPLE diff --git a/libsanitizer/asan/asan_interceptors_memintrinsics.h b/libsanitizer/asan/asan_interceptors_memintrinsics.h index eb44f8f2f72..14727a5d665 100644 --- a/libsanitizer/asan/asan_interceptors_memintrinsics.h +++ b/libsanitizer/asan/asan_interceptors_memintrinsics.h @@ -18,8 +18,8 @@ #include "asan_mapping.h" #include "interception/interception.h" -DECLARE_REAL(void *, memcpy, void *to, const void *from, uptr size) -DECLARE_REAL(void *, memset, void *block, int c, uptr size) +DECLARE_REAL(void *, memcpy, void *to, const void *from, SIZE_T size) +DECLARE_REAL(void *, memset, void *block, int c, SIZE_T size) namespace __asan { diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc index b8627f8557a..542176e6e5a 100644 --- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc +++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc @@ -445,7 +445,7 @@ INTERCEPTOR(SIZE_T, strnlen, const char *s, SIZE_T maxlen) { #endif #if SANITIZER_INTERCEPT_STRNDUP -INTERCEPTOR(char*, strndup, const char *s, uptr size) { +INTERCEPTOR(char*, strndup, const char *s, usize size) { void *ctx; COMMON_INTERCEPTOR_STRNDUP_IMPL(ctx, s, size); } @@ -455,7 +455,7 @@ INTERCEPTOR(char*, strndup, const char *s, uptr size) { #endif // SANITIZER_INTERCEPT_STRNDUP #if SANITIZER_INTERCEPT___STRNDUP -INTERCEPTOR(char*, __strndup, const char *s, uptr size) { +INTERCEPTOR(char*, __strndup, const char *s, usize size) { void *ctx; COMMON_INTERCEPTOR_STRNDUP_IMPL(ctx, s, size); } @@ -511,10 +511,10 @@ INTERCEPTOR(int, strcmp, const char *s1, const char *s2) { } DECLARE_WEAK_INTERCEPTOR_HOOK(__sanitizer_weak_hook_strncmp, uptr called_pc, - const char *s1, const char *s2, uptr n, + const char *s1, const char *s2, usize n, int result) -INTERCEPTOR(int, strncmp, const char *s1, const char *s2, uptr size) { +INTERCEPTOR(int, strncmp, const char *s1, const char *s2, usize size) { if (COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED) return internal_strncmp(s1, s2, size); void *ctx; @@ -576,7 +576,7 @@ INTERCEPTOR(int, strcasecmp, const char *s1, const char *s2) { } DECLARE_WEAK_INTERCEPTOR_HOOK(__sanitizer_weak_hook_strncasecmp, uptr called_pc, - const char *s1, const char *s2, uptr size, + const char *s1, const char *s2, usize size, int result) INTERCEPTOR(int, strncasecmp, const char *s1, const char *s2, SIZE_T size) { @@ -833,13 +833,13 @@ INTERCEPTOR(char *, strpbrk, const char *s1, const char *s2) { #if SANITIZER_INTERCEPT_MEMCMP DECLARE_WEAK_INTERCEPTOR_HOOK(__sanitizer_weak_hook_memcmp, uptr called_pc, - const void *s1, const void *s2, uptr n, + const void *s1, const void *s2, usize n, int result) // Common code for `memcmp` and `bcmp`. int MemcmpInterceptorCommon(void *ctx, - int (*real_fn)(const void *, const void *, uptr), - const void *a1, const void *a2, uptr size) { + int (*real_fn)(const void *, const void *, usize), + const void *a1, const void *a2, usize size) { if (common_flags()->intercept_memcmp) { if (common_flags()->strict_memcmp) { // Check the entire regions even if the first bytes of the buffers are @@ -871,7 +871,7 @@ int MemcmpInterceptorCommon(void *ctx, return result; } -INTERCEPTOR(int, memcmp, const void *a1, const void *a2, uptr size) { +INTERCEPTOR(int, memcmp, const void *a1, const void *a2, usize size) { if (COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED) return internal_memcmp(a1, a2, size); void *ctx; @@ -885,7 +885,7 @@ INTERCEPTOR(int, memcmp, const void *a1, const void *a2, uptr size) { #endif #if SANITIZER_INTERCEPT_BCMP -INTERCEPTOR(int, bcmp, const void *a1, const void *a2, uptr size) { +INTERCEPTOR(int, bcmp, const void *a1, const void *a2, usize size) { if (COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED) return internal_memcmp(a1, a2, size); void *ctx; @@ -1138,7 +1138,7 @@ INTERCEPTOR(SSIZE_T, write, int fd, void *ptr, SIZE_T count) { #endif #if SANITIZER_INTERCEPT_FWRITE -INTERCEPTOR(SIZE_T, fwrite, const void *p, uptr size, uptr nmemb, void *file) { +INTERCEPTOR(SIZE_T, fwrite, const void *p, usize size, usize nmemb, void *file) { // libc file streams can call user-supplied functions, see fopencookie. void *ctx; COMMON_INTERCEPTOR_ENTER(ctx, fwrite, p, size, nmemb, file); @@ -6479,12 +6479,12 @@ static void MlockIsUnsupported() { SanitizerToolName); } -INTERCEPTOR(int, mlock, const void *addr, uptr len) { +INTERCEPTOR(int, mlock, const void *addr, usize len) { MlockIsUnsupported(); return 0; } -INTERCEPTOR(int, munlock, const void *addr, uptr len) { +INTERCEPTOR(int, munlock, const void *addr, usize len) { MlockIsUnsupported(); return 0; } diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc index 52e489d02cd..1565a494140 100644 --- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc +++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc @@ -82,7 +82,7 @@ #endif #if SANITIZER_INTERCEPT_MEMSET -INTERCEPTOR(void *, memset, void *dst, int v, uptr size) { +INTERCEPTOR(void *, memset, void *dst, int v, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMSET_IMPL(ctx, dst, v, size); } @@ -93,7 +93,7 @@ INTERCEPTOR(void *, memset, void *dst, int v, uptr size) { #endif #if SANITIZER_INTERCEPT_MEMMOVE -INTERCEPTOR(void *, memmove, void *dst, const void *src, uptr size) { +INTERCEPTOR(void *, memmove, void *dst, const void *src, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMMOVE_IMPL(ctx, dst, src, size); } @@ -104,7 +104,7 @@ INTERCEPTOR(void *, memmove, void *dst, const void *src, uptr size) { #endif #if SANITIZER_INTERCEPT_MEMCPY -INTERCEPTOR(void *, memcpy, void *dst, const void *src, uptr size) { +INTERCEPTOR(void *, memcpy, void *dst, const void *src, usize size) { // On OS X, calling internal_memcpy here will cause memory corruptions, // because memcpy and memmove are actually aliases of the same // implementation. We need to use internal_memmove here. @@ -133,63 +133,63 @@ INTERCEPTOR(void *, memcpy, void *dst, const void *src, uptr size) { #endif #if SANITIZER_INTERCEPT_AEABI_MEM -INTERCEPTOR(void *, __aeabi_memmove, void *to, const void *from, uptr size) { +INTERCEPTOR(void *, __aeabi_memmove, void *to, const void *from, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMMOVE_IMPL(ctx, to, from, size); } -INTERCEPTOR(void *, __aeabi_memmove4, void *to, const void *from, uptr size) { +INTERCEPTOR(void *, __aeabi_memmove4, void *to, const void *from, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMMOVE_IMPL(ctx, to, from, size); } -INTERCEPTOR(void *, __aeabi_memmove8, void *to, const void *from, uptr size) { +INTERCEPTOR(void *, __aeabi_memmove8, void *to, const void *from, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMMOVE_IMPL(ctx, to, from, size); } -INTERCEPTOR(void *, __aeabi_memcpy, void *to, const void *from, uptr size) { +INTERCEPTOR(void *, __aeabi_memcpy, void *to, const void *from, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMCPY_IMPL(ctx, to, from, size); } -INTERCEPTOR(void *, __aeabi_memcpy4, void *to, const void *from, uptr size) { +INTERCEPTOR(void *, __aeabi_memcpy4, void *to, const void *from, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMCPY_IMPL(ctx, to, from, size); } -INTERCEPTOR(void *, __aeabi_memcpy8, void *to, const void *from, uptr size) { +INTERCEPTOR(void *, __aeabi_memcpy8, void *to, const void *from, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMCPY_IMPL(ctx, to, from, size); } // Note the argument order. -INTERCEPTOR(void *, __aeabi_memset, void *block, uptr size, int c) { +INTERCEPTOR(void *, __aeabi_memset, void *block, usize size, int c) { void *ctx; COMMON_INTERCEPTOR_MEMSET_IMPL(ctx, block, c, size); } -INTERCEPTOR(void *, __aeabi_memset4, void *block, uptr size, int c) { +INTERCEPTOR(void *, __aeabi_memset4, void *block, usize size, int c) { void *ctx; COMMON_INTERCEPTOR_MEMSET_IMPL(ctx, block, c, size); } -INTERCEPTOR(void *, __aeabi_memset8, void *block, uptr size, int c) { +INTERCEPTOR(void *, __aeabi_memset8, void *block, usize size, int c) { void *ctx; COMMON_INTERCEPTOR_MEMSET_IMPL(ctx, block, c, size); } -INTERCEPTOR(void *, __aeabi_memclr, void *block, uptr size) { +INTERCEPTOR(void *, __aeabi_memclr, void *block, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMSET_IMPL(ctx, block, 0, size); } -INTERCEPTOR(void *, __aeabi_memclr4, void *block, uptr size) { +INTERCEPTOR(void *, __aeabi_memclr4, void *block, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMSET_IMPL(ctx, block, 0, size); } -INTERCEPTOR(void *, __aeabi_memclr8, void *block, uptr size) { +INTERCEPTOR(void *, __aeabi_memclr8, void *block, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMSET_IMPL(ctx, block, 0, size); } @@ -212,7 +212,7 @@ INTERCEPTOR(void *, __aeabi_memclr8, void *block, uptr size) { #endif // SANITIZER_INTERCEPT_AEABI_MEM #if SANITIZER_INTERCEPT___BZERO -INTERCEPTOR(void *, __bzero, void *block, uptr size) { +INTERCEPTOR(void *, __bzero, void *block, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMSET_IMPL(ctx, block, 0, size); } @@ -222,7 +222,7 @@ INTERCEPTOR(void *, __bzero, void *block, uptr size) { #endif // SANITIZER_INTERCEPT___BZERO #if SANITIZER_INTERCEPT_BZERO -INTERCEPTOR(void *, bzero, void *block, uptr size) { +INTERCEPTOR(void *, bzero, void *block, usize size) { void *ctx; COMMON_INTERCEPTOR_MEMSET_IMPL(ctx, block, 0, size); } diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h index e8c81aa8e28..c07f7cd0b0d 100644 --- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h @@ -313,7 +313,7 @@ extern unsigned struct_statvfs_sz; struct __sanitizer_iovec { void *iov_base; - uptr iov_len; + usize iov_len; }; #if !SANITIZER_ANDROID diff --git a/libsanitizer/tsan/tsan_interceptors_posix.cpp b/libsanitizer/tsan/tsan_interceptors_posix.cpp index 423d97e94d8..f671c8167a3 100644 --- a/libsanitizer/tsan/tsan_interceptors_posix.cpp +++ b/libsanitizer/tsan/tsan_interceptors_posix.cpp @@ -97,7 +97,7 @@ extern "C" int pthread_key_create(unsigned *key, void (*destructor)(void* v)); extern "C" int pthread_setspecific(unsigned key, const void *v); DECLARE_REAL(int, pthread_mutexattr_gettype, void *, void *) DECLARE_REAL(int, fflush, __sanitizer_FILE *fp) -DECLARE_REAL_AND_INTERCEPTOR(void *, malloc, uptr size) +DECLARE_REAL_AND_INTERCEPTOR(void *, malloc, usize size) DECLARE_REAL_AND_INTERCEPTOR(void, free, void *ptr) extern "C" int pthread_equal(void *t1, void *t2); extern "C" void *pthread_self(); @@ -768,7 +768,7 @@ TSAN_INTERCEPTOR(char *, strcpy, char *dst, const char *src) { return REAL(strcpy)(dst, src); } -TSAN_INTERCEPTOR(char*, strncpy, char *dst, char *src, uptr n) { +TSAN_INTERCEPTOR(char*, strncpy, char *dst, char *src, usize n) { SCOPED_TSAN_INTERCEPTOR(strncpy, dst, src, n); uptr srclen = internal_strnlen(src, n); MemoryAccessRange(thr, pc, (uptr)dst, n, true); -- 2.47.0