Re: Non-executable stack
Re: Non-executable stack
- Subject: Re: Non-executable stack
- From: Justin Walker <email@hidden>
- Date: Thu, 3 Apr 2003 09:17:25 -0800
On Wednesday, Apr 2, 2003, at 22:08 US/Pacific, Robert Plantz wrote:
On Wednesday, April 2, 2003, at 07:10 PM, Justin Walker wrote:
tisdagen den 1 april 2003 kl 05.54 skrev Jim Magee:
Out of curiosity, I've always wondered why the ABI grows the stack
downwards. It seems to be just as easy to grow it upwards, which
would make buffer overflows much harder, if not impossible.
Habit, mostly, I think. Most of this stuff grew up on PDP11's, and
the PDP11 architecture gave downward growing stacks (among other
things, interrupts and subroutine calls predecremented stack
pointers; and the register specifiers in instructions made it easy to
'comply' with that mode of operation). With modernXXXmore recent
architectures like PowerPC where a stack is more ABI than ISA, you
can, as it were, go either way (:-}).
Perhaps I'm being too simplistic, but if I wanted to make maximum
use of memory, I would store my program code at one end and
start my stack at the other, then let them grow toward each
other.
That is too simplistic. The main issue is that large chunks of address
space are "reserved" for shared libraries and shared data segemnts. In
addition, your private data segment has to go somewhere as well. There
are a lot of claims on that single, linear, array of memory.
Regards,
Justin
--
Justin C. Walker, Curmudgeon-At-Large *
Institute for General Semantics | When LuteFisk is outlawed
| Only outlaws will have
| LuteFisk
*--------------------------------------*-------------------------------*
_______________________________________________
darwin-kernel mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/darwin-kernel
Do not post admin requests to the list. They will be ignored.