From: H.J. Lu Date: Mon, 30 Sep 2002 06:32:00 +0000 (+0000) Subject: 2002-09-29 H.J. Lu X-Git-Tag: drow-cplus-branchpoint~81 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7a49a8c2b494a6e398ab861ba31564d0bd854f68;p=thirdparty%2Fbinutils-gdb.git 2002-09-29 H.J. Lu * config/tc-mips.c (md_apply_fix3): Subtract the symbol value twice if howto->pcrel_offset is true. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index cf754ab3a6f..13ed1e8545a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2002-09-29 H.J. Lu + + * config/tc-mips.c (md_apply_fix3): Subtract the symbol value + twice if howto->pcrel_offset is true. + 2002-09-28 Matt Thomas Jason Thorpe diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 6d0c13f3d26..7c8be079a60 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -10754,11 +10754,23 @@ md_apply_fix3 (fixP, valP, seg) value -= symval; howto = bfd_reloc_type_lookup (stdoutput, fixP->fx_r_type); - if (value != 0 && howto->partial_inplace && ! fixP->fx_pcrel) + if (value != 0 && howto->partial_inplace + && (! fixP->fx_pcrel || howto->pcrel_offset)) { /* In this case, the bfd_install_relocation routine will incorrectly add the symbol value back in. We just want - the addend to appear in the object file. */ + the addend to appear in the object file. + + howto->pcrel_offset is added for R_MIPS_PC16, which is + generated for code like + + globl g1 .text + .text + .space 20 + g1: + x: + bal g1 + */ value -= symval; /* Make sure the addend is still non-zero. If it became zero