From: Andreas Schwab Date: Wed, 13 Feb 2002 11:20:35 +0000 (+0000) Subject: * config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust X-Git-Tag: binutils-2_12~63 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ea9471ce1b969f816555f8df3e2713e64aad5c30;p=thirdparty%2Fbinutils-gdb.git * config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust pc-relative relocations to merge sections in 64-bit mode. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index c92e7a7d4a2..6b46b1647be 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2002-02-13 Andreas Schwab + + * config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust + pc-relative relocations to merge sections in 64-bit mode. + 2002-02-12 Alexandre Oliva * config/tc-mn10300.c (other_registers): Added `epsw'. Mark `pc' diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 650621feeb2..85c13f279a8 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -1,6 +1,6 @@ /* i386.c -- Assemble code for the Intel 80386 Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -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. */