diff options
Diffstat (limited to 'gas/config/tc-v850.c')
-rw-r--r-- | gas/config/tc-v850.c | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/gas/config/tc-v850.c b/gas/config/tc-v850.c index aa789b3dc2..b3c45a033e 100644 --- a/gas/config/tc-v850.c +++ b/gas/config/tc-v850.c @@ -2457,14 +2457,6 @@ v850_fix_adjustable (fixP) if (fixP->fx_addsy == NULL) return 1; - /* Prevent all adjustments to global symbols. */ - if (S_IS_EXTERN (fixP->fx_addsy)) - return 0; - - /* Similarly for weak symbols. */ - if (S_IS_WEAK (fixP->fx_addsy)) - return 0; - /* Don't adjust function names. */ if (S_IS_FUNCTION (fixP->fx_addsy)) return 0; @@ -2481,24 +2473,21 @@ int v850_force_relocation (fixP) struct fix *fixP; { - if (fixP->fx_addsy && S_IS_WEAK (fixP->fx_addsy)) - return 1; - if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY) return 1; - if ( fixP->fx_r_type == BFD_RELOC_V850_LONGCALL + if (fixP->fx_r_type == BFD_RELOC_V850_LONGCALL || fixP->fx_r_type == BFD_RELOC_V850_LONGJUMP) return 1; if (v850_relax && (fixP->fx_pcrel - || fixP->fx_r_type == BFD_RELOC_V850_ALIGN - || fixP->fx_r_type == BFD_RELOC_V850_22_PCREL - || fixP->fx_r_type == BFD_RELOC_V850_9_PCREL - || fixP->fx_r_type >= BFD_RELOC_UNUSED)) + || fixP->fx_r_type == BFD_RELOC_V850_ALIGN + || fixP->fx_r_type == BFD_RELOC_V850_22_PCREL + || fixP->fx_r_type == BFD_RELOC_V850_9_PCREL + || fixP->fx_r_type >= BFD_RELOC_UNUSED)) return 1; - return 0; + return S_FORCE_RELOC (fixP->fx_addsy); } |