[compiler-rt] 6c8d479 - [nsan] GetShadowAddrFor: Use (const) void * to decrease the number of casts
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 9 20:29:27 PDT 2024
Author: Fangrui Song
Date: 2024-08-09T20:29:21-07:00
New Revision: 6c8d479609f9fe2273590c8c60375cff761d5b02
URL: https://github.com/llvm/llvm-project/commit/6c8d479609f9fe2273590c8c60375cff761d5b02
DIFF: https://github.com/llvm/llvm-project/commit/6c8d479609f9fe2273590c8c60375cff761d5b02.diff
LOG: [nsan] GetShadowAddrFor: Use (const) void * to decrease the number of casts
Added:
Modified:
compiler-rt/lib/nsan/nsan.cpp
compiler-rt/lib/nsan/nsan.h
Removed:
################################################################################
diff --git a/compiler-rt/lib/nsan/nsan.cpp b/compiler-rt/lib/nsan/nsan.cpp
index 214c237f1e505..499e823ae2259 100644
--- a/compiler-rt/lib/nsan/nsan.cpp
+++ b/compiler-rt/lib/nsan/nsan.cpp
@@ -55,20 +55,20 @@ constexpr int kMaxVectorWidth = 8;
// When copying application memory, we also copy its shadow and shadow type.
extern "C" SANITIZER_INTERFACE_ATTRIBUTE void
-__nsan_copy_values(const u8 *daddr, const u8 *saddr, uptr size) {
- internal_memmove((void *)GetShadowTypeAddrFor(daddr),
- GetShadowTypeAddrFor(saddr), size);
- internal_memmove((void *)GetShadowAddrFor(daddr), GetShadowAddrFor(saddr),
+__nsan_copy_values(const void *daddr, const void *saddr, uptr size) {
+ internal_memmove(GetShadowTypeAddrFor(daddr), GetShadowTypeAddrFor(saddr),
+ size);
+ internal_memmove(GetShadowAddrFor(daddr), GetShadowAddrFor(saddr),
size * kShadowScale);
}
#define NSAN_COPY_VALUES_N(N) \
extern "C" SANITIZER_INTERFACE_ATTRIBUTE void __nsan_copy_##N( \
const u8 *daddr, const u8 *saddr) { \
- __builtin_memmove((void *)GetShadowTypeAddrFor(daddr), \
+ __builtin_memmove(GetShadowTypeAddrFor(daddr), \
GetShadowTypeAddrFor(saddr), N); \
- __builtin_memmove((void *)GetShadowAddrFor(daddr), \
- GetShadowAddrFor(saddr), N * kShadowScale); \
+ __builtin_memmove(GetShadowAddrFor(daddr), GetShadowAddrFor(saddr), \
+ N *kShadowScale); \
}
NSAN_COPY_VALUES_N(4)
@@ -76,14 +76,14 @@ NSAN_COPY_VALUES_N(8)
NSAN_COPY_VALUES_N(16)
extern "C" SANITIZER_INTERFACE_ATTRIBUTE void
-__nsan_set_value_unknown(const u8 *addr, uptr size) {
- internal_memset((void *)GetShadowTypeAddrFor(addr), 0, size);
+__nsan_set_value_unknown(const void *addr, uptr size) {
+ internal_memset(GetShadowTypeAddrFor(addr), 0, size);
}
#define NSAN_SET_VALUE_UNKNOWN_N(N) \
extern "C" SANITIZER_INTERFACE_ATTRIBUTE void __nsan_set_value_unknown_##N( \
const u8 *daddr) { \
- __builtin_memset((void *)GetShadowTypeAddrFor(daddr), 0, N); \
+ __builtin_memset(GetShadowTypeAddrFor(daddr), 0, N); \
}
NSAN_SET_VALUE_UNKNOWN_N(4)
@@ -306,14 +306,14 @@ __nsan_get_shadow_ptr_for_longdouble_load(const u8 *load_addr, uptr n) {
// opaque.
extern "C" SANITIZER_INTERFACE_ATTRIBUTE u8 *
__nsan_internal_get_raw_shadow_ptr(const u8 *addr) {
- return GetShadowAddrFor(const_cast<u8 *>(addr));
+ return GetShadowAddrFor(addr);
}
// Returns the raw shadow type pointer. The returned pointer should be
// considered opaque.
extern "C" SANITIZER_INTERFACE_ATTRIBUTE u8 *
__nsan_internal_get_raw_shadow_type_ptr(const u8 *addr) {
- return reinterpret_cast<u8 *>(GetShadowTypeAddrFor(const_cast<u8 *>(addr)));
+ return reinterpret_cast<u8 *>(GetShadowTypeAddrFor(addr));
}
static ValueType getValueType(u8 c) { return static_cast<ValueType>(c & 0x3); }
diff --git a/compiler-rt/lib/nsan/nsan.h b/compiler-rt/lib/nsan/nsan.h
index 6432ac9475af4..4e88ef4c00974 100644
--- a/compiler-rt/lib/nsan/nsan.h
+++ b/compiler-rt/lib/nsan/nsan.h
@@ -37,7 +37,7 @@ void __nsan_init();
// This marks the shadow type of the given block of application memory as
// unknown.
// printf-free (see comment in nsan_interceptors.cc).
-void __nsan_set_value_unknown(const u8 *addr, uptr size);
+void __nsan_set_value_unknown(const void *addr, uptr size);
// Copies annotations in the shadow memory for a block of application memory to
// a new address. This function is used together with memory-copying functions
@@ -45,7 +45,7 @@ void __nsan_set_value_unknown(const u8 *addr, uptr size);
// `__nsan_copy_values(dest, src, size)` after builtin calls to
// `memcpy(dest, src, size)`. Intercepted memcpy calls also call this function.
// printf-free (see comment in nsan_interceptors.cc).
-void __nsan_copy_values(const u8 *daddr, const u8 *saddr, uptr size);
+void __nsan_copy_values(const void *daddr, const void *saddr, uptr size);
SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE const char *
__nsan_default_options();
@@ -60,26 +60,22 @@ void InitializeInterceptors();
void InitializeMallocInterceptors();
// See notes in nsan_platform.
-// printf-free (see comment in nsan_interceptors.cc).
-inline u8 *GetShadowAddrFor(u8 *Ptr) {
- uptr AppOffset = ((uptr)Ptr) & ShadowMask();
+inline u8 *GetShadowAddrFor(void *ptr) {
+ uptr AppOffset = ((uptr)ptr) & ShadowMask();
return (u8 *)(AppOffset * kShadowScale + ShadowAddr());
}
-// printf-free (see comment in nsan_interceptors.cc).
-inline const u8 *GetShadowAddrFor(const u8 *Ptr) {
- return GetShadowAddrFor(const_cast<u8 *>(Ptr));
+inline u8 *GetShadowAddrFor(const void *ptr) {
+ return GetShadowAddrFor(const_cast<void *>(ptr));
}
-// printf-free (see comment in nsan_interceptors.cc).
-inline u8 *GetShadowTypeAddrFor(u8 *Ptr) {
- uptr AppOffset = ((uptr)Ptr) & ShadowMask();
- return (u8 *)(AppOffset + TypesAddr());
+inline u8 *GetShadowTypeAddrFor(void *ptr) {
+ uptr app_offset = ((uptr)ptr) & ShadowMask();
+ return (u8 *)(app_offset + TypesAddr());
}
-// printf-free (see comment in nsan_interceptors.cc).
-inline const u8 *GetShadowTypeAddrFor(const u8 *Ptr) {
- return GetShadowTypeAddrFor(const_cast<u8 *>(Ptr));
+inline u8 *GetShadowTypeAddrFor(const void *ptr) {
+ return GetShadowTypeAddrFor(const_cast<void *>(ptr));
}
// Information about value types and their shadow counterparts.
More information about the llvm-commits
mailing list