forked from OSchip/llvm-project
sanitizer_common: allow COMMON_INTERCEPTOR_ENTER to use labels
The memcpy interceptor is the only one that uses COMMON_INTERCEPTOR_ENTER more than once in a single function. This does not allow COMMON_INTERCEPTOR_ENTER to use labels, because they are global for the whole function (not block scoped). Don't include COMMON_INTERCEPTOR_ENTER code twice. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D105774
This commit is contained in:
parent
7177c5951a
commit
b3bd885017
|
@ -134,11 +134,11 @@ extern const short *_tolower_tab_;
|
|||
|
||||
// Platform-specific options.
|
||||
#if SANITIZER_MAC
|
||||
#define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE false
|
||||
#define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE 0
|
||||
#elif SANITIZER_WINDOWS64
|
||||
#define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE false
|
||||
#define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE 0
|
||||
#else
|
||||
#define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE true
|
||||
#define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE 1
|
||||
#endif // SANITIZER_MAC
|
||||
|
||||
#ifndef COMMON_INTERCEPTOR_INITIALIZE_RANGE
|
||||
|
@ -823,11 +823,11 @@ INTERCEPTOR(void *, memcpy, void *dst, const void *src, uptr size) {
|
|||
// N.B.: If we switch this to internal_ we'll have to use internal_memmove
|
||||
// due to memcpy being an alias of memmove on OS X.
|
||||
void *ctx;
|
||||
if (PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE) {
|
||||
#if PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE
|
||||
COMMON_INTERCEPTOR_MEMCPY_IMPL(ctx, dst, src, size);
|
||||
} else {
|
||||
#else
|
||||
COMMON_INTERCEPTOR_MEMMOVE_IMPL(ctx, dst, src, size);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#define INIT_MEMCPY \
|
||||
|
|
Loading…
Reference in New Issue