aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-mips.c
diff options
context:
space:
mode:
Diffstat (limited to 'gas/config/tc-mips.c')
-rw-r--r--gas/config/tc-mips.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 82bd830..2e8be58 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -17165,9 +17165,9 @@ mips_fix_adjustable (fixS *fixp)
There is a further restriction:
5. We cannot reduce jump relocations (R_MIPS_26, R_MIPS16_26 or
- R_MICROMIPS_26_S1) against MIPS16 or microMIPS symbols on
- targets with in-place addends; the relocation field cannot
- encode the low bit.
+ R_MICROMIPS_26_S1) against MIPS16 or microMIPS symbols because
+ we need to keep the MIPS16 or microMIPS symbol for the purpose
+ of converting JAL to JALX instructions in the linker.
For simplicity, we deal with (3)-(4) by not reducing _any_ relocation
against a MIPS16 symbol. We deal with (5) by by not reducing any
@@ -17182,10 +17182,9 @@ mips_fix_adjustable (fixS *fixp)
that we have for MIPS16 symbols. */
if (fixp->fx_subsy == NULL
&& (ELF_ST_IS_MIPS16 (S_GET_OTHER (fixp->fx_addsy))
- || *symbol_get_tc (fixp->fx_addsy)
- || (HAVE_IN_PLACE_ADDENDS
- && ELF_ST_IS_MICROMIPS (S_GET_OTHER (fixp->fx_addsy))
- && jmp_reloc_p (fixp->fx_r_type))))
+ || (ELF_ST_IS_MICROMIPS (S_GET_OTHER (fixp->fx_addsy))
+ && jmp_reloc_p (fixp->fx_r_type))
+ || *symbol_get_tc (fixp->fx_addsy)))
return 0;
return 1;