summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2005-03-21 16:22:55 +0000
committerMaciej W. Rozycki <macro@linux-mips.org>2005-03-21 16:22:55 +0000
commit6f42583c190b78574b02889deaa329f316cc8bd7 (patch)
tree71c10dcaeef493ec245eaea75c0f626bead11796
parent623a92785f4c103a34be1bcf7bc1cc34be0958fd (diff)
downloadbinutils-redhat-6f42583c190b78574b02889deaa329f316cc8bd7.tar.gz
* config/tc-mips.c (mips_frob_file): Sort BFD_RELOC_MIPS16_LO16
relocations correctly as well. (mips_fix_adjustable): Don't make BFD_RELOC_MIPS16_LO16 relocations in mergeable sections section-relative either.
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/tc-mips.c7
2 files changed, 12 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 4b7f4ed27d..4ffd00627b 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2005-03-21 Maciej W. Rozycki <macro@mips.com>
+
+ * config/tc-mips.c (mips_frob_file): Sort BFD_RELOC_MIPS16_LO16
+ relocations correctly as well.
+ (mips_fix_adjustable): Don't make BFD_RELOC_MIPS16_LO16
+ relocations in mergeable sections section-relative either.
+
2005-03-21 Alan Modra <amodra@bigpond.net.au>
PR gas/780
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 84f58e3e9d..73eab2a885 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -10748,7 +10748,8 @@ mips_frob_file (void)
if (*pos == l->fixp)
hi_pos = pos;
- if ((*pos)->fx_r_type == BFD_RELOC_LO16
+ if (((*pos)->fx_r_type == BFD_RELOC_LO16
+ || (*pos)->fx_r_type == BFD_RELOC_MIPS16_LO16)
&& (*pos)->fx_addsy == l->fixp->fx_addsy
&& (*pos)->fx_offset >= l->fixp->fx_offset
&& (lo_pos == NULL
@@ -12689,7 +12690,9 @@ mips_fix_adjustable (fixS *fixp)
placed anywhere. Rather than break backwards compatibility by changing
this, it seems better not to force the issue, and instead keep the
original symbol. This will work with either linker behavior. */
- if ((fixp->fx_r_type == BFD_RELOC_LO16 || reloc_needs_lo_p (fixp->fx_r_type))
+ if ((fixp->fx_r_type == BFD_RELOC_LO16
+ || fixp->fx_r_type == BFD_RELOC_MIPS16_LO16
+ || reloc_needs_lo_p (fixp->fx_r_type))
&& HAVE_IN_PLACE_ADDENDS
&& (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_MERGE) != 0)
return 0;