From b929b47014eb64cfc5d9ed3539fc7ef80134211e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marcin=20Ko=C5=9Bcielnicki?= Date: Thu, 21 Jan 2016 09:45:42 +0000 Subject: [PATCH] S/390: Use proper read-only data section for literals. Previously, .rodata was hardcoded. For C++ vague linkage functions, this resulted in needlessly duplicated literals. With the new split stack support, this resulted in link errors, due to .rodata containing relocations to the discarded text sections. gcc/ChangeLog: * config/s390/s390.md (pool_section_start): Use switch_to_section to select proper read-only data section instead of hardcoding .rodata. (pool_section_end): Use switch_to_section to match the above. From-SVN: r232667 --- gcc/ChangeLog | 7 +++++++ gcc/config/s390/s390.md | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dae468c7930..2ea6938f4d6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-01-21 Marcin Kościelnicki + + * config/s390/s390.md (pool_section_start): Use switch_to_section + to select proper read-only data section instead of hardcoding + .rodata. + (pool_section_end): Use switch_to_section to match the above. + 2016-01-21 Richard Biener PR tree-optimization/69378 diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 3e340c35030..9b869d566a3 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -10247,13 +10247,20 @@ (define_insn "pool_section_start" [(unspec_volatile [(const_int 1)] UNSPECV_POOL_SECTION)] "" - ".section\t.rodata" +{ + switch_to_section (targetm.asm_out.function_rodata_section + (current_function_decl)); + return ""; +} [(set_attr "length" "0")]) (define_insn "pool_section_end" [(unspec_volatile [(const_int 0)] UNSPECV_POOL_SECTION)] "" - ".previous" +{ + switch_to_section (current_function_section ()); + return ""; +} [(set_attr "length" "0")]) (define_insn "main_base_31_small" -- 2.30.2