Subject: Re: 2.0RC4: defeating non-exec stack
To: der Mouse <mouse@Rodents.Montreal.QC.CA>
From: None <itojun@iijlab.net>
List: tech-kern
Date: 11/09/2004 08:07:57
>At $DAYJOB, I'm working with a box with a "hardware" (firmware, really)
>RAID array a bit over 1TB.  1.6.2 can't handle that; 2.0_RC4 (the most
>recent i386 kernel I found on ftp.netbsd.org) can.
>
>So I was booting the 2.0_RC4 kernel with a fully 1.6.2 userland.  And
>one of my tools started coredumping on me.  On investigation, this
>proves to happen exactly when it tries to enter the stack trampoline
>that implements a nested function.
>
>Now, I think I understand why non-executable stack is seen as a good
>thing.  And presumably the 2.0RC4 compiler does whatever tapdancing is
>necessary to make nested functions work.  But this breaking of backward
>compatability is a problem.  How do I disable this misfeature so I can
>run my 1.6.2 executables?  I did a little sysctl -a | grep searching
>and found nothing; perhaps I just didn't try the right grep pattern -
>or perhaps it's that I was using the 1.6.2 sysctl, though a machine I
>can get a shell on running 2.0_BETA didn't have anything
>helpful-looking in its sysctl -a output.
>
>Note that I don't have a 2.0 build environment, so anything that
>involves recompiling (eg) the kernel is not workable.  The kernel is
>the GENERIC_DIAGNOSTIC kernel from
>/pub/NetBSD-daily/netbsd-2-0/200410160000/i386 on ftp.netbsd.org.

	COMPAT_16?  see src/UPDATING 20030906.

itojun