On Wed, 15 Mar 2017 16:55:45 -0500 Josh Poimboeuf <[email protected]> wrote:
> On Wed, Mar 15, 2017 at 03:55:32PM -0400, Steven Rostedt wrote: > > +#ifdef USING_FRAME_POINTER > > +# ifdef CC_USING_FENTRY > > + /* > > + * Frame pointers are of ip followed by bp. > > + * Since fentry is an immediate jump, we are left with > > + * parent-ip, function-ip. We need to add a frame with > > + * parent-ip followed by ebp. > > + */ > > + pushl 4(%esp) /* parent ip */ > > pushl %ebp > > movl %esp, %ebp > > - > > + pushl 2*4(%esp) /* function ip */ > > +# endif > > + /* For mcount, the function ip is directly above */ > > + pushl %ebp > > + movl %esp, %ebp > > +#endif > > More vertical operand alignment issues. > > > @@ -85,6 +140,10 @@ ENTRY(ftrace_regs_caller) > > pushl %edx > > pushl %ecx > > pushl %ebx > > +#ifndef USING_FRAME_POINTER > > + /* Load 4 off of the parent ip addr into ebp */ > > + lea 14*4(%esp), %ebp > > +#endif > > Instead of: > > #ifndef USING_FRAME_POINTER > > Shouldn't it be: > > #ifdef CC_USING_FENTRY > > ? > > Otherwise, if I'm reading it right, with fentry and > CONFIG_FRAME_POINTER=y, ebp will lead to the grandparent's ip instead of > the parent's ip. Yep I think you're right. I original added frame pointer setup for the parent on CC_USING_FENTRY and FRAME_POINTER but that got ugly, this may be leftover from that. Thanks, will update. -- Steve

