diff --git a/gcc/ChangeLog b/gcc/ChangeLog index af448939d3edd8096534a7db43a8d3fb20fb6fc7..05949d1777c7a1772523f9e0e2a9c4d7774c2198 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 890a09674dd82fa419448a204146f56487e4fad6..200569ed09065d4d049ee7603641e35fdaa0818b 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