2002-09-29 H.J. Lu <hjl@gnu.org>
* config/tc-mips.c (md_apply_fix3): Subtract the symbol value twice if howto->pcrel_offset is true.
This commit is contained in:
parent
b1e61c4bf3
commit
7a49a8c2b4
2 changed files with 19 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
2002-09-29 H.J. Lu <hjl@gnu.org>
|
||||
|
||||
* config/tc-mips.c (md_apply_fix3): Subtract the symbol value
|
||||
twice if howto->pcrel_offset is true.
|
||||
|
||||
2002-09-28 Matt Thomas <matt@3am-software.com>
|
||||
Jason Thorpe <thorpej@wasabisystems.com>
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue