diff options
Diffstat (limited to 'ld/testsuite/ld-mips-elf')
33 files changed, 420 insertions, 0 deletions
diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp index 615f173..ceb588d 100644 --- a/ld/testsuite/ld-mips-elf/mips-elf.exp +++ b/ld/testsuite/ld-mips-elf/mips-elf.exp @@ -177,6 +177,26 @@ if $has_newabi { run_dump_test "jalx-local-n64" [list [list ld $abi_ldflags(n64)]] } +run_dump_test "unaligned-jalx-0" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-jalx-1" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-jalx-2" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-jalx-mips16-0" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-jalx-mips16-1" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-jalx-mips16-2" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-jalx-micromips-0" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-jalx-micromips-1" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-jalx-micromips-2" [list [list ld $abi_ldflags(o32)]] + +run_dump_test "unaligned-lwpc-0" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-lwpc-1" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-lwpc-2" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-lwpc-3" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-ldpc-0" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-ldpc-1" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-ldpc-2" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-ldpc-3" [list [list ld $abi_ldflags(o32)]] +run_dump_test "unaligned-ldpc-4" [list [list ld $abi_ldflags(o32)]] + # Test multi-got link. We only do this on GNU/Linux because it requires # the "traditional" emulations. if { $linux_gnu } { diff --git a/ld/testsuite/ld-mips-elf/unaligned-insn.s b/ld/testsuite/ld-mips-elf/unaligned-insn.s new file mode 100644 index 0000000..10649de --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-insn.s @@ -0,0 +1,15 @@ + .macro sym n:req + .if \n + .globl bar\@ + .type bar\@, @function +bar\@ : + .insn + .hword 0 + .size bar\@, . - bar\@ + sym \n - 1 + .endif + .endm + + .text + .align 4 + sym 8 diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-0.d b/ld/testsuite/ld-mips-elf/unaligned-jalx-0.d new file mode 100644 index 0000000..571a293 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-0.d @@ -0,0 +1,21 @@ +#name: MIPS JALX to unaligned symbol 0 +#source: unaligned-jalx-0.s +#source: unaligned-insn.s -mips16 +#as: -EB -32 +#ld: -EB -Ttext 0x1c000000 -e 0x1c000000 +#objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> 77000008 jalx 1c000020 <bar0> +[0-9a-f]+ <[^>]*> 00000000 nop + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-0.s b/ld/testsuite/ld-mips-elf/unaligned-jalx-0.s new file mode 100644 index 0000000..11e874a --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-0.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + jal bar0 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-1.d b/ld/testsuite/ld-mips-elf/unaligned-jalx-1.d new file mode 100644 index 0000000..9cbf654 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-1.d @@ -0,0 +1,8 @@ +#name: MIPS JALX to unaligned symbol 1 +#source: unaligned-jalx-1.s +#source: unaligned-insn.s -mips16 +#as: -EB -32 +#ld: -EB -Ttext 0x1c000000 -e 0x1c000000 +#error: \A[^\n]*: In function `foo':\n +#error: \(\.text\+0x[0-9a-f]+\): JALX to a non-word-aligned address\n +#error: [^\n]*: final link failed: Bad value\Z diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-1.s b/ld/testsuite/ld-mips-elf/unaligned-jalx-1.s new file mode 100644 index 0000000..d3ccfb4 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-1.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + jal bar1 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-2.d b/ld/testsuite/ld-mips-elf/unaligned-jalx-2.d new file mode 100644 index 0000000..c401cfe --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-2.d @@ -0,0 +1,21 @@ +#name: MIPS JALX to unaligned symbol 2 +#source: unaligned-jalx-2.s +#source: unaligned-insn.s -mips16 +#as: -EB -32 +#ld: -EB -Ttext 0x1c000000 -e 0x1c000000 +#objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> 77000009 jalx 1c000024 <bar2> +[0-9a-f]+ <[^>]*> 00000000 nop + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-2.s b/ld/testsuite/ld-mips-elf/unaligned-jalx-2.s new file mode 100644 index 0000000..34de139 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-2.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + jal bar2 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-0.d b/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-0.d new file mode 100644 index 0000000..5b3dea1 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-0.d @@ -0,0 +1,21 @@ +#name: microMIPS JALX to unaligned symbol 0 +#source: unaligned-jalx-0.s -mmicromips +#source: unaligned-insn.s +#as: -EB -32 +#ld: -EB -Ttext 0x1c000000 -e 0x1c000000 +#objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> f300 0008 jalx 1c000020 <bar0> +[0-9a-f]+ <[^>]*> 0000 0000 nop + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-1.d b/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-1.d new file mode 100644 index 0000000..a63fa31 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-1.d @@ -0,0 +1,8 @@ +#name: microMIPS JALX to unaligned symbol 1 +#source: unaligned-jalx-1.s -mmicromips +#source: unaligned-insn.s +#as: -EB -32 +#ld: -EB -Ttext 0x1c000000 -e 0x1c000000 +#error: \A[^\n]*: In function `foo':\n +#error: \(\.text\+0x[0-9a-f]+\): JALX to a non-word-aligned address\n +#error: [^\n]*: final link failed: Bad value\Z diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-2.d b/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-2.d new file mode 100644 index 0000000..8c07023 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-2.d @@ -0,0 +1,21 @@ +#name: microMIPS JALX to unaligned symbol 2 +#source: unaligned-jalx-2.s -mmicromips +#source: unaligned-insn.s +#as: -EB -32 +#ld: -EB -Ttext 0x1c000000 -e 0x1c000000 +#objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> f300 0009 jalx 1c000024 <bar2> +[0-9a-f]+ <[^>]*> 0000 0000 nop + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-0.d b/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-0.d new file mode 100644 index 0000000..9609736 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-0.d @@ -0,0 +1,21 @@ +#name: MIPS16 JALX to unaligned symbol 0 +#source: unaligned-jalx-0.s -mips16 +#source: unaligned-insn.s +#as: -EB -32 +#ld: -EB -Ttext 0x1c000000 -e 0x1c000000 +#objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> 1c18 0008 jalx 1c000020 <bar0> +[0-9a-f]+ <[^>]*> 6500 nop + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-1.d b/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-1.d new file mode 100644 index 0000000..45188e0 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-1.d @@ -0,0 +1,8 @@ +#name: MIPS16 JALX to unaligned symbol 1 +#source: unaligned-jalx-1.s -mips16 +#source: unaligned-insn.s +#as: -EB -32 +#ld: -EB -Ttext 0x1c000000 -e 0x1c000000 +#error: \A[^\n]*: In function `foo':\n +#error: \(\.text\+0x[0-9a-f]+\): JALX to a non-word-aligned address\n +#error: [^\n]*: final link failed: Bad value\Z diff --git a/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-2.d b/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-2.d new file mode 100644 index 0000000..d406651 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-2.d @@ -0,0 +1,21 @@ +#name: MIPS16 JALX to unaligned symbol 2 +#source: unaligned-jalx-2.s -mips16 +#source: unaligned-insn.s +#as: -EB -32 +#ld: -EB -Ttext 0x1c000000 -e 0x1c000000 +#objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> 1c18 0009 jalx 1c000024 <bar2> +[0-9a-f]+ <[^>]*> 6500 nop + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/unaligned-ldpc-0.d b/ld/testsuite/ld-mips-elf/unaligned-ldpc-0.d new file mode 100644 index 0000000..126c1b1 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-ldpc-0.d @@ -0,0 +1,12 @@ +#name: MIPS LDPC from unaligned symbol 0 +#source: unaligned-ldpc-0.s +#source: unaligned-syms.s +#as: -EB -32 -mips64r6 +#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000 +#objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> ec590004 ldpc v0,1c080020 <bar0> + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/unaligned-ldpc-0.s b/ld/testsuite/ld-mips-elf/unaligned-ldpc-0.s new file mode 100644 index 0000000..c99b4b7 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-ldpc-0.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + ldpc $2, bar0 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-ldpc-1.d b/ld/testsuite/ld-mips-elf/unaligned-ldpc-1.d new file mode 100644 index 0000000..1213cd0 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-ldpc-1.d @@ -0,0 +1,8 @@ +#name: MIPS LDPC from unaligned symbol 1 +#source: unaligned-ldpc-1.s +#source: unaligned-syms.s +#as: -EB -32 -mips64r6 +#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000 +#error: \A[^\n]*: In function `foo':\n +#error: \(\.text\+0x[0-9a-f]+\): PC-relative load from unaligned address\n +#error: [^\n]*: final link failed: Bad value\Z diff --git a/ld/testsuite/ld-mips-elf/unaligned-ldpc-1.s b/ld/testsuite/ld-mips-elf/unaligned-ldpc-1.s new file mode 100644 index 0000000..4afe849 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-ldpc-1.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + ldpc $2, bar1 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-ldpc-2.d b/ld/testsuite/ld-mips-elf/unaligned-ldpc-2.d new file mode 100644 index 0000000..6c0176c --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-ldpc-2.d @@ -0,0 +1,8 @@ +#name: MIPS LDPC from unaligned symbol 2 +#source: unaligned-ldpc-2.s +#source: unaligned-syms.s +#as: -EB -32 -mips64r6 +#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000 +#error: \A[^\n]*: In function `foo':\n +#error: \(\.text\+0x[0-9a-f]+\): PC-relative load from unaligned address\n +#error: [^\n]*: final link failed: Bad value\Z diff --git a/ld/testsuite/ld-mips-elf/unaligned-ldpc-2.s b/ld/testsuite/ld-mips-elf/unaligned-ldpc-2.s new file mode 100644 index 0000000..11e88f6 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-ldpc-2.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + ldpc $2, bar2 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-ldpc-3.d b/ld/testsuite/ld-mips-elf/unaligned-ldpc-3.d new file mode 100644 index 0000000..7a95d1c --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-ldpc-3.d @@ -0,0 +1,8 @@ +#name: MIPS LDPC from unaligned symbol 3 +#source: unaligned-ldpc-3.s +#source: unaligned-syms.s +#as: -EB -32 -mips64r6 +#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000 +#error: \A[^\n]*: In function `foo':\n +#error: \(\.text\+0x[0-9a-f]+\): PC-relative load from unaligned address\n +#error: [^\n]*: final link failed: Bad value\Z diff --git a/ld/testsuite/ld-mips-elf/unaligned-ldpc-3.s b/ld/testsuite/ld-mips-elf/unaligned-ldpc-3.s new file mode 100644 index 0000000..dac870f --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-ldpc-3.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + ldpc $2, bar4 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-ldpc-4.d b/ld/testsuite/ld-mips-elf/unaligned-ldpc-4.d new file mode 100644 index 0000000..d5610a7 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-ldpc-4.d @@ -0,0 +1,12 @@ +#name: MIPS LDPC from unaligned symbol 4 +#source: unaligned-ldpc-4.s +#source: unaligned-syms.s +#as: -EB -32 -mips64r6 +#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000 +#objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> ec590005 ldpc v0,1c080028 <bar8> + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/unaligned-ldpc-4.s b/ld/testsuite/ld-mips-elf/unaligned-ldpc-4.s new file mode 100644 index 0000000..596cccb --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-ldpc-4.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + ldpc $2, bar8 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-lwpc-0.d b/ld/testsuite/ld-mips-elf/unaligned-lwpc-0.d new file mode 100644 index 0000000..89c56c8 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-lwpc-0.d @@ -0,0 +1,12 @@ +#name: MIPS LWPC from unaligned symbol 0 +#source: unaligned-lwpc-0.s +#source: unaligned-syms.s +#as: -EB -32 -mips32r6 +#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000 +#objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> ec4a0008 lwpc v0,1c080020 <bar0> + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/unaligned-lwpc-0.s b/ld/testsuite/ld-mips-elf/unaligned-lwpc-0.s new file mode 100644 index 0000000..5d997f5 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-lwpc-0.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + lwpc $2, bar0 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-lwpc-1.d b/ld/testsuite/ld-mips-elf/unaligned-lwpc-1.d new file mode 100644 index 0000000..f4cf317 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-lwpc-1.d @@ -0,0 +1,8 @@ +#name: MIPS LWPC from unaligned symbol 1 +#source: unaligned-lwpc-1.s +#source: unaligned-syms.s +#as: -EB -32 -mips32r6 +#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000 +#error: \A[^\n]*: In function `foo':\n +#error: \(\.text\+0x[0-9a-f]+\): PC-relative load from unaligned address\n +#error: [^\n]*: final link failed: Bad value\Z diff --git a/ld/testsuite/ld-mips-elf/unaligned-lwpc-1.s b/ld/testsuite/ld-mips-elf/unaligned-lwpc-1.s new file mode 100644 index 0000000..595ebb9 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-lwpc-1.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + lwpc $2, bar1 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-lwpc-2.d b/ld/testsuite/ld-mips-elf/unaligned-lwpc-2.d new file mode 100644 index 0000000..2875828 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-lwpc-2.d @@ -0,0 +1,8 @@ +#name: MIPS LWPC from unaligned symbol 2 +#source: unaligned-lwpc-2.s +#source: unaligned-syms.s +#as: -EB -32 -mips32r6 +#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000 +#error: \A[^\n]*: In function `foo':\n +#error: \(\.text\+0x[0-9a-f]+\): PC-relative load from unaligned address\n +#error: [^\n]*: final link failed: Bad value\Z diff --git a/ld/testsuite/ld-mips-elf/unaligned-lwpc-2.s b/ld/testsuite/ld-mips-elf/unaligned-lwpc-2.s new file mode 100644 index 0000000..1debe4d --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-lwpc-2.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + lwpc $2, bar2 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-lwpc-3.d b/ld/testsuite/ld-mips-elf/unaligned-lwpc-3.d new file mode 100644 index 0000000..bda99c3 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-lwpc-3.d @@ -0,0 +1,12 @@ +#name: MIPS LWPC from unaligned symbol 3 +#source: unaligned-lwpc-3.s +#source: unaligned-syms.s +#as: -EB -32 -mips32r6 +#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000 +#objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> ec4a0009 lwpc v0,1c080024 <bar4> + \.\.\. diff --git a/ld/testsuite/ld-mips-elf/unaligned-lwpc-3.s b/ld/testsuite/ld-mips-elf/unaligned-lwpc-3.s new file mode 100644 index 0000000..667d7d9 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-lwpc-3.s @@ -0,0 +1,11 @@ + .text + .align 4 + .globl foo + .ent foo +foo: + lwpc $2, bar4 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/ld/testsuite/ld-mips-elf/unaligned-syms.s b/ld/testsuite/ld-mips-elf/unaligned-syms.s new file mode 100644 index 0000000..e865a13 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/unaligned-syms.s @@ -0,0 +1,15 @@ + .macro sym n:req + .if \n + .globl bar\@ + .type bar\@, @object +bar\@ : + .byte 0 + .size bar\@, . - bar\@ + sym \n - 1 + .endif + .endm + + .data + .align 4 + .space 32 + sym 16 |