<div style="font-family: arial, helvetica, sans-serif; font-size: 10pt">On Mon, Dec 3, 2012 at 4:24 AM, Kostya Serebryany <span dir="ltr"><<a href="mailto:kcc@google.com" target="_blank">kcc@google.com</a>></span> wrote:<br>
<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="font-family:arial,helvetica,sans-serif;font-size:10pt">Alexey, any suggestion? <div>
<div class="h5"><br><br><div class="gmail_quote">On Mon, Dec 3, 2012 at 4:00 PM, Dmitry Vyukov <span dir="ltr"><<a href="mailto:dvyukov@google.com" target="_blank">dvyukov@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">No, I can't. The tests do not use llvm symbolizer.<br></blockquote></div></div></div></div></blockquote><div><br></div>
<div>"make check-tsan" does use it.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="font-family:arial,helvetica,sans-serif;font-size:10pt">
<div><div class="h5"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><br>
<br>
On Mon, Dec 3, 2012 at 3:54 PM, Kostya Serebryany <<a href="mailto:kcc@google.com" target="_blank">kcc@google.com</a>> wrote:<br>
> Could you please add an output test, please?<br>
><br>
><br>
> On Mon, Dec 3, 2012 at 3:45 PM, Dmitry Vyukov <<a href="mailto:dvyukov@google.com" target="_blank">dvyukov@google.com</a>> wrote:<br>
>><br>
>> Author: dvyukov<br>
>> Date: Mon Dec  3 05:45:34 2012<br>
>> New Revision: <a href="tel:169122" value="+49169122" target="_blank">169122</a><br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=169122&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=169122&view=rev</a><br>
>> Log:<br>
>> tsan: describe global vars (module+offset for now)<br>
>><br>
>> Modified:<br>
>>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.cc<br>
>>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.h<br>
>>     compiler-rt/trunk/lib/tsan/rtl/tsan_report.cc<br>
>>     compiler-rt/trunk/lib/tsan/rtl/tsan_report.h<br>
>>     compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_report.cc<br>
>>     compiler-rt/trunk/lib/tsan/rtl/tsan_symbolize.cc<br>
>><br>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.cc<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.cc?rev=169122&r1=169121&r2=169122&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.cc?rev=169122&r1=169121&r2=169122&view=diff</a><br>


>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.cc<br>
>> (original)<br>
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.cc Mon Dec<br>
>> 3 05:45:34 2012<br>
>> @@ -256,6 +256,17 @@<br>
>>      // Otherwise, the data was filled by external symbolizer.<br>
>>      return actual_frames;<br>
>>    }<br>
>> +<br>
>> +  bool SymbolizeData(uptr addr, AddressInfo *frame) {<br>
>> +    LoadedModule *module = FindModuleForAddress(addr);<br>
>> +    if (module == 0)<br>
>> +      return false;<br>
>> +    const char *module_name = module->full_name();<br>
>> +    uptr module_offset = addr - module->base_address();<br>
>> +    frame->FillAddressAndModuleInfo(addr, module_name, module_offset);<br>
>> +    return true;<br>
>> +  }<br>
>> +<br>
>>    bool InitializeExternalSymbolizer(const char *path_to_symbolizer) {<br>
>>      int input_fd, output_fd;<br>
>>      if (!StartSymbolizerSubprocess(path_to_symbolizer, &input_fd,<br>
>> &output_fd))<br>
>> @@ -307,6 +318,10 @@<br>
>>    return symbolizer.SymbolizeCode(address, frames, max_frames);<br>
>>  }<br>
>><br>
>> +bool SymbolizeData(uptr address, AddressInfo *frame) {<br>
>> +  return symbolizer.SymbolizeData(address, frame);<br>
>> +}<br>
>> +<br>
>>  bool InitializeExternalSymbolizer(const char *path_to_symbolizer) {<br>
>>    return symbolizer.InitializeExternalSymbolizer(path_to_symbolizer);<br>
>>  }<br>
>><br>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.h<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.h?rev=169122&r1=169121&r2=169122&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.h?rev=169122&r1=169121&r2=169122&view=diff</a><br>


>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.h<br>
>> (original)<br>
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer.h Mon Dec<br>
>> 3 05:45:34 2012<br>
>> @@ -58,6 +58,7 @@<br>
>>  // of descriptions actually filled.<br>
>>  // This function should NOT be called from two threads simultaneously.<br>
>>  uptr SymbolizeCode(uptr address, AddressInfo *frames, uptr max_frames);<br>
>> +bool SymbolizeData(uptr address, AddressInfo *frame);<br>
>><br>
>>  // Starts external symbolizer program in a subprocess. Sanitizer<br>
>> communicates<br>
>>  // with external symbolizer via pipes.<br>
>><br>
>> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_report.cc<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_report.cc?rev=169122&r1=169121&r2=169122&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_report.cc?rev=169122&r1=169121&r2=169122&view=diff</a><br>


>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/tsan/rtl/tsan_report.cc (original)<br>
>> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_report.cc Mon Dec  3 05:45:34 2012<br>
>> @@ -80,8 +80,9 @@<br>
>><br>
>>  static void PrintLocation(const ReportLocation *loc) {<br>
>>    if (loc->type == ReportLocationGlobal) {<br>
>> -    Printf("  Location is global '%s' of size %zu at %zx %s:%d\n",<br>
>> -               loc->name, loc->size, loc->addr, loc->file, loc->line);<br>
>> +    Printf("  Location is global '%s' of size %zu at %zx %s:%d<br>
>> (%s+%p)\n\n",<br>
>> +               loc->name, loc->size, loc->addr, loc->file, loc->line,<br>
>> +               loc->module, loc->offset);<br>
>>    } else if (loc->type == ReportLocationHeap) {<br>
>>      Printf("  Location is heap block of size %zu at %p allocated",<br>
>>          loc->size, loc->addr);<br>
>> @@ -91,7 +92,7 @@<br>
>>        Printf(" by thread %d:\n", loc->tid);<br>
>>      PrintStack(loc->stack);<br>
>>    } else if (loc->type == ReportLocationStack) {<br>
>> -    Printf("  Location is stack of thread %d:\n", loc->tid);<br>
>> +    Printf("  Location is stack of thread %d:\n\n", loc->tid);<br>
>>    }<br>
>>  }<br>
>><br>
>><br>
>> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_report.h<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_report.h?rev=169122&r1=169121&r2=169122&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_report.h?rev=169122&r1=169121&r2=169122&view=diff</a><br>


>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/tsan/rtl/tsan_report.h (original)<br>
>> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_report.h Mon Dec  3 05:45:34 2012<br>
>> @@ -58,6 +58,8 @@<br>
>>    ReportLocationType type;<br>
>>    uptr addr;<br>
>>    uptr size;<br>
>> +  char *module;<br>
>> +  uptr offset;<br>
>>    int tid;<br>
>>    char *name;<br>
>>    char *file;<br>
>><br>
>> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_report.cc<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_report.cc?rev=169122&r1=169121&r2=169122&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_report.cc?rev=169122&r1=169121&r2=169122&view=diff</a><br>


>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_report.cc (original)<br>
>> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_report.cc Mon Dec  3 05:45:34<br>
>> 2012<br>
>> @@ -220,9 +220,11 @@<br>
>>      loc->type = ReportLocationGlobal;<br>
>>      loc->addr = addr;<br>
>>      loc->size = size;<br>
>> +    loc->module = symb->module ? internal_strdup(symb->module) : 0;<br>
>> +    loc->offset = symb->offset;<br>
>>      loc->tid = 0;<br>
>> -    loc->name = symb->func;<br>
>> -    loc->file = symb->file;<br>
>> +    loc->name = symb->func ? internal_strdup(symb->func) : 0;<br>
>> +    loc->file = symb->file ? internal_strdup(symb->file) : 0;<br>
>>      loc->line = symb->line;<br>
>>      loc->stack = 0;<br>
>>      internal_free(symb);<br>
>><br>
>> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_symbolize.cc<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_symbolize.cc?rev=169122&r1=169121&r2=169122&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_symbolize.cc?rev=169122&r1=169121&r2=169122&view=diff</a><br>


>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/tsan/rtl/tsan_symbolize.cc (original)<br>
>> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_symbolize.cc Mon Dec  3 05:45:34<br>
>> 2012<br>
>> @@ -52,7 +52,7 @@<br>
>>  }<br>
>><br>
>>  ReportStack *SymbolizeCode(uptr addr) {<br>
>> -  if (0 != internal_strcmp(flags()->external_symbolizer_path, "")) {<br>
>> +  if (flags()->external_symbolizer_path[0]) {<br>
>>      static const uptr kMaxAddrFrames = 16;<br>
>>      InternalScopedBuffer<AddressInfo> addr_frames(kMaxAddrFrames);<br>
>>      for (uptr i = 0; i < kMaxAddrFrames; i++)<br>
>> @@ -79,6 +79,12 @@<br>
>>  }<br>
>><br>
>>  ReportStack *SymbolizeData(uptr addr) {<br>
>> +  if (flags()->external_symbolizer_path[0]) {<br>
>> +    AddressInfo frame;<br>
>> +    if (!__sanitizer::SymbolizeData(addr, &frame))<br>
>> +      return 0;<br>
>> +    return NewReportStackEntry(frame);<br>
>> +  }<br>
>>    return SymbolizeDataAddr2Line(addr);<br>
>>  }<br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> llvm-commits mailing list<br>
>> <a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
><br>
><br>
</div></div></blockquote></div><br></div></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div><br>
</div>