On Mon, Dec 3, 2012 at 10:37 PM, David Miller <da...@davemloft.net> wrote:
> From: Konstantin Serebryany <konstantin.s.serebry...@gmail.com>
> Date: Mon, 3 Dec 2012 22:33:12 +0400
>
>> On Mon, Dec 3, 2012 at 10:29 PM, David Miller <da...@davemloft.net> wrote:
>>> We could also add a __sparc__ block to sanitizer_stacktrace.cc:patch_pc().
>>> The Sparc PC is actually 8 bytes after the caller's jump.  Sparc has
>>> a delay slot, the place to return to is 2 instructions after the call/jump,
>>> and instructions are all 4 bytes long.
>>
>> Like this?
>>
>> --- sanitizer_common/sanitizer_stacktrace.cc    (revision 169136)
>> +++ sanitizer_common/sanitizer_stacktrace.cc    (working copy)
>> @@ -36,6 +36,8 @@
>>  #if defined(__powerpc__) || defined(__powerpc64__)
>>    // PCs are always 4 byte aligned.
>>    return pc - 4;
>> +#elif defined(__sparc__)
>> +  return pc - 8;
>>  #else
>>    return pc - 1;
>>  #endif
>>
>
> Perfect.

http://llvm.org/viewvc/llvm-project?view=rev&revision=169141
Will reach gcc with the next libsanitizer merge (or feel free to
commit the same patch directly to gcc).

--kcc

Reply via email to