diff options
author | Kai Tietz <kai.tietz@onevision.com> | 2008-04-08 09:38:15 +0000 |
---|---|---|
committer | Kai Tietz <ktietz@gcc.gnu.org> | 2008-04-08 11:38:15 +0200 |
commit | 0b03b302ae4b9a2785e5011f5fa4c2c198a8eb4b (patch) | |
tree | f19957e71a88b16702e68fd82545ffe23884e346 /gcc | |
parent | 582be0a107e90be99658ff9d7b85b17430cbc864 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/mingw32.h | 21 |
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 |