<div dir="ltr"><div>The 32-bit windows dynamic asan runtime build is still broken, see <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=957971">https://bugs.chromium.org/p/chromium/issues/detail?id=957971</a></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Apr 26, 2019 at 7:27 PM Julian Lettner via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: yln<br>
Date: Fri Apr 26 10:29:22 2019<br>
New Revision: 359325<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=359325&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=359325&view=rev</a><br>
Log:<br>
[NFC][Sanitizer] Change "return type" of INTERCEPT_FUNCTION to void<br>
<br>
This temporary change tells us about all the places where the return<br>
value of the INTERCEPT_FUNCTION macro is actually used. In the next<br>
patch I will cleanup the macro and remove GetRealFuncAddress.<br>
<br>
Reviewed By: vitalybuka<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D61145" rel="noreferrer" target="_blank">https://reviews.llvm.org/D61145</a><br>
<br>
Modified:<br>
compiler-rt/trunk/lib/asan/asan_interceptors.h<br>
compiler-rt/trunk/lib/interception/interception_linux.h<br>
compiler-rt/trunk/lib/msan/msan_interceptors.cc<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_interceptors.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.h?rev=359325&r1=359324&r2=359325&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.h?rev=359325&r1=359324&r2=359325&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_interceptors.h (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_interceptors.h Fri Apr 26 10:29:22 2019<br>
@@ -122,12 +122,16 @@ DECLARE_REAL(char*, strstr, const char *<br>
#if !SANITIZER_MAC<br>
#define ASAN_INTERCEPT_FUNC(name) \<br>
do { \<br>
- if ((!INTERCEPT_FUNCTION(name) || !REAL(name))) \<br>
+ INTERCEPT_FUNCTION(name); \<br>
+ bool same = (& (name) == & WRAP(name)); \<br>
+ if ((!same || !REAL(name))) \<br>
VReport(1, "AddressSanitizer: failed to intercept '" #name "'\n"); \<br>
} while (0)<br>
#define ASAN_INTERCEPT_FUNC_VER(name, ver) \<br>
do { \<br>
- if ((!INTERCEPT_FUNCTION_VER(name, ver) || !REAL(name))) \<br>
+ INTERCEPT_FUNCTION_VER(name, ver); \<br>
+ name##_type ptr = (::__interception::real_##name); \<br>
+ if ((!ptr || !REAL(name))) \<br>
VReport( \<br>
1, "AddressSanitizer: failed to intercept '" #name "@@" #ver "'\n"); \<br>
} while (0)<br>
<br>
Modified: compiler-rt/trunk/lib/interception/interception_linux.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/interception/interception_linux.h?rev=359325&r1=359324&r2=359325&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/interception/interception_linux.h?rev=359325&r1=359324&r2=359325&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/interception/interception_linux.h (original)<br>
+++ compiler-rt/trunk/lib/interception/interception_linux.h Fri Apr 26 10:29:22 2019<br>
@@ -30,16 +30,18 @@ void *GetFuncAddrVer(const char *name, c<br>
} // namespace __interception<br>
<br>
#define INTERCEPT_FUNCTION_LINUX_OR_FREEBSD(func) \<br>
- ::__interception::GetRealFunctionAddress( \<br>
+ do { ::__interception::GetRealFunctionAddress( \<br>
#func, (::__interception::uptr *)&__interception::PTR_TO_REAL(func), \<br>
(::__interception::uptr) & (func), \<br>
- (::__interception::uptr) & WRAP(func))<br>
+ (::__interception::uptr) & WRAP(func)); \<br>
+ } while (0) // TODO(yln): temporarily make macro void.<br>
<br>
// Android, Solaris and OpenBSD do not have dlvsym<br>
#if !SANITIZER_ANDROID && !SANITIZER_SOLARIS && !SANITIZER_OPENBSD<br>
#define INTERCEPT_FUNCTION_VER_LINUX_OR_FREEBSD(func, symver) \<br>
- (::__interception::real_##func = (func##_type)( \<br>
- unsigned long)::__interception::GetFuncAddrVer(#func, symver))<br>
+ do { (::__interception::real_##func = (func##_type)( \<br>
+ unsigned long)::__interception::GetFuncAddrVer(#func, symver)); \<br>
+ } while (0)<br>
#else<br>
#define INTERCEPT_FUNCTION_VER_LINUX_OR_FREEBSD(func, symver) \<br>
INTERCEPT_FUNCTION_LINUX_OR_FREEBSD(func)<br>
<br>
Modified: compiler-rt/trunk/lib/msan/msan_interceptors.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=359325&r1=359324&r2=359325&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=359325&r1=359324&r2=359325&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)<br>
+++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Fri Apr 26 10:29:22 2019<br>
@@ -1243,13 +1243,17 @@ int OnExit() {<br>
<br>
#define MSAN_INTERCEPT_FUNC(name) \<br>
do { \<br>
- if ((!INTERCEPT_FUNCTION(name) || !REAL(name))) \<br>
+ INTERCEPT_FUNCTION(name); \<br>
+ bool same = (& (name) == & WRAP(name)); \<br>
+ if ((!same || !REAL(name))) \<br>
VReport(1, "MemorySanitizer: failed to intercept '" #name "'\n"); \<br>
} while (0)<br>
<br>
#define MSAN_INTERCEPT_FUNC_VER(name, ver) \<br>
do { \<br>
- if ((!INTERCEPT_FUNCTION_VER(name, ver) || !REAL(name))) \<br>
+ INTERCEPT_FUNCTION_VER(name, ver); \<br>
+ name##_type ptr = (::__interception::real_##name); \<br>
+ if ((!ptr || !REAL(name))) \<br>
VReport( \<br>
1, "MemorySanitizer: failed to intercept '" #name "@@" #ver "'\n"); \<br>
} while (0)<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div>