From dc1e4d6dedcb8ee3bb195f0db711f6aa164b8ab4 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 31 Mar 2017 12:54:38 +0100 Subject: [PATCH] Reduce the size of s390 symbol tables by allowing relocations in mergeable string sections (eg .debug_str) to be made section relative rather than symbol relative. PR gas/21333 * config/tc-s390.c (tc_s390_fix_adjustable): Allow non pc-relative fixups in mergeable sections to be adjusted. --- gas/ChangeLog | 6 ++++++ gas/config/tc-s390.c | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index a5c1d08351..10785d4de6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2017-03-31 Nick Clifton + + PR gas/21333 + * config/tc-s390.c (tc_s390_fix_adjustable): Allow non pc-relative + fixups in mergeable sections to be adjusted. + 2017-03-30 Pip Cet * config/tc-wasm32.h: New file: Add WebAssembly assembler target. diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c index 35cee61cfa..40c9f6f88e 100644 --- a/gas/config/tc-s390.c +++ b/gas/config/tc-s390.c @@ -2133,9 +2133,11 @@ md_pcrel_from_section (fixS *fixp, segT sec ATTRIBUTE_UNUSED) int tc_s390_fix_adjustable (fixS *fixP) { - /* Don't adjust references to merge sections. */ - if ((S_GET_SEGMENT (fixP->fx_addsy)->flags & SEC_MERGE) != 0) + /* Don't adjust pc-relative references to merge sections. */ + if (fixP->fx_pcrel + && (S_GET_SEGMENT (fixP->fx_addsy)->flags & SEC_MERGE) != 0) return 0; + /* adjust_reloc_syms doesn't know about the GOT. */ if ( fixP->fx_r_type == BFD_RELOC_16_GOTOFF || fixP->fx_r_type == BFD_RELOC_32_GOTOFF -- 2.34.1