diff options
author | Maciej W. Rozycki <macro@linux-mips.org> | 2013-05-29 16:22:14 +0000 |
---|---|---|
committer | Maciej W. Rozycki <macro@linux-mips.org> | 2013-05-29 16:22:14 +0000 |
commit | d6101ac20076846ff5092444691d502fd689c886 (patch) | |
tree | bc8ed8a04d7189c55c1d9b6b3966300002064ba8 /gas/write.c | |
parent | 95e34fb4f43f5cc57c48d4799c5c59d7dcf6c2a2 (diff) | |
download | gdb-d6101ac20076846ff5092444691d502fd689c886.zip gdb-d6101ac20076846ff5092444691d502fd689c886.tar.gz gdb-d6101ac20076846ff5092444691d502fd689c886.tar.bz2 |
gas/
* write.c (resolve_reloc_expr_symbols): On REL targets don't
convert relocs who have no relocatable field either. Rephrase
the conditional so that the PC-relative check is only applied
for REL targets.
gas/testsuite/
* gas/mips/jalr3.d: New test.
* gas/mips/jalr3-n32.d: New test.
* gas/mips/jalr3-n64.d: New test.
* gas/mips/jalr3.s: New test source.
* gas/mips/mips.exp: Run the new tests.
ld/testsuite/
* ld-mips-elf/jalr3.dd: New test.
* ld-mips-elf/jalr3.ld: New test linker script.
* ld-mips-elf/mips-elf.exp: Run the new test.
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 |