This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch mingw/cygwin]: Allow relocated const data to be put in read-only section by default


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 <ktietz70@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 ?<ktietz@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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]