Hi, as from Dave's side there is no objection, I committed this patch to 4.8 at revision 185027.
Regards, Kai 2012/3/3 Kai Tietz <ktiet...@googlemail.com>: > Hi, > > this patch allows that relocated const data is placed into .rdata. To provide > old behavior for older runtimes not supporting pseudo-relocation operating on > read-only sections, the option -fwritable-relocated-rdata can be used. > > ChangeLog > > 2012-03-03 Kai Tietz <kti...@redhat.com> > > * 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. > > Tested for i686-w64-mingw32, x86_64-w64-mingw32, and i686-pc-cygwin. > Ok for apply? > > Regards, > Kai > > Index: doc/invoke.texi > =================================================================== > --- doc/invoke.texi (revision 184760) > +++ doc/invoke.texi (working copy) > @@ -13826,6 +13826,13 @@ > 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 > Index: config/i386/winnt.c > =================================================================== > --- config/i386/winnt.c (revision 184760) > +++ config/i386/winnt.c (working copy) > @@ -395,6 +395,10 @@ > 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 @@ > 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. */ > Index: config/i386/cygming.opt > =================================================================== > --- config/i386/cygming.opt (revision 184760) > +++ config/i386/cygming.opt (working copy) > @@ -53,4 +53,8 @@ > 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 -- | (\_/) This is Bunny. Copy and paste | (='.'=) Bunny into your signature to help | (")_(") him gain world domination