OSDN Git Service

* config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust
authorAndreas Schwab <schwab@linux-m68k.org>
Wed, 13 Feb 2002 11:17:48 +0000 (11:17 +0000)
committerAndreas Schwab <schwab@linux-m68k.org>
Wed, 13 Feb 2002 11:17:48 +0000 (11:17 +0000)
pc-relative relocations to merge sections in 64-bit mode.

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

index 27faf64..80f907e 100644 (file)
@@ -1,3 +1,8 @@
+2002-02-13  Andreas Schwab  <schwab@suse.de>
+
+       * config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust
+       pc-relative relocations to merge sections in 64-bit mode.
+
 2002-02-13  Ben Elliston  <bje@redhat.com>
 
        * NEWS: Document floating point number handling in gasp.
index cce25d8..8752390 100644 (file)
@@ -1178,7 +1178,12 @@ tc_i386_fix_adjustable (fixP)
   /* Prevent all adjustments to global symbols, or else dynamic
      linking will not work correctly.  */
   if (S_IS_EXTERNAL (fixP->fx_addsy)
-      || S_IS_WEAK (fixP->fx_addsy))
+      || S_IS_WEAK (fixP->fx_addsy)
+      /* Don't adjust pc-relative references to merge sections in 64-bit
+        mode.  */
+      || (use_rela_relocations
+         && (S_GET_SEGMENT (fixP->fx_addsy)->flags & SEC_MERGE) != 0
+         && fixP->fx_pcrel))
     return 0;
 #endif
   /* adjust_reloc_syms doesn't know about the GOT.  */