diff options
author | Kai Tietz <kai.tietz@onevision.com> | 2009-10-27 17:14:47 +0000 |
---|---|---|
committer | Kai Tietz <ktietz@gcc.gnu.org> | 2009-10-27 18:14:47 +0100 |
commit | 41ca8d08460314d305c79140abef6c9587b9b446 (patch) | |
tree | 533c525e054265aa03544fa40b7a4795744eb7c0 /gcc | |
parent | 2c9062e2c161350768abb05284a6e334f9261145 (diff) | |
download | gcc-41ca8d08460314d305c79140abef6c9587b9b446.zip gcc-41ca8d08460314d305c79140abef6c9587b9b446.tar.gz gcc-41ca8d08460314d305c79140abef6c9587b9b446.tar.bz2 |
mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
2009-10-27 Kai Tietz <kai.tietz@onevision.com>
PR/41799
* config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
* config/i386/mingw.opt: Add fset-stack-executable.
* config/i386/i386.c (ix86_trampoline_init): Make call to
emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
defined and its value is not zero.
* doc/invoke.texi
From-SVN: r153606
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 3 | ||||
-rw-r--r-- | gcc/config/i386/mingw.opt | 4 | ||||
-rw-r--r-- | gcc/config/i386/mingw32.h | 2 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 11 |
5 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5a0bdb2..42707f8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2009-10-27 Kai Tietz <kai.tietz@onevision.com> + + PR/41799 + * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro. + * config/i386/mingw.opt: Add fset-stack-executable. + * config/i386/i386.c (ix86_trampoline_init): Make call to + emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is + defined and its value is not zero. + * doc/invoke.texi + 2009-10-27 Richard Guenther <rguenther@suse.de> * tree-ssa-structalias.c (find_func_aliases): In IPA mode diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 6065f49..a4e51af 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -20042,6 +20042,9 @@ ix86_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value) } #ifdef ENABLE_EXECUTE_STACK +#ifdef CHECK_EXECUTE_STACK_ENABLED + if (CHECK_EXECUTE_STACK_ENABLED) +#endif emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"), LCT_NORMAL, VOIDmode, 1, XEXP (m_tramp, 0), Pmode); #endif diff --git a/gcc/config/i386/mingw.opt b/gcc/config/i386/mingw.opt index 6be904e..bd9a4b6 100644 --- a/gcc/config/i386/mingw.opt +++ b/gcc/config/i386/mingw.opt @@ -21,3 +21,7 @@ Wpedantic-ms-format C ObjC C++ ObjC++ Var(warn_pedantic_ms_format) Init(1) Warning Warn about none ISO msvcrt scanf/printf width extensions + +fset-stack-executable +Common Report Var(flag_setstackexecutable) Init(1) Optimization +For nested functions on stack executable permission is set. diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h index 9dcc5ba..4f8b101 100644 --- a/gcc/config/i386/mingw32.h +++ b/gcc/config/i386/mingw32.h @@ -202,6 +202,8 @@ __enable_execute_stack (void *addr) \ #undef ENABLE_EXECUTE_STACK #define ENABLE_EXECUTE_STACK MINGW_ENABLE_EXECUTE_STACK +#undef CHECK_EXECUTE_STACK_ENABLED +#define CHECK_EXECUTE_STACK_ENABLED flag_setstackexecutable #ifdef IN_LIBGCC2 #include <windows.h> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 4a9ffbf..60f67c7 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -877,7 +877,8 @@ See i386 and x86-64 Options. @emph{i386 and x86-64 Windows Options} @gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll --mnop-fun-dllimport -mthread -municode -mwin32 -mwindows} +-mnop-fun-dllimport -mthread -municode -mwin32 -mwindows +-fno-set-stack-executable} @emph{Xstormy16 Options} @gccoptlist{-msim} @@ -16704,6 +16705,14 @@ specifies that a GUI application is to be generated by instructing the linker to set the PE header subsystem type appropriately. +@item -fno-set-stack-executable +@opindex fno-set-stack-executable +This option is available for MinGW targets. It specifies that +the executable flag for stack used by nested functions isn't +set. This is necessary for binaries running in kernel mode of +Windows, as there the user32 API, which is used to set executable +privileges, isn't available. + @item -mpe-aligned-commons @opindex mpe-aligned-commons This option is available for Cygwin and MinGW targets. It |