<div dir="ltr">Thanks! (your were quicker than me)</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 16, 2017 at 6:28 PM, Juergen Ributzka via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I reverted the change in r298029.<div><br></div><div>--Juergen</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 16, 2017 at 6:12 PM, Evgenii Stepanov <span dir="ltr"><<a href="mailto:eugeni.stepanov@gmail.com" target="_blank">eugeni.stepanov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I can confirm that this breaks many sanitizer tests on i686 and x86_64.<br>
<div class="m_1605246496000746305HOEnZb"><div class="m_1605246496000746305h5"><br>
<br>
On Thu, Mar 16, 2017 at 4:16 PM, Juergen Ributzka via llvm-commits<br>
<<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
> Looks like this broke our bot:<br>
> <a href="http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_check/29210/" rel="noreferrer" target="_blank">http://lab.llvm.org:8080/green<wbr>/job/clang-stage1-configure-<wbr>RA_check/29210/</a><br>
><br>
> Could you please take a look?<br>
><br>
> Thanks<br>
><br>
> Cheers,<br>
> Juergen<br>
><br>
><br>
> On Thu, Mar 16, 2017 at 2:38 PM, Kostya Serebryany via llvm-commits<br>
> <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
>><br>
>> Hi Bill,<br>
>><br>
>> * Has this been code-reviewed? In general, please do pre-commit code<br>
>> reviews for any code that is common between Power and other platforms.<br>
>> Even if (or: especially if) there are #ifdefs involved. (I hate #ifdefs)<br>
>> * Is there any chance to get rid of #ifdefs and replace them with if()? Or<br>
>> maybe just a separate implementation for Power?<br>
>> * do the existing tests cover the problems that this change solves?<br>
>><br>
>><br>
>> Thanks,<br>
>> --kcc<br>
>><br>
>> On Thu, Mar 16, 2017 at 2:14 PM, Bill Seurer via llvm-commits<br>
>> <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
>>><br>
>>> Author: seurer<br>
>>> Date: Thu Mar 16 16:14:13 2017<br>
>>> New Revision: 297995<br>
>>><br>
>>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=297995&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=297995&view=rev</a><br>
>>> Log:<br>
>>> [PowerPC] Fix sanitizer frame unwind on 32-bit ABIs<br>
>>><br>
>>> This fixes many sanitizer problems with -m32.  It is really intended<br>
>>> for gcc but patches to the sanitizers make their way through llvm<br>
>>> first.<br>
>>><br>
>>> ref:  <a href="https://gcc.gnu.org/ml/gcc-patches/2017-02/msg00855.html" rel="noreferrer" target="_blank">https://gcc.gnu.org/ml/gcc-pat<wbr>ches/2017-02/msg00855.html</a><br>
>>><br>
>>> Modified:<br>
>>>     compiler-rt/trunk/lib/sanitiz<wbr>er_common/sanitizer_stacktrace<wbr>.cc<br>
>>><br>
>>> Modified: compiler-rt/trunk/lib/sanitize<wbr>r_common/sanitizer_stacktrace.<wbr>cc<br>
>>> URL:<br>
>>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc?rev=297995&r1=297994&r2=297995&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/compiler-rt/trunk/lib/sa<wbr>nitizer_common/sanitizer_stack<wbr>trace.cc?rev=297995&r1=297994&<wbr>r2=297995&view=diff</a><br>
>>><br>
>>> ==============================<wbr>==============================<wbr>==================<br>
>>> --- compiler-rt/trunk/lib/sanitize<wbr>r_common/sanitizer_stacktrace.<wbr>cc<br>
>>> (original)<br>
>>> +++ compiler-rt/trunk/lib/sanitize<wbr>r_common/sanitizer_stacktrace.<wbr>cc Thu<br>
>>> Mar 16 16:14:13 2017<br>
>>> @@ -79,15 +79,22 @@ void BufferedStackTrace::FastUnwind<wbr>Stack<br>
>>>    while (IsValidFrame((uptr)frame, stack_top, bottom) &&<br>
>>>           IsAligned((uptr)frame, sizeof(*frame)) &&<br>
>>>           size < max_depth) {<br>
>>> +     // PowerPC ABIs specify that the return address is saved on the<br>
>>> +     // *caller's* stack frame.  Thus we must dereference the back chain<br>
>>> +     // to find the caller frame before extracting it.<br>
>>> +     uhwptr *caller_frame = (uhwptr*)frame[0];<br>
>>> +     if (!IsValidFrame((uptr)caller_fr<wbr>ame, stack_top, bottom) ||<br>
>>> +         !IsAligned((uptr)caller_<wbr>frame, sizeof(uhwptr)))<br>
>>> +       break;<br>
>>>  #ifdef __powerpc__<br>
>>> -    // PowerPC ABIs specify that the return address is saved at offset<br>
>>> -    // 16 of the *caller's* stack frame.  Thus we must dereference the<br>
>>> -    // back chain to find the caller frame before extracting it.<br>
>>> -    uhwptr *caller_frame = (uhwptr*)frame[0];<br>
>>> -    if (!IsValidFrame((uptr)caller_fr<wbr>ame, stack_top, bottom) ||<br>
>>> -        !IsAligned((uptr)caller_frame, sizeof(uhwptr)))<br>
>>> -      break;<br>
>>> +    // For most ABIs the offset where the return address is saved is two<br>
>>> +    // register sizes.  The exception is the SVR4 ABI, which uses an<br>
>>> +    // offset of only one register size.<br>
>>> +#ifdef _CALL_SYSV<br>
>>> +    uhwptr pc1 = caller_frame[1];<br>
>>> +#else<br>
>>>      uhwptr pc1 = caller_frame[2];<br>
>>> +#endif<br>
>>>  #elif defined(__s390__)<br>
>>>      uhwptr pc1 = frame[14];<br>
>>>  #else<br>
>>><br>
>>><br>
>>> ______________________________<wbr>_________________<br>
>>> llvm-commits mailing list<br>
>>> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
>>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
>><br>
>><br>
>><br>
>> ______________________________<wbr>_________________<br>
>> llvm-commits mailing list<br>
>> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
>><br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
><br>
</div></div></blockquote></div><br></div>
</div></div><br>______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div>