__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