From 98b1d9b2fa29f9d07a796a21e99dff060b8fac8d Mon Sep 17 00:00:00 2001 From: Kai Tietz Date: Wed, 7 Mar 2012 10:35:15 +0100 Subject: [PATCH] invoke.texi (fwritable-relocated-rdata): Document new Cygwin/MinGW target option. * doc/invoke.texi (fwritable-relocated-rdata): Document new Cygwin/MinGW target option. * config/i386/winnt.c (i386_pe_unique_section): Ignore reloc if flag -fwritable-relocated-rdata is not set. (i386_pe_section_type_flags): Likewise. * config/i386/cygming.opt (fwritable-relocated-rdata): Add new flag variable flag_writable_rel_rdata. From-SVN: r185027 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/i386/cygming.opt | 4 ++++ gcc/config/i386/winnt.c | 8 ++++++++ gcc/doc/invoke.texi | 7 +++++++ 4 files changed, 29 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c98c983e21d..b38b16d78ea 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2012-03-07 Kai Tietz + + * doc/invoke.texi (fwritable-relocated-rdata): Document + new Cygwin/MinGW target option. + * config/i386/winnt.c (i386_pe_unique_section): Ignore + reloc if flag -fwritable-relocated-rdata is not set. + (i386_pe_section_type_flags): Likewise. + * config/i386/cygming.opt (fwritable-relocated-rdata): + Add new flag variable flag_writable_rel_rdata. + 2012-03-07 Richard Guenther * tree-ssa-math-opts.c (convert_mult_to_widen): Check actual diff --git a/gcc/config/i386/cygming.opt b/gcc/config/i386/cygming.opt index 2d235237039..bcee9d4dc91 100644 --- a/gcc/config/i386/cygming.opt +++ b/gcc/config/i386/cygming.opt @@ -53,4 +53,8 @@ Compile code that relies on Cygwin DLL wrappers to support C++ operator new/dele posix Driver +fwritable-relocated-rdata +Common Report Var(flag_writable_rel_rdata) Init(0) +Put relocated read-only data into .data section. + ; Retain blank line above diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c index 79cbb6b4a28..c1ed1c04369 100644 --- a/gcc/config/i386/winnt.c +++ b/gcc/config/i386/winnt.c @@ -395,6 +395,10 @@ i386_pe_unique_section (tree decl, int reloc) const char *name, *prefix; char *string; + /* Ignore RELOC, if we are allowed to put relocated + const data into read-only section. */ + if (!flag_writable_rel_rdata) + reloc = 0; name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); name = i386_pe_strip_name_encoding_full (name); @@ -441,6 +445,10 @@ i386_pe_section_type_flags (tree decl, const char *name, int reloc) unsigned int flags; unsigned int **slot; + /* Ignore RELOC, if we are allowed to put relocated + const data into read-only section. */ + if (!flag_writable_rel_rdata) + reloc = 0; /* The names we put in the hashtable will always be the unique versions given to us by the stringtable, so we can just use their addresses as the keys. */ diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index d10156b1292..969fcbe594b 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -14014,6 +14014,13 @@ set. This is necessary for binaries running in kernel mode of Microsoft Windows, as there the User32 API, which is used to set executable privileges, isn't available. +@item -fwritable-relocated-rdata +@opindex fno-writable-relocated-rdata +This option is available for MinGW and Cygwin targets. It specifies +that relocated-data in read-only section is put into .data +section. This is a necessary for older runtimes not supporting +modification of .rdata sections for pseudo-relocation. + @item -mpe-aligned-commons @opindex mpe-aligned-commons This option is available for Cygwin and MinGW targets. It -- 2.30.2