MIPS: Convert cross-mode BAL to JALX
authorMaciej W. Rozycki <macro@imgtec.com>
Tue, 19 Jul 2016 15:19:19 +0000 (16:19 +0100)
committerMaciej W. Rozycki <macro@imgtec.com>
Tue, 19 Jul 2016 15:22:53 +0000 (16:22 +0100)
commita6ebf6169a1bd14724b9ac49990089542396f576
tree4b6f6a0e2fe8f81127178b480df5c7c9591eb8bd
parent9d862524f6ae9703fe8e264dd4785756d358570a
MIPS: Convert cross-mode BAL to JALX

Convert cross-mode regular MIPS and microMIPS BAL instructions to JALX,
similarly to how JAL instructions are converted.

bfd/
* elfxx-mips.c (mips_elf_perform_relocation): Convert cross-mode
BAL to JALX.
(_bfd_mips_elf_relocate_section) <bfd_reloc_outofrange>: Add a
corresponding error message.

gas/
* config/tc-mips.c (mips_force_relocation, mips_fix_adjustable):
Adjust comments for BAL to JALX linker conversion.
(fix_bad_cross_mode_branch_p): Accept cross-mode BAL.
* testsuite/gas/mips/unaligned-branch-1.l: Update error messages
expected.
* testsuite/gas/mips/unaligned-branch-micromips-1.l: Likewise.
* testsuite/gas/mips/branch-local-4.d: New test.
* testsuite/gas/mips/branch-local-n32-4.d: New test.
* testsuite/gas/mips/branch-local-n64-4.d: New test.
* testsuite/gas/mips/branch-addend.d: New test.
* testsuite/gas/mips/branch-addend-n32.d: New test.
* testsuite/gas/mips/branch-addend-n64.d: New test.
* testsuite/gas/mips/branch-local-4.s: New test source.
* testsuite/gas/mips/branch-addend.s: New test source.
* testsuite/gas/mips/mips.exp: Run the new tests.

ld/
* testsuite/ld-mips-elf/unaligned-branch-2.d: Update error
messages expected.
* testsuite/ld-mips-elf/unaligned-branch-r6-1.d: Likewise.
* testsuite/ld-mips-elf/unaligned-branch-mips16.d: Likewise.
* testsuite/ld-mips-elf/unaligned-branch-micromips.d: Likewise.
* testsuite/ld-mips-elf/bal-jalx-addend.d: New test.
* testsuite/ld-mips-elf/bal-jalx-local.d: New test.
* testsuite/ld-mips-elf/bal-jalx-pic.d: New test.
* testsuite/ld-mips-elf/bal-jalx-addend-n32.d: New test.
* testsuite/ld-mips-elf/bal-jalx-local-n32.d: New test.
* testsuite/ld-mips-elf/bal-jalx-pic-n32.d: New test.
* testsuite/ld-mips-elf/bal-jalx-addend-n64.d: New test.
* testsuite/ld-mips-elf/bal-jalx-local-n64.d: New test.
* testsuite/ld-mips-elf/bal-jalx-pic-n64.d: New test.
* testsuite/ld-mips-elf/unaligned-jalx-2.d: New test.
* testsuite/ld-mips-elf/unaligned-jalx-3.d: New test.
* testsuite/ld-mips-elf/unaligned-jalx-addend-2.d: New test.
* testsuite/ld-mips-elf/unaligned-jalx-addend-3.d: New test.
* testsuite/ld-mips-elf/unaligned-jalx-2.s: New test source.
* testsuite/ld-mips-elf/unaligned-jalx-3.s: New test source.
* testsuite/ld-mips-elf/unaligned-jalx-addend-2.s: New test
source.
* testsuite/ld-mips-elf/unaligned-jalx-addend-3.s: New test
source.
* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
38 files changed:
bfd/ChangeLog
bfd/elfxx-mips.c
gas/ChangeLog
gas/config/tc-mips.c
gas/testsuite/gas/mips/branch-addend-n32.d [new file with mode: 0644]
gas/testsuite/gas/mips/branch-addend-n64.d [new file with mode: 0644]
gas/testsuite/gas/mips/branch-addend.d [new file with mode: 0644]
gas/testsuite/gas/mips/branch-addend.s [new file with mode: 0644]
gas/testsuite/gas/mips/branch-local-4.d [new file with mode: 0644]
gas/testsuite/gas/mips/branch-local-4.s [new file with mode: 0644]
gas/testsuite/gas/mips/branch-local-n32-4.d [new file with mode: 0644]
gas/testsuite/gas/mips/branch-local-n64-4.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips.exp
gas/testsuite/gas/mips/unaligned-branch-1.l
gas/testsuite/gas/mips/unaligned-branch-micromips-1.l
ld/ChangeLog
ld/testsuite/ld-mips-elf/bal-jalx-addend-n32.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/bal-jalx-addend-n64.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/bal-jalx-addend.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/bal-jalx-local-n32.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/bal-jalx-local-n64.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/bal-jalx-local.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/bal-jalx-pic-n32.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/bal-jalx-pic-n64.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/bal-jalx-pic.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/mips-elf.exp
ld/testsuite/ld-mips-elf/unaligned-branch-2.d
ld/testsuite/ld-mips-elf/unaligned-branch-micromips.d
ld/testsuite/ld-mips-elf/unaligned-branch-mips16.d
ld/testsuite/ld-mips-elf/unaligned-branch-r6-1.d
ld/testsuite/ld-mips-elf/unaligned-jalx-2.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/unaligned-jalx-2.s [new file with mode: 0644]
ld/testsuite/ld-mips-elf/unaligned-jalx-3.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/unaligned-jalx-3.s [new file with mode: 0644]
ld/testsuite/ld-mips-elf/unaligned-jalx-addend-2.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/unaligned-jalx-addend-2.s [new file with mode: 0644]
ld/testsuite/ld-mips-elf/unaligned-jalx-addend-3.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/unaligned-jalx-addend-3.s [new file with mode: 0644]