aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-i386.c
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@linux-m68k.org>2002-02-13 11:17:48 +0000
committerAndreas Schwab <schwab@linux-m68k.org>2002-02-13 11:17:48 +0000
commit3bf057fadc5fa2788165c886c8544f1539cb89b1 (patch)
tree6f3b6b5f210e29ce3bbe641039246ad21f304154 /gas/config/tc-i386.c
parentbf36db1824820273d5766b88bdcd75bd51e05f08 (diff)
downloadgdb-3bf057fadc5fa2788165c886c8544f1539cb89b1.zip
gdb-3bf057fadc5fa2788165c886c8544f1539cb89b1.tar.gz
gdb-3bf057fadc5fa2788165c886c8544f1539cb89b1.tar.bz2
* config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust
pc-relative relocations to merge sections in 64-bit mode.
Diffstat (limited to 'gas/config/tc-i386.c')
-rw-r--r--gas/config/tc-i386.c7
1 files changed, 6 insertions, 1 deletions
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. */