This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: alloca attribute?

On Nov 29, 2006, at 9:05 AM, Andrew Haley wrote:

Perry Smith writes:
On Nov 29, 2006, at 8:24 AM, Andrew Haley wrote:

Perry Smith writes:
But then I hit upon this other idea (which may suck).  newStack
simply mucks with the stack and returns back to testit (the routine
that calls newStack).

You're right. It sucks. :-)

I wish I could include some graphics but I'll try to describe it
with words.

No, you've explained it perfectly well, but trust me here: it's a really bad idea. gcc can eliminate the stack pointer to the frame pointer, as you have discovered. gcc can also save a pointer to a local area on the stack, and that can be of indeterminate size.

So gcc might do this

   int a = 2;
   p = &a;  // allocated on the stack
   *p = 3;
   print a;

And a, being on the new stack, would now be different from *p, which
still points to the old stack.  It can't possibly work.

Ahh... I see. It took me a while to figure out what you were saying.


o.k.  So if I go with the idea of newStack calling foo, will I need the
unwind stuff you mentioned before?  I'm somewhat terrified of
mucking with that but I probably need to learn how it works anyhow.

Is this what I need to read and understand?

Or... do you have any ideas of a completely different approach somehow?

This is going to suck so bad... all of my external entry points need to move
the stack. I thought, briefly, gee, thats just the five or so driver entry points. But
then there is the interrupt handler, iodone, timer routines, all sorts of nasty

Thanks for you help...
Perry Smith ( )
Ease Software, Inc. ( )

Low cost SATA Disk Systems for IBMs p5, pSeries, and RS/6000 AIX systems

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]