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