[llvm-commits] [compiler-rt] r172057 - in /compiler-rt/trunk/lib/msan: msan.cc msan.h msan_linux.cc msan_report.cc
Evgeniy Stepanov
eugeni.stepanov at gmail.com
Fri Jan 11 00:15:55 PST 2013
On Fri, Jan 11, 2013 at 2:21 AM, Richard Smith <richard at metafoo.co.uk> wrote:
> 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?
Sure. In fact, we do have atexit in sanitizer_common, I should have
reused that in the first place.
>
>> 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