* 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 27faf64e1682b9435bd334d2ee72b630b6880d35..80f907e17aa6ae35e61fd77788f1b49e6befd37d 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 cce25d8b3328c1ac260aaf1eaf3a3d3516d1882e..8752390922b860340ccc177bec6b0ee702d131cb 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.  */