The assembler files in stock X and Mesa, do not use GNU stacks on
Linux systems, which means they will not work properly with
exec-shield. I fixed this problem in XFree86 4.3.0 by writing the
XFree86-4.3.0-redhat-exec-shield-GNU-stack.patch patch, which
patched every assembler file to include .note.GNU-stack sections.
While that is considered a cleaner solution, my patch was non-portable
to non-GNU systems, so unsuitable for upstream acceptance as-was. The
patch was disabled for X.org due to failure to apply, and didn't get
ported forward yet.
Nobody's noticed that X doesn't work with exec-shield aparently until
Jakub suggested an alternate solution of passing the assembler
"-Wa,--noexecstack", which is a simpler workaround for now instead
of porting patches each release or spending time to make sure the
patch works on every OS in existance.
Modified AsCmd as follows in 6.7.0-2
-#define AsCmd CcCmd -c -x assembler
+#define AsCmd CcCmd -c -x assembler -Wa,--noexecstack