[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