From: Konstantin Serebryany <konstantin.s.serebry...@gmail.com> Date: Mon, 3 Dec 2012 22:44:15 +0400
> 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). Thanks for taking care of this.