aboutsummaryrefslogtreecommitdiff
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
commit460d93cc31143c3fadf056f707876b3bf8e18fb1 (patch)
tree92b10d01fd5c59a9ed1e9122d48dc98625be675b
parent7fb4ace8672af1ce9765ebbc2c21762bec30221d (diff)
downloadgdb-460d93cc31143c3fadf056f707876b3bf8e18fb1.zip
gdb-460d93cc31143c3fadf056f707876b3bf8e18fb1.tar.gz
gdb-460d93cc31143c3fadf056f707876b3bf8e18fb1.tar.bz2
* 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 4b7f4ed..4ffd006 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 84f58e3..73eab2a 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;