The trampolines generated by GCC for code like
foo()
{
eeks()
{
...
}
yuck(eeks);
}
or for certain objective C constructs assume that the stack frame is
executable. Trampolines are being used in the GNU libc and it's dynamic
linker, so it's a really bad idea to make the stack non-executable.
If you really want to make the stack non-executable see the documentation
for mprotect(2).
Btw, performancewise trampolines really suck on architecture that have to
maintain their I/D-cache consistence in software like 68k or MIPS. Even
Intel from Pentium on get a performance hit so better don't use them.
Ralf