From: ktietz Date: Wed, 7 Mar 2012 09:35:15 +0000 (+0000) Subject: * doc/invoke.texi (fwritable-relocated-rdata): Document X-Git-Tag: upstream/4.9.2~13942 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4bc312c57571c765b72ab320f870147495427db1;p=platform%2Fupstream%2Flinaro-gcc.git * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185027 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c98c983..b38b16d 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 2d23523..bcee9d4 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 79cbb6b..c1ed1c0 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 d10156b..969fcbe 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