aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKai Tietz <kai.tietz@onevision.com>2008-04-08 09:38:15 +0000
committerKai Tietz <ktietz@gcc.gnu.org>2008-04-08 11:38:15 +0200
commit0b03b302ae4b9a2785e5011f5fa4c2c198a8eb4b (patch)
treef19957e71a88b16702e68fd82545ffe23884e346 /gcc
parent582be0a107e90be99658ff9d7b85b17430cbc864 (diff)
downloadgcc-0b03b302ae4b9a2785e5011f5fa4c2c198a8eb4b.zip
gcc-0b03b302ae4b9a2785e5011f5fa4c2c198a8eb4b.tar.gz
gcc-0b03b302ae4b9a2785e5011f5fa4c2c198a8eb4b.tar.bz2
Enable trampoline code for nx-protected stack Windows.
* config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New. (MINGW_ENABLE_EXECUTE_STACK): New. (IN_LIBGCC2): For libgcc include windows.h file for function declarations. From-SVN: r134089
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/mingw32.h21
2 files changed, 28 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index af44893..05949d1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2008-04-08 Kai Tietz <kai.tietz@onevision.com>
+
+ * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
+ (MINGW_ENABLE_EXECUTE_STACK): New.
+ (IN_LIBGCC2): For libgcc include windows.h file for
+ function declarations.
+
2008-04-08 Hans-Peter Nilsson <hp@axis.com>
* config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h
index 890a096..200569e 100644
--- a/gcc/config/i386/mingw32.h
+++ b/gcc/config/i386/mingw32.h
@@ -164,6 +164,27 @@ do { \
#undef TARGET_USE_JCR_SECTION
#define TARGET_USE_JCR_SECTION 1
+#undef MINGW_ENABLE_EXECUTE_STACK
+#define MINGW_ENABLE_EXECUTE_STACK \
+extern void __enable_execute_stack (void *); \
+void \
+__enable_execute_stack (void *addr) \
+{ \
+ MEMORY_BASIC_INFORMATION b; \
+ if (!VirtualQuery (addr, &b, sizeof(b))) \
+ abort (); \
+ VirtualProtect (b.BaseAddress, b.RegionSize, PAGE_EXECUTE_READWRITE, \
+ &b.Protect); \
+}
+
+#undef ENABLE_EXECUTE_STACK
+#define ENABLE_EXECUTE_STACK MINGW_ENABLE_EXECUTE_STACK
+
+
+#ifdef IN_LIBGCC2
+#include <windows.h>
+#endif
+
#if !TARGET_64BIT
#define MD_UNWIND_SUPPORT "config/i386/w32-unwind.h"
#endif