diff options
Diffstat (limited to 'gas/write.c')
-rw-r--r-- | gas/write.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gas/write.c b/gas/write.c index 22e68c5..745abe6 100644 --- a/gas/write.c +++ b/gas/write.c @@ -722,9 +722,10 @@ resolve_reloc_expr_symbols (void) unless it has enough bits to cover the whole address space. */ if (S_IS_LOCAL (sym) && !symbol_section_p (sym) - && !(howto->partial_inplace - && howto->pc_relative - && howto->src_mask != addr_mask)) + && (sec->use_rela_p + || (howto->partial_inplace + && (!howto->pc_relative + || howto->src_mask == addr_mask)))) { asection *symsec = S_GET_SEGMENT (sym); if (!(((symsec->flags & SEC_MERGE) != 0 |