mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 05:00:23 +08:00
Replace uptr by usize/SIZE_T in interfaces
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. * sanitizer_common/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.
This commit is contained in:
parent
ed1493e12e
commit
0bb38b2786
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -313,7 +313,7 @@ extern unsigned struct_statvfs_sz;
|
||||
|
||||
struct __sanitizer_iovec {
|
||||
void *iov_base;
|
||||
uptr iov_len;
|
||||
usize iov_len;
|
||||
};
|
||||
|
||||
#if !SANITIZER_ANDROID
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user