On Mon, 2011-12-05 at 09:50 +0100, Joakim Tjernlund wrote:
> Benjamin Herrenschmidt <b...@kernel.crashing.org> wrote on 2011/11/25 
> 06:24:32:
> >
> > On Fri, 2011-11-18 at 09:22 +0100, Joakim Tjernlund wrote:
> >
> > > I forgot to ask, oprofile mentions setting -no-omit-framepointer to get
> > > correct backtrace but I cannot turn on frame pointers for the ppc kernel.
> > > Isn't frame pointers needed for pcc? what about user space?
> >
> > PowerPC always has frame pointers, ignore that :-)
> 
> A bit late but consider this:

 .../...

Right I wasn't clear. We do have frame pointers for non-leaf functions,
and we can trace from LR when we are on a leaf function, we can use
__builtin_return_address as well.

We also explicitely prevent -fno-omit-frame-pointer, iirc, due to a bug
with older versions of gcc which could cause miscompiles under some
circumstances (though I don't remember the details).

Cheers,
Ben.


> int leaf(int x)
> {
>       return x+3;
> }
> 
> which yields(with gcc -O2 -S):
>       .file   "leaf.c"
>       .section        ".text"
>       .align 2
>       .globl leaf
>       .type   leaf, @function
> leaf:
>       addi 3,3,3
>       blr
>       .size   leaf, .-leaf
>       .section        .note.GNU-stack,"",@progbits
>       .ident  "GCC: (GNU) 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.9)"
> 
> 
> Here there is with frame pointer(I guess that the messing around with r11 and 
> r31 is a defect?):
> (With gcc -O2 -S -fno-omit-frame-pointer)
> 
>       .file   "leaf.c"
>       .section        ".text"
>       .align 2
>       .globl leaf
>       .type   leaf, @function
> leaf:
>       stwu 1,-16(1)
>       addi 3,3,3
>       lwz 11,0(1)
>       stw 31,12(1)
>       mr 31,1
>       lwz 31,-4(11)
>       mr 1,11
>       blr
>       .size   leaf, .-leaf
>       .section        .note.GNU-stack,"",@progbits
>       .ident  "GCC: (GNU) 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.9)"


_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to