[rfa] Fix software-watchpoint failures by adding epilogue detection

Richard Earnshaw rearnsha@arm.com
Wed Sep 29 15:24:00 GMT 2010


On Tue, 2010-09-28 at 12:32 -0400, Daniel Jacobowitz wrote:
> On Tue, Sep 28, 2010 at 06:04:14PM +0200, Ulrich Weigand wrote:
> > I'm wondering how "bx lr" could be an indirect call; for a call,
> > lr would have to point to the return address, so it couldn't also
> > contain the target address ...  Am I missing something here?
> 
> Bah, you are correct.  Poor choice of example.  bx ip is a better
> example; that can be an indirect call, a return, or a tail call.
> 
> > As far as I can see, GCC never uses bx with any other register but
> > lr to implement a return instruction.  Do you know whether this is
> > also true for other compilers?  If so, maybe the easiest fix would
> > be to change this back to only accepting "bx lr".
> 
> Sorry, I don't know :-(  Does GCC also only use lr for an indirect
> tail call?  I can't tell - I couldn't get GCC to issue an indirect
> tail call.  But I did get this out of RealView:
> 

You can never use LR for an indirect tailcall as it must contain the
return address from the outer function (at least, in any ABI compliant
code).  The mcount code does something a bit funky here, but that's a
special case.




More information about the Gdb-patches mailing list