hi folks,
I checked in the support for non-executable mappings that I talked about
a couple months back. many thanks to the openbsd guys for the head-start
on this that I got from their code.
several ports still need work done to support this: amd64 hppa sh5.
of these, I only have the hardware for hppa, but the port is currently
languishing in the pre-LWP era, so it doesn't build. I'm looking into
reviving it, but that will likely take a fair bit of work. if anyone
wants to send me some hardware for either of the others, that would be
fabulous.
for the other ports that are not listed as either working or not-implemented,
the hardware doesn't allow for non-executable mappings. c'est la vie.
there are still a bunch of improvements to be made. right now, several
of the ports (alpha, sparc, maybe others) have the .data ELF section
marked executable, which I believe is due to GOT and PLT issues.
though on the alpha, even static binaries have the .data section
marked executable, so I'm not sure what's going on there. powerpc/oea
can only do non-executable stuff on a segment (ie. 256MB) granularity,
so ideally we'd re-jigger the toolchain and runtime linker to put
all the executable stuff in segment 0 and everything else elsewhere.
openbsd has addressed many of these issues in their tree, but I'd
rather wait until the toolchain upgrade is complete before looking
at any toolchain issues. and really, the toolchain isn't so much
my favorite area, so if someone else wants to continue with that
side of things, that would be great. don't everyone speak up at once...
-Chuck