summaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorH.J. Lu <hjl@lucon.org>2003-05-06 00:28:25 +0000
committerH.J. Lu <hjl@lucon.org>2003-05-06 00:28:25 +0000
commitff410549c23e5fbf69a4a0f7262843b5c61b8b15 (patch)
tree68b891d0a0b20c026607ddb182d2485096802255 /gas
parent41068882c1fafa1cc8016274912f727687665f6d (diff)
downloadbinutils-redhat-ff410549c23e5fbf69a4a0f7262843b5c61b8b15.tar.gz
2003-05-05 H.J. Lu <hjl@gnu.org>
* config/tc-mips.c (tc_gen_reloc): Add addend just once if howto->partial_inplace is false.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-mips.c10
2 files changed, 14 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 0b23d58c3c..f5ea030db4 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2003-05-05 H.J. Lu <hjl@gnu.org>
+
+ * config/tc-mips.c (tc_gen_reloc): Add addend just once if
+ howto->partial_inplace is false.
+
2003-05-05 Daniel Jacobowitz <drow@mvista.com>
* config/tc-mips.c (mips_need_elf_addend_fixup): Remove
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 59f0b3d404..1c5602f18a 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -13940,7 +13940,15 @@ tc_gen_reloc (section, fixp)
&& (code == BFD_RELOC_GPREL16 || code == BFD_RELOC_MIPS16_GPREL)
&& reloc->addend != 0
&& mips_need_elf_addend_fixup (fixp))
- reloc->addend += S_GET_VALUE (fixp->fx_addsy);
+ {
+ /* If howto->partial_inplace is false, md_apply_fix3 will only
+ subtract it once. */
+ reloc_howto_type *howto;
+
+ howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
+ if (howto->partial_inplace)
+ reloc->addend += S_GET_VALUE (fixp->fx_addsy);
+ }
#endif
/* To support a PC relative reloc when generating embedded PIC code