On Fri, 2006-06-02 at 16:35, Daniel Jacobowitz wrote:
> On Fri, Jun 02, 2006 at 04:32:07PM +0100, Richard Earnshaw wrote:
> > On Fri, 2006-06-02 at 16:28, Paul Brook wrote:
> > > I agree that in general you need ancillary information way to get a 
> > > backtrace 
> > > on Arm. However if you assume only Arm code code and 
> > > -fno-omit-frame-pointer 
> > > then you can walk the frames. Given this assumption I think it make sense 
> > > to 
> > > have _b_f_a(0) force the use of a frame pointer.
> > > 
> > 
> > No, in the general case you can't.  Because ARM and Thumb frames are
> > laid out differently.  In ARM code the frame pointer is in r11 (when not
> > eliminated); in thumb code it is in r7 (because r11 can't be used in
> > memory insns).
> 
> I'm reading these two paragraphs and the two of you seem to be in
> violent agreement.  Paul assumed ARM code only.

Well, that's a pretty limiting assumption given that ARM and thumb code
can be freely intermixed.  Indeed, I've often wondered if -Os should
default to Thumb code on CPUs that can support it (and thumb code can
corrupt the ARM frame register since it doesn't consider it to be
special in any way -- it's just a call-saved register).  I've also
pondered making the compiler ignore -f[no-]omit-frame-pointer and to
only use one in cases where the stack is dynamically adjustable.

R.

Reply via email to