[compiler-rt] r243467 - PowerPC's ABIs differ from those of other architectures in that the
Bill Schmidt
wschmidt at linux.vnet.ibm.com
Tue Jul 28 13:06:32 PDT 2015
On Tue, 2015-07-28 at 14:51 -0500, Hal Finkel wrote:
> ----- Original Message -----
> > From: "Bill Schmidt" <wschmidt at linux.vnet.ibm.com>
> > To: llvm-commits at cs.uiuc.edu
> > Sent: Tuesday, July 28, 2015 2:41:50 PM
> > Subject: [compiler-rt] r243467 - PowerPC's ABIs differ from those of other architectures in that the
> >
> > Author: wschmidt
> > Date: Tue Jul 28 14:41:49 2015
> > New Revision: 243467
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=243467&view=rev
> > Log:
> > PowerPC's ABIs differ from those of other architectures in that the
> > callee-saved return address is stored in the caller's stack frame,
> > not
> > the callee's. This patch adjusts the logic to find the LR in the
> > correct place for PowerPC.
> >
> > Patch joint with Bill Seurer.
> >
> > Modified:
> > compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc
> > compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h
> >
> > Modified:
> > compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc
> > URL:
> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc?rev=243467&r1=243466&r2=243467&view=diff
> > ==============================================================================
> > --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc
> > (original)
> > +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc
> > Tue Jul 28 14:41:49 2015
> > @@ -83,7 +83,15 @@ void BufferedStackTrace::FastUnwindStack
> > while (IsValidFrame((uptr)frame, stack_top, bottom) &&
> > IsAligned((uptr)frame, sizeof(*frame)) &&
> > size < max_depth) {
> > +#ifdef __powerpc__
>
> Please add a comment explaining the rationale here as well.
Commentary added in r243470.
Thanks!
Bill
>
> Thanks,
> Hal
>
> > + uhwptr *caller_frame = (uhwptr*)frame[0];
> > + if (!IsValidFrame((uptr)caller_frame, stack_top, bottom) ||
> > + !IsAligned((uptr)caller_frame, sizeof(uhwptr)))
> > + break;
> > + uhwptr pc1 = caller_frame[2];
> > +#else
> > uhwptr pc1 = frame[1];
> > +#endif
> > if (pc1 != pc) {
> > trace_buffer[size++] = (uptr) pc1;
> > }
> >
> > Modified:
> > compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h
> > URL:
> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h?rev=243467&r1=243466&r2=243467&view=diff
> > ==============================================================================
> > --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h
> > (original)
> > +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h Tue
> > Jul 28 14:41:49 2015
> > @@ -19,8 +19,7 @@ namespace __sanitizer {
> >
> > static const u32 kStackTraceMax = 256;
> >
> > -#if SANITIZER_LINUX && (defined(__aarch64__) || defined(__powerpc__)
> > || \
> > - defined(__powerpc64__) || defined(__sparc__)
> > || \
> > +#if SANITIZER_LINUX && (defined(__aarch64__) || defined(__sparc__)
> > || \
> > defined(__mips__))
> > # define SANITIZER_CAN_FAST_UNWIND 0
> > #elif SANITIZER_WINDOWS
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >
>
More information about the llvm-commits
mailing list