[compiler-rt] r177864 - asan/tsan: add Printf/Report hook

Alexey Samsonov samsonov at google.com
Mon Mar 25 06:19:02 PDT 2013


On Mon, Mar 25, 2013 at 4:58 PM, Dmitry Vyukov <dvyukov at google.com> wrote:

> Author: dvyukov
> Date: Mon Mar 25 07:58:09 2013
> New Revision: 177864
>
> URL: http://llvm.org/viewvc/llvm-project?rev=177864&view=rev
> Log:
> asan/tsan: add Printf/Report hook
> The hook can be overriden in frontend to print to e.g. a file.
>
>
> Modified:
>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc
>
> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc?rev=177864&r1=177863&r2=177864&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc Mon Mar 25
> 07:58:09 2013
> @@ -173,6 +173,21 @@ void SetPrintfAndReportCallback(void (*c
>    PrintfAndReportCallback = callback;
>  }
>
> +// Can be overriden in frontend.
> +#ifndef SANITIZER_GO
> +SANITIZER_INTERFACE_ATTRIBUTE void WEAK OnPrint(const char *str) {
> +  (void)str;
> +}
> +#endif
>

Why not SANITIZER_SUPPORTS_WEAK_HOOKS (we have it in
sanitizer_internal_defs.h)


> +
> +static void CallPrintfAndReportCallback(const char *str) {
> +#ifndef SANITIZER_GO
> +  OnPrint(str);
> +#endif
> +  if (PrintfAndReportCallback)
> +    PrintfAndReportCallback(str);
> +}
> +
>  void Printf(const char *format, ...) {
>    const int kLen = 16 * 1024;
>    InternalScopedBuffer<char> buffer(kLen);
> @@ -182,8 +197,7 @@ void Printf(const char *format, ...) {
>    va_end(args);
>    RAW_CHECK_MSG(needed_length < kLen, "Buffer in Printf is too short!\n");
>    RawWrite(buffer.data());
> -  if (PrintfAndReportCallback)
> -    PrintfAndReportCallback(buffer.data());
> +  CallPrintfAndReportCallback(buffer.data());
>  }
>
>  // Writes at most "length" symbols to "buffer" (including trailing '\0').
> @@ -238,8 +252,7 @@ void Report(const char *format, ...) {
>        }
>      } else {
>        RawWrite(buffer);
> -      if (PrintfAndReportCallback)
> -        PrintfAndReportCallback(buffer);
> +      CallPrintfAndReportCallback(buffer);
>        // Don't do anything for the second time if the first iteration
>        // succeeded.
>        break;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>



-- 
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130325/c8a26a3b/attachment.html>


More information about the llvm-commits mailing list