aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-mips-elf/unaligned-branch.d
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@imgtec.com>2016-05-28 10:57:58 +0100
committerMaciej W. Rozycki <macro@imgtec.com>2016-05-28 10:59:45 +0100
commit99aefae6818be07a77739e0366121f2032916d9c (patch)
tree9f06d7da4abc5ef64fd089f95f78a30d706f6ef1 /ld/testsuite/ld-mips-elf/unaligned-branch.d
parent3b4412a0419d0faa42432df1e4faab880fe43b35 (diff)
downloadgdb-99aefae6818be07a77739e0366121f2032916d9c.zip
gdb-99aefae6818be07a77739e0366121f2032916d9c.tar.gz
gdb-99aefae6818be07a77739e0366121f2032916d9c.tar.bz2
MIPS/BFD: Correctly handle `bfd_reloc_outofrange' with branches
Fix internal errors like: ld: BFD (GNU Binutils) 2.26.51.20160526 internal error, aborting at .../bfd/elfxx-mips.c:10278 in _bfd_mips_elf_relocate_section ld: Please report this bug. triggered by the `bfd_reloc_outofrange' condition on branch relocations. bfd/ * elfxx-mips.c (b_reloc_p): New function. (_bfd_mips_elf_relocate_section) <bfd_reloc_outofrange>: Handle branch relocations. ld/ * testsuite/ld-mips-elf/unaligned-branch.d: New test. * testsuite/ld-mips-elf/unaligned-branch.s: New test source. * testsuite/ld-mips-elf/unaligned-text.s: New test source. * testsuite/ld-mips-elf/mips-elf.exp: Run the new test.
Diffstat (limited to 'ld/testsuite/ld-mips-elf/unaligned-branch.d')
-rw-r--r--ld/testsuite/ld-mips-elf/unaligned-branch.d23
1 files changed, 23 insertions, 0 deletions
diff --git a/ld/testsuite/ld-mips-elf/unaligned-branch.d b/ld/testsuite/ld-mips-elf/unaligned-branch.d
new file mode 100644
index 0000000..54894b6
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/unaligned-branch.d
@@ -0,0 +1,23 @@
+#name: MIPS branch to unaligned symbol
+#source: unaligned-branch.s
+#source: unaligned-text.s
+#as: -EB -32 -mips32r6
+#ld: -EB -Ttext 0x10000000 -e 0x10000000
+#error: \A[^\n]*: In function `foo':\n
+#error: \(\.text\+0x14\): Branch to a non-instruction-aligned address\n
+#error: [^\n]*: In function `foo':\n
+#error: \(\.text\+0x1c\): Branch to a non-instruction-aligned address\n
+#error: [^\n]*: In function `foo':\n
+#error: \(\.text\+0x24\): Branch to a non-instruction-aligned address\n
+#error: [^\n]*: In function `foo':\n
+#error: \(\.text\+0x28\): Branch to a non-instruction-aligned address\n
+#error: [^\n]*: In function `foo':\n
+#error: \(\.text\+0x30\): Branch to a non-instruction-aligned address\n
+#error: [^\n]*: In function `foo':\n
+#error: \(\.text\+0x38\): Branch to a non-instruction-aligned address\n
+#error: [^\n]*: In function `foo':\n
+#error: \(\.text\+0x3c\): Branch to a non-instruction-aligned address\n
+#error: [^\n]*: In function `foo':\n
+#error: \(\.text\+0x44\): Branch to a non-instruction-aligned address\n
+#error: [^\n]*: In function `foo':\n
+#error: \(\.text\+0x4c\): Branch to a non-instruction-aligned address\Z