cvs commit: src/contrib/gcc protector.c protector.h Makefile.in calls.c combine.c cse.c explow.c expr.c flags.h function.c gcse.c integrate.c libgcc2.c loop.c optabs.c reload1.c toplev.c src/gnu/usr.bin/cc/cc_int Makefile
Max Laier
max at love2party.net
Fri Dec 12 06:46:58 PST 2003
Richard Coleman wrote:
Matthew Dillon wrote:
I don't know who comes up with these names. W^X? IA32 does not
support
fine-grained permissions, the only way to make the stack
non-executable
is to modify the SS segment register and while this does work, it
creates
severe restrictions on how threaded programs can operate.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
Yes, but OpenBSD supports other archs besides IA32. I think it was IA32
and PowerPC that didn't have the bits necessary to do W^X properly. So
the OpenBSD folks did the best they could with the bits that were
provided. I think it's pretty exciting stuff.
from http://www.openbsd.org/papers/csw03.mgp:
>> i386 PROT_EXEC best-effort
>>
>> i386 lacks per-page X bit
>>
>> Only significant relevant hardware feature:
>> code segment limit
>> 3.2/3.3: points below bottom of stack -> no-exec stack
>>
>> Link each shared object to have 1GB gap between code & data
>>
>> Map all text segments low, all data segments 1GB higher
>>
>> Set code segment limit register to point up to highest PROT_EXEC page
>> (floating CS limit)
>> Normally somewhere below 1GB
>>
>> Will be in 3.4: W^X on i386
>>
>> Changing CS limit is a bit expensive: slight overhead
--
Best regards, | max at xxxxxxxxxxxxxx
Max Laier | ICQ #67774661
http://pf4freebsd.love2party.net/ | mlaier at EFnet #DragonFlyBSD
More information about the Commits
mailing list