mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-21 04:42:53 +08:00
a6ebf6169a
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.
73 lines
4.1 KiB
Makefile
73 lines
4.1 KiB
Makefile
#name: MIPS16 link branch to unaligned symbol
|
|
#as: -EB -n32 -march=from-abi
|
|
#ld: -EB -Ttext 0x1c000000 -e 0x1c000000
|
|
#source: ../../../gas/testsuite/gas/mips/unaligned-branch-mips16-2.s
|
|
#error: \A[^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1002\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1008\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1008\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x100e\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x100e\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1014\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1014\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x101a\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1020\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1020\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1026\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1026\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x102c\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x102c\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1032\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x104a\): Branch to a non-instruction-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1056\): Branch to a non-instruction-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1062\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1068\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1068\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x106e\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x106e\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1074\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1074\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x107a\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1080\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1080\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1086\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1086\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x108c\): Cannot convert a branch to JALX for a non-word-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x108c\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x1092\): Unsupported branch between ISA modes\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x10aa\): Branch to a non-instruction-aligned address\n
|
|
#error: [^\n]*: In function `foo':\n
|
|
#error: \(\.text\+0x10b6\): Branch to a non-instruction-aligned address\Z
|