Hello, this patch makes sure that for pe(+)-coff targets always relocations are allowed in readonly memory. This fixes for x86_64-w64-mingw32 target some testcases.
ChangeLog 2012-06-27 Kai Tietz * config/i386/winnt.c (i386_pe_reloc_rw_mask): New function. * config/i386/i386-protos.h (i386_pe_reloc_rw_mask): Add prototype. * config/i386/cygming.h (TARGET_ASM_RELOC_RW_MASK): Define as i386_pe_reloc_rw_mask. Tested for i686-pc-cygwin, i686-w64-mingw32, and x86_64-w64-mingw32. Ok for apply? Regards, Kai Index: config/i386/winnt.c =================================================================== --- config/i386/winnt.c (revision 189009) +++ config/i386/winnt.c (working copy) @@ -421,6 +421,14 @@ DECL_SECTION_NAME (decl) = build_string (len, string); } +/* Local and global relocs can be placed always into readonly memory for + memory for PE-COFF targets. */ +int +i386_pe_reloc_rw_mask (void) +{ + return 0; +} + /* Select a set of attributes for section NAME based on the properties of DECL and whether or not RELOC indicates that DECL's initializer might contain runtime relocations. Index: config/i386/i386-protos.h =================================================================== --- config/i386/i386-protos.h (revision 189009) +++ config/i386/i386-protos.h (working copy) @@ -264,6 +264,8 @@ extern bool i386_pe_type_dllimport_p (tree); extern bool i386_pe_type_dllexport_p (tree); +extern int i386_pe_reloc_rw_mask (void); + extern rtx maybe_get_pool_constant (rtx); extern char internal_label_prefix[16]; Index: config/i386/cygming.h =================================================================== --- config/i386/cygming.h (revision 189009) +++ config/i386/cygming.h (working copy) @@ -225,6 +225,11 @@ #define SUBTARGET_ENCODE_SECTION_INFO i386_pe_encode_section_info +/* Local and global relocs can be placed always into readonly memory + for PE-COFF targets. */ +#undef TARGET_ASM_RELOC_RW_MASK +#define TARGET_ASM_RELOC_RW_MASK i386_pe_reloc_rw_mask + /* Output a common block. */ #undef ASM_OUTPUT_ALIGNED_DECL_COMMON #define ASM_OUTPUT_ALIGNED_DECL_COMMON \