[llvm-commits] [compiler-rt] r172057 - in /compiler-rt/trunk/lib/msan: msan.cc msan.h msan_linux.cc msan_report.cc
Richard Smith
richard at metafoo.co.uk
Thu Jan 10 14:21:16 PST 2013
Hi!
On Thu, Jan 10, 2013 at 3:17 AM, Evgeniy Stepanov
<eugeni.stepanov at gmail.com> wrote:
> Author: eugenis
> Date: Thu Jan 10 05:17:55 2013
> New Revision: 172057
>
> URL: http://llvm.org/viewvc/llvm-project?rev=172057&view=rev
> Log:
> [msan] Set program exit code in keep-going mode.
We want to do the exact same thing in UBSan. Can we move this
functionality into sanitizer_common?
> Modified:
> compiler-rt/trunk/lib/msan/msan.cc
> compiler-rt/trunk/lib/msan/msan.h
> compiler-rt/trunk/lib/msan/msan_linux.cc
> compiler-rt/trunk/lib/msan/msan_report.cc
>
> Modified: compiler-rt/trunk/lib/msan/msan.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan.cc?rev=172057&r1=172056&r2=172057&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/msan/msan.cc (original)
> +++ compiler-rt/trunk/lib/msan/msan.cc Thu Jan 10 05:17:55 2013
> @@ -90,6 +90,8 @@
> int msan_inited = 0;
> bool msan_init_is_running;
>
> +int msan_report_count = 0;
> +
> // Array of stack origins.
> // FIXME: make it resizable.
> static const uptr kNumStackOriginDescrs = 1024 * 1024;
> @@ -163,6 +165,8 @@
> return;
> }
>
> + ++msan_report_count;
> +
> StackTrace stack;
> GetStackTrace(&stack, kStackTraceMax, pc, bp);
>
> @@ -177,7 +181,6 @@
> }
> }
>
> -
> } // namespace __msan
>
> // Interface.
> @@ -202,6 +205,7 @@
> if (msan_inited) return;
> msan_init_is_running = 1;
>
> + InstallAtExitHandler();
> SetDieCallback(MsanDie);
> InitializeInterceptors();
>
>
> Modified: compiler-rt/trunk/lib/msan/msan.h
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan.h?rev=172057&r1=172056&r2=172057&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/msan/msan.h (original)
> +++ compiler-rt/trunk/lib/msan/msan.h Thu Jan 10 05:17:55 2013
> @@ -32,6 +32,7 @@
> namespace __msan {
> extern int msan_inited;
> extern bool msan_init_is_running;
> +extern int msan_report_count;
>
> bool ProtectRange(uptr beg, uptr end);
> bool InitShadow(bool prot1, bool prot2, bool map_shadow, bool init_origins);
> @@ -42,6 +43,7 @@
> uptr alignment, bool zeroise);
> void MsanDeallocate(void *ptr);
> void InstallTrapHandler();
> +void InstallAtExitHandler();
> void ReplaceOperatorsNewAndDelete();
>
> void MsanDie();
> @@ -52,6 +54,7 @@
>
> void ReportUMR(StackTrace *stack, u32 origin);
> void ReportExpectedUMRNotFound(StackTrace *stack);
> +void ReportAtExitStatistics();
>
> #define GET_MALLOC_STACK_TRACE \
> StackTrace stack; \
>
> Modified: compiler-rt/trunk/lib/msan/msan_linux.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_linux.cc?rev=172057&r1=172056&r2=172057&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/msan/msan_linux.cc (original)
> +++ compiler-rt/trunk/lib/msan/msan_linux.cc Thu Jan 10 05:17:55 2013
> @@ -91,6 +91,19 @@
> void MsanDie() {
> _exit(flags()->exit_code);
> }
> +
> +static void MsanAtExit(void) {
> + if (msan_report_count > 0) {
> + ReportAtExitStatistics();
> + if (flags()->exit_code)
> + _exit(flags()->exit_code);
> + }
> +}
> +
> +void InstallAtExitHandler() {
> + atexit(MsanAtExit);
> +}
> +
> }
>
> #endif // __linux__
>
> Modified: compiler-rt/trunk/lib/msan/msan_report.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_report.cc?rev=172057&r1=172056&r2=172057&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/msan/msan_report.cc (original)
> +++ compiler-rt/trunk/lib/msan/msan_report.cc Thu Jan 10 05:17:55 2013
> @@ -89,4 +89,12 @@
> StackTrace::PrintStack(stack->trace, stack->size, true, "", 0);
> }
>
> +void ReportAtExitStatistics() {
> + Decorator d;
> + Printf("%s", d.Warning());
> + Printf("MemorySanitizer: %d warnings reported.\n", msan_report_count);
> + Printf("%s", d.End());
> +}
> +
> +
> } // namespace msan
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list