Under Linux/ELF on i386 and x86-64, mark the stack nonexecutable.
authorTaylor R Campbell <campbell@mumble.net>
Sat, 17 Apr 2010 06:10:44 +0000 (02:10 -0400)
committerTaylor R Campbell <campbell@mumble.net>
Sat, 17 Apr 2010 06:10:44 +0000 (02:10 -0400)
This is apparently what a `.note.GNU-stack' section does.

src/microcode/cmpauxmd/i386.m4
src/microcode/cmpauxmd/x86-64.m4
src/microcode/configure.ac

index d7024e7ce327784c110715cea7835c216e331a14..c1c61e0d97acd49d7ab3c7a2dd15ceebd362e3e8 100644 (file)
@@ -1164,6 +1164,12 @@ asm_fixnum_rsh_overflow_negative:
 \f
 IFDASM(`end')
 
+# Mark the stack nonexecutable.  If we ever put code (e.g.,
+# dynamic-extent closure entry points) on the stack, this would have
+# to change.
+
+ifdef(`__linux__', `ifdef(`__ELF__', `.section .note.GNU-stack,"",%progbits')')
+
 ### Edwin Variables:
 ### comment-column: 56
 ### End:
index ee9fae39d21effcf02f54268d2a8c99d48f81a1b..5524b9a118f3bc2b56cf63538383d7ef39de3e86 100644 (file)
@@ -909,6 +909,12 @@ asm_fixnum_rsh_overflow_negative:
 \f
 IFDASM(`end')
 
+# Mark the stack nonexecutable.  If we ever put code (e.g.,
+# dynamic-extent closure entry points) on the stack, this would have
+# to change.
+
+ifdef(`__linux__', `ifdef(`__ELF__', `.section .note.GNU-stack,"",%progbits')')
+
 ### Edwin Variables:
 ### comment-column: 56
 ### comment-start: "#"
index 3f171d6e1411d21c0e5161d7bf7a1c9b6bf4f0e5..205b4e582f30404901d48ea3bb0ed30fd2e4ab66 100644 (file)
@@ -286,6 +286,7 @@ DO_GCC_TESTS=no
 GNU_LD=no
 case ${host_os} in
 linux-gnu)
+    M4_FLAGS="${M4_FLAGS} -P __linux__,1"
     DO_GCC_TESTS=yes
     GNU_LD=yes
     ;;
@@ -387,6 +388,7 @@ if test "${DO_GCC_TESTS}" = yes; then
        [
        AC_MSG_RESULT([yes])
        M4_FLAGS="${M4_FLAGS} -P SUPPRESS_LEADING_UNDERSCORE,1"
+       M4_FLAGS="${M4_FLAGS} -P __ELF__,1"
        ],
        [AC_MSG_RESULT([no])])
 fi