Reduce the size of s390 symbol tables by allowing relocations in mergeable string...
authorNick Clifton <nickc@redhat.com>
Fri, 31 Mar 2017 11:54:38 +0000 (12:54 +0100)
committerNick Clifton <nickc@redhat.com>
Fri, 31 Mar 2017 11:54:38 +0000 (12:54 +0100)
PR gas/21333
* config/tc-s390.c (tc_s390_fix_adjustable): Allow non pc-relative
fixups in mergeable sections to be adjusted.

gas/ChangeLog
gas/config/tc-s390.c

index a5c1d08..10785d4 100644 (file)
@@ -1,3 +1,9 @@
+2017-03-31  Nick Clifton  <nickc@redhat.com>
+
+       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  <pipcet@gmail.com>
 
        * config/tc-wasm32.h: New file: Add WebAssembly assembler target.
index 35cee61..40c9f6f 100644 (file)
@@ -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