Related articles |
---|
Stack frame in GCC/G++ pradeep@cs.iastate.edu (pradeep bollineni) (1999-10-01) |
Re: Stack frame in GCC/G++ meissner@cygnus.com (Michael Meissner) (1999-10-11) |
From: | Michael Meissner <meissner@cygnus.com> |
Newsgroups: | comp.compilers |
Date: | 11 Oct 1999 02:37:19 -0400 |
Organization: | Cygnus Solutions |
References: | 99-10-006 |
Keywords: | C, GCC, code |
pradeep bollineni <pradeep@cs.iastate.edu> writes:
> In code generated by gcc/g++ on linux running on intel pentium II, is
> any other data stored between a stack frames (for a function) base
> pointer and the return address from that function (which also stored
> on the stack). Put differently, is it correct to assume that return
> address from a function is stored right next to the base pointer for
> the functions stack frame?
And John writes in reply:
> [As I recall, with a sufficiently high optimization level, leaf routines
> someties don't store the base pointer. -John]
If the frame pointer is eliminated, then the frame pointer (base
pointer) is not stored next to the PC. There are two switches that
control this behavior:
-fomit-frame-pointer Try to eliminate all frame pointers
-momit-leaf-frame-pointer Only eliminate fp in leaf functions
Unlike many of the RISC targets, the frame pointer is not eliminated
by default on the x86, since the debugger can't deal with non-leaf
functions having no frame (the problem on the x86 is that it uses
pushes/pops in passing the arguments, so the stack pointer ebbs and
flows during the course of a function).
--
Michael Meissner, Cygnus Solutions
PMB 198, 174 Littleton Road #3, Westford, Massachusetts 01886
email: meissner@cygnus.com phone: 978-486-9304 fax: 978-692-4482
Return to the
comp.compilers page.
Search the
comp.compilers archives again.