aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-i386.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 27faf64..80f907e 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index cce25d8..8752390 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -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. */