summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulian Lettner <jlettner@apple.com>2019-04-26 17:29:22 +0000
committerJulian Lettner <jlettner@apple.com>2019-04-26 17:29:22 +0000
commitaebd3014a5957029ada761109e6d5e1a90d67e18 (patch)
treecafad8754471d98f33c6402dda6bc9af0e507855
parentc29db2d83ed57d74d1f9987324e3d6ef112a8ed3 (diff)
downloadbcm5719-llvm-aebd3014a5957029ada761109e6d5e1a90d67e18.tar.gz
bcm5719-llvm-aebd3014a5957029ada761109e6d5e1a90d67e18.zip
[NFC][Sanitizer] Change "return type" of INTERCEPT_FUNCTION to void
This temporary change tells us about all the places where the return value of the INTERCEPT_FUNCTION macro is actually used. In the next patch I will cleanup the macro and remove GetRealFuncAddress. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D61145 llvm-svn: 359325
-rw-r--r--compiler-rt/lib/asan/asan_interceptors.h8
-rw-r--r--compiler-rt/lib/interception/interception_linux.h10
-rw-r--r--compiler-rt/lib/msan/msan_interceptors.cc8
3 files changed, 18 insertions, 8 deletions
diff --git a/compiler-rt/lib/asan/asan_interceptors.h b/compiler-rt/lib/asan/asan_interceptors.h
index 903ab5991e9..d4a68e26717 100644
--- a/compiler-rt/lib/asan/asan_interceptors.h
+++ b/compiler-rt/lib/asan/asan_interceptors.h
@@ -122,12 +122,16 @@ DECLARE_REAL(char*, strstr, const char *s1, const char *s2)
#if !SANITIZER_MAC
#define ASAN_INTERCEPT_FUNC(name) \
do { \
- if ((!INTERCEPT_FUNCTION(name) || !REAL(name))) \
+ INTERCEPT_FUNCTION(name); \
+ bool same = (& (name) == & WRAP(name)); \
+ if ((!same || !REAL(name))) \
VReport(1, "AddressSanitizer: failed to intercept '" #name "'\n"); \
} while (0)
#define ASAN_INTERCEPT_FUNC_VER(name, ver) \
do { \
- if ((!INTERCEPT_FUNCTION_VER(name, ver) || !REAL(name))) \
+ INTERCEPT_FUNCTION_VER(name, ver); \
+ name##_type ptr = (::__interception::real_##name); \
+ if ((!ptr || !REAL(name))) \
VReport( \
1, "AddressSanitizer: failed to intercept '" #name "@@" #ver "'\n"); \
} while (0)
diff --git a/compiler-rt/lib/interception/interception_linux.h b/compiler-rt/lib/interception/interception_linux.h
index 4c60bd88090..abef9c9e65a 100644
--- a/compiler-rt/lib/interception/interception_linux.h
+++ b/compiler-rt/lib/interception/interception_linux.h
@@ -30,16 +30,18 @@ void *GetFuncAddrVer(const char *name, const char *ver);
} // namespace __interception
#define INTERCEPT_FUNCTION_LINUX_OR_FREEBSD(func) \
- ::__interception::GetRealFunctionAddress( \
+ do { ::__interception::GetRealFunctionAddress( \
#func, (::__interception::uptr *)&__interception::PTR_TO_REAL(func), \
(::__interception::uptr) & (func), \
- (::__interception::uptr) & WRAP(func))
+ (::__interception::uptr) & WRAP(func)); \
+ } while (0) // TODO(yln): temporarily make macro void.
// Android, Solaris and OpenBSD do not have dlvsym
#if !SANITIZER_ANDROID && !SANITIZER_SOLARIS && !SANITIZER_OPENBSD
#define INTERCEPT_FUNCTION_VER_LINUX_OR_FREEBSD(func, symver) \
- (::__interception::real_##func = (func##_type)( \
- unsigned long)::__interception::GetFuncAddrVer(#func, symver))
+ do { (::__interception::real_##func = (func##_type)( \
+ unsigned long)::__interception::GetFuncAddrVer(#func, symver)); \
+ } while (0)
#else
#define INTERCEPT_FUNCTION_VER_LINUX_OR_FREEBSD(func, symver) \
INTERCEPT_FUNCTION_LINUX_OR_FREEBSD(func)
diff --git a/compiler-rt/lib/msan/msan_interceptors.cc b/compiler-rt/lib/msan/msan_interceptors.cc
index f5120809ee3..0512d70d7dc 100644
--- a/compiler-rt/lib/msan/msan_interceptors.cc
+++ b/compiler-rt/lib/msan/msan_interceptors.cc
@@ -1243,13 +1243,17 @@ int OnExit() {
#define MSAN_INTERCEPT_FUNC(name) \
do { \
- if ((!INTERCEPT_FUNCTION(name) || !REAL(name))) \
+ INTERCEPT_FUNCTION(name); \
+ bool same = (& (name) == & WRAP(name)); \
+ if ((!same || !REAL(name))) \
VReport(1, "MemorySanitizer: failed to intercept '" #name "'\n"); \
} while (0)
#define MSAN_INTERCEPT_FUNC_VER(name, ver) \
do { \
- if ((!INTERCEPT_FUNCTION_VER(name, ver) || !REAL(name))) \
+ INTERCEPT_FUNCTION_VER(name, ver); \
+ name##_type ptr = (::__interception::real_##name); \
+ if ((!ptr || !REAL(name))) \
VReport( \
1, "MemorySanitizer: failed to intercept '" #name "@@" #ver "'\n"); \
} while (0)
OpenPOWER on IntegriCloud