Re: Improve end check on rs6000 prologue analyzer

Mark Kettenis
2006-10-17T22:15:42Z

> Date: Tue, 17 Oct 2006 17:21:14 -0400
> From: Daniel Jacobowitz <drow@false.org>
>
> On Sat, Sep 30, 2006 at 09:32:00PM +0200, Mark Kettenis wrote:
> > > Date: Fri, 29 Sep 2006 17:37:26 -0400
> > > From: Daniel Jacobowitz <drow@false.org>
> > >
> > > Any comments on this patch? Otherwise, I'll plan to commit it in a few
> > > days.
> >
> > I get quite a few new regressions on OpenBSD/powerpc. Please don't
> > commit this.
>
> Hi Mark,
>
> Do you think you could try out this one, instead? I worked out what
> was going wrong for me: sign extension. I was testing a 64-bit GDB
> binary on 32-bit programs, which caused (op >> 22) == 0x20f to fail;
> when it didn't fail, on a 32-bit host, that check allows any load into
> r31 to be considered part of the prologue. But it was advancing so far
> that for small functions, the breakpoint was placed after the restore
> of r31 in the epilogue - much too far.
>
> This patch fixes the original bug, fixes the sign extension problem,
> and generally overhauls the prologue skipping (as opposed to scanning)
> to work more like MIPS's. It tests with no regressions on
> powerpc-linux, using a 32-bit binary this time.

I'll try to check it out tomorrow night. Time for me to go to zzz
now...

> 2006-10-17 Daniel Jacobowitz <dan@codesourcery.com>
>
> * rs6000-tdep.c (rs6000_skip_prologue): Use skip_prologue_using_sal.
> (rs6000_in_function_epilogue_p): Use extract_unsigned_integer.
> (refine_prologue_limit): Delete.
> (skip_prologue): Don't call it. Use extract_unsigned_integer.
> Assume lim_pc is set. Correct check for incomplete prologues.
>
> 2006-10-17 Daniel Jacobowitz <dan@codesourcery.com>
>
> * gdb.arch/powerpc-prologue.c (optimized_1_marker, gdb2029_marker)
> (optimized_1): New.
> (main): Call optimized_1.
> (gdb2029): Correct typos. Call gdb2029_marker.
> * gdb.arch/powerpc-prologue.exp: Run new test. Use a breakpoint
> for gdb2029.