[compiler-rt] r359325 - [NFC][Sanitizer] Change "return type" of INTERCEPT_FUNCTION to void

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 30 07:51:29 PDT 2019


The 32-bit windows dynamic asan runtime build is still broken, see
https://bugs.chromium.org/p/chromium/issues/detail?id=957971

On Fri, Apr 26, 2019 at 7:27 PM Julian Lettner via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: yln
> Date: Fri Apr 26 10:29:22 2019
> New Revision: 359325
>
> URL: http://llvm.org/viewvc/llvm-project?rev=359325&view=rev
> Log:
> [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
>
> Modified:
>     compiler-rt/trunk/lib/asan/asan_interceptors.h
>     compiler-rt/trunk/lib/interception/interception_linux.h
>     compiler-rt/trunk/lib/msan/msan_interceptors.cc
>
> Modified: compiler-rt/trunk/lib/asan/asan_interceptors.h
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.h?rev=359325&r1=359324&r2=359325&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_interceptors.h (original)
> +++ compiler-rt/trunk/lib/asan/asan_interceptors.h Fri Apr 26 10:29:22 2019
> @@ -122,12 +122,16 @@ DECLARE_REAL(char*, strstr, const char *
>  #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)
>
> Modified: compiler-rt/trunk/lib/interception/interception_linux.h
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/interception/interception_linux.h?rev=359325&r1=359324&r2=359325&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/interception/interception_linux.h (original)
> +++ compiler-rt/trunk/lib/interception/interception_linux.h Fri Apr 26
> 10:29:22 2019
> @@ -30,16 +30,18 @@ void *GetFuncAddrVer(const char *name, c
>  }  // 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)
>
> Modified: compiler-rt/trunk/lib/msan/msan_interceptors.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=359325&r1=359324&r2=359325&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)
> +++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Fri Apr 26 10:29:22
> 2019
> @@ -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)
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190430/cfead499/attachment.html>


More information about the llvm-commits mailing list