__builtin_frame_address vs %esp in pt-machine.h

Roland McGrath roland@redhat.com
Sat Oct 5 15:06:00 GMT 2002


What was the reason for this change in linuxthreads?

     2001-04-12  Ulrich Drepper  <drepper@redhat.com>

	     * sysdeps/i386/Makefile: Make sure gcc uses a frame pointer for
	     all the files which use CURRENT_STACK_FRAME.
	     * sysdeps/i386/pt-machine.h (CURRENT_STACK_FRAME): Define using
	     __builtin_frame_address.
	     * sysdeps/i386/i686/pt-machine.h: Likewise.

The -fomit-frame-pointer build is broken for !FLOATING_STACKS because we
failed to keep the sysdeps/i386/Makefile up to date with every source file
that uses THREAD_*MEM (probably my fault).  The plan of adding all such
files to sysdeps/i386/Makefile seems very error prone (cf the current
error) and definitely ugly.  It would be safest to apply it to all the
linuxthreads source files.  

But I don't see why we don't just use the definition that works with or
without -fomit-frame-pointer.  I don't get any compilation errors from
reverting this change.  So I wonder what motivated it.  Going back to using
%esp in a global register variable seems like the best way to fix the
current problems to me.



More information about the Libc-hacker mailing list