diff options
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/elf-rel13-mips16.d | 17 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/elf-rel13-mips16.s | 24 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/elf-rel8-mips16.d | 38 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/elf-rel8-mips16.s | 39 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/elf-rel9-mips16.d | 70 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/elf-rel9-mips16.s | 59 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips.exp | 3 |
8 files changed, 257 insertions, 0 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 7516f50c32..e75b7cf50a 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2008-08-06 Richard Sandiford <rdsandiford@googlemail.com> + + * gas/mips/elf-rel8-mips16.d, gas/mips/elf-rel8-mips16.s, + * gas/mips/elf-rel9-mips16.d, gas/mips/elf-rel9-mips16.s, + * gas/mips/elf-rel13-mips16.d, gas/mips/elf-rel13-mips16.s: New tests. + * gas/mips/mips.exp: Run them. + 2008-08-01 Peter Bergner <bergner@vnet.ibm.com> * gas/ppc/power7.d: New. diff --git a/gas/testsuite/gas/mips/elf-rel13-mips16.d b/gas/testsuite/gas/mips/elf-rel13-mips16.d new file mode 100644 index 0000000000..aa404ab4c1 --- /dev/null +++ b/gas/testsuite/gas/mips/elf-rel13-mips16.d @@ -0,0 +1,17 @@ +#as: -march=mips2 -mabi=32 -KPIC +#readelf: --relocs +#name: MIPS ELF reloc 13 (MIPS16 version) + +Relocation section '\.rel\.text' at offset .* contains 9 entries: + *Offset * Info * Type * Sym\.Value * Sym\. Name +0+0002 * 0+..66 * R_MIPS16_GOT16 * 0+0000 * \.data +0+0016 * 0+..69 * R_MIPS16_LO16 * 0+0000 * \.data +0+0012 * 0+..66 * R_MIPS16_GOT16 * 0+0000 * \.data +0+001a * 0+..69 * R_MIPS16_LO16 * 0+0000 * \.data +# The next two lines could be in either order. +0+000e * 0+..66 * R_MIPS16_GOT16 * 0+0000 * \.rodata +0+000a * 0+..66 * R_MIPS16_GOT16 * 0+0000 * \.rodata +0+001e * 0+..69 * R_MIPS16_LO16 * 0+0000 * \.rodata +0+0006 * 0+..66 * R_MIPS16_GOT16 * 0+0000 * \.bss +0+0022 * 0+..69 * R_MIPS16_LO16 * 0+0000 * \.bss +#pass diff --git a/gas/testsuite/gas/mips/elf-rel13-mips16.s b/gas/testsuite/gas/mips/elf-rel13-mips16.s new file mode 100644 index 0000000000..2983f0e2f0 --- /dev/null +++ b/gas/testsuite/gas/mips/elf-rel13-mips16.s @@ -0,0 +1,24 @@ + .set mips16 + .ent foo +foo: + move $2,$28 + lw $4,%got(l1)($2) + lw $4,%got(l2)($2) + lw $4,%got(l3)($2) + lw $4,%got(l3)($2) + lw $4,%got(l1+0x400)($2) + addiu $4,%lo(l1) + addiu $4,%lo(l1+0x400) + addiu $4,%lo(l3) + addiu $4,%lo(l2) + .align 5 + .end foo + + .data +l1: .word 1 + + .lcomm l2, 4 + + .rdata + .word 1 +l3: .word 2 diff --git a/gas/testsuite/gas/mips/elf-rel8-mips16.d b/gas/testsuite/gas/mips/elf-rel8-mips16.d new file mode 100644 index 0000000000..7c834fa5d2 --- /dev/null +++ b/gas/testsuite/gas/mips/elf-rel8-mips16.d @@ -0,0 +1,38 @@ +#as: -march=mips2 -mabi=32 +#objdump: -M gpr-names=numeric -dr +#name: MIPS ELF reloc 8 (MIPS16 version) + +.*: file format .* + +Disassembly of section \.text: + +0+00 <foo>: + 0: 675c move \$2,\$28 + 2: f000 6c00 li \$4,0 + 2: R_MIPS16_HI16 gvar + 6: f400 3480 sll \$4,16 + a: f000 4c00 addiu \$4,0 + a: R_MIPS16_LO16 gvar + e: f000 9d80 lw \$4,0\(\$5\) + e: R_MIPS16_LO16 gvar + 12: f000 9982 lw \$4,2\(\$17\) + 16: f000 9a80 lw \$4,0\(\$2\) + 16: R_MIPS16_GOT16 \.data + 1a: f000 c4a0 sb \$5,0\(\$4\) + 1a: R_MIPS16_LO16 \.data + 1e: f000 9a80 lw \$4,0\(\$2\) + 1e: R_MIPS16_GOT16 \.data + 22: f000 4c00 addiu \$4,0 + 22: R_MIPS16_LO16 \.data + 26: f000 9a60 lw \$3,0\(\$2\) + 26: R_MIPS16_CALL16 gfunc + 2a: f000 4c00 addiu \$4,0 + 2a: R_MIPS16_CALL16 gfunc + 2e: f000 9a80 lw \$4,0\(\$2\) + 2e: R_MIPS16_GPREL gvar + 32: f000 da80 sw \$4,0\(\$2\) + 32: R_MIPS16_GPREL gvar + 36: f000 4c00 addiu \$4,0 + 36: R_MIPS16_GPREL gvar + 3a: 6500 nop +#pass diff --git a/gas/testsuite/gas/mips/elf-rel8-mips16.s b/gas/testsuite/gas/mips/elf-rel8-mips16.s new file mode 100644 index 0000000000..0c9eefe652 --- /dev/null +++ b/gas/testsuite/gas/mips/elf-rel8-mips16.s @@ -0,0 +1,39 @@ + .equ $fprel, 2 + .set mips16 + + .ent foo +foo: + move $2,$gp + + # Test various forms of relocation syntax. + + li $4,(%hi gvar) + sll $4,16 + addiu $4,(%lo (gvar)) + lw $4,%lo gvar($5) + + # Check that registers aren't confused with $ identifiers. + + lw $4,($fprel)($17) + + # Check various forms of paired relocations. + + lw $4,%got(lvar)($2) + sb $5,%lo(lvar)($4) + + lw $4,%got(lvar)($2) + addiu $4,%lo(lvar) + + # Check individual relocations. + + lw $3,%call16(gfunc)($2) + addiu $4,%call16(gfunc) + + lw $4,%gprel(gvar)($2) + sw $4,%gprel(gvar)($2) + addiu $4,%gprel(gvar) + .align 6 + .end foo + + .data +lvar: .word 1,2 diff --git a/gas/testsuite/gas/mips/elf-rel9-mips16.d b/gas/testsuite/gas/mips/elf-rel9-mips16.d new file mode 100644 index 0000000000..738c6fdccd --- /dev/null +++ b/gas/testsuite/gas/mips/elf-rel9-mips16.d @@ -0,0 +1,70 @@ +#as: -march=mips2 -mabi=32 +#objdump: -M gpr-names=numeric -dr +#name: MIPS ELF reloc 9 (MIPS16 version) + +.*: file format .* + +Disassembly of section \.text: + +0+00 <foo>: + 0: 675c move \$2,\$28 + 2: f000 9a80 lw \$4,0\(\$2\) + 2: R_MIPS16_GOT16 \.data + 6: f000 4c10 addiu \$4,16 + 6: R_MIPS16_LO16 \.data + a: f000 9a80 lw \$4,0\(\$2\) + a: R_MIPS16_GOT16 \.data + e: f020 4c00 addiu \$4,32 + e: R_MIPS16_LO16 \.data + 12: f000 9a80 lw \$4,0\(\$2\) + 12: R_MIPS16_GOT16 \.data + 16: f7ef 4c1c addiu \$4,32764 + 16: R_MIPS16_LO16 \.data + 1a: f000 9a81 lw \$4,1\(\$2\) + 1a: R_MIPS16_GOT16 \.data + 1e: f010 4c00 addiu \$4,-32768 + 1e: R_MIPS16_LO16 \.data + 22: f000 9a81 lw \$4,1\(\$2\) + 22: R_MIPS16_GOT16 \.data + 26: f7ff 4c1c addiu \$4,-4 + 26: R_MIPS16_LO16 \.data + 2a: f000 9a81 lw \$4,1\(\$2\) + 2a: R_MIPS16_GOT16 \.data + 2e: f000 4c00 addiu \$4,0 + 2e: R_MIPS16_LO16 \.data + 32: f000 9a82 lw \$4,2\(\$2\) + 32: R_MIPS16_GOT16 \.data + 36: f010 4c10 addiu \$4,-32752 + 36: R_MIPS16_LO16 \.data + 3a: f000 9a82 lw \$4,2\(\$2\) + 3a: R_MIPS16_GOT16 \.data + 3e: f01e 4c00 addiu \$4,-4096 + 3e: R_MIPS16_LO16 \.data + 42: f000 9a82 lw \$4,2\(\$2\) + 42: R_MIPS16_GOT16 \.data + 46: f7ff 4c1f addiu \$4,-1 + 46: R_MIPS16_LO16 \.data + 4a: f000 9a82 lw \$4,2\(\$2\) + 4a: R_MIPS16_GOT16 \.data + 4e: f000 4c00 addiu \$4,0 + 4e: R_MIPS16_LO16 \.data + 52: f000 9a83 lw \$4,3\(\$2\) + 52: R_MIPS16_GOT16 \.data + 56: f342 4c05 addiu \$4,4933 + 56: R_MIPS16_LO16 \.data + 5a: f018 9a80 lw \$4,-16384\(\$2\) + 5a: R_MIPS16_GPREL \.sdata + 5e: f018 9a84 lw \$4,-16380\(\$2\) + 5e: R_MIPS16_GPREL \.sdata + 62: f018 9a84 lw \$4,-16380\(\$2\) + 62: R_MIPS16_GPREL \.sdata + 66: f018 9a88 lw \$4,-16376\(\$2\) + 66: R_MIPS16_GPREL \.sdata + 6a: f018 9a8c lw \$4,-16372\(\$2\) + 6a: R_MIPS16_GPREL \.sdata + 6e: f018 9a94 lw \$4,-16364\(\$2\) + 6e: R_MIPS16_GPREL \.sdata + 72: f018 9a98 lw \$4,-16360\(\$2\) + 72: R_MIPS16_GPREL \.sdata + 76: 6500 nop +#pass diff --git a/gas/testsuite/gas/mips/elf-rel9-mips16.s b/gas/testsuite/gas/mips/elf-rel9-mips16.s new file mode 100644 index 0000000000..a4f54eddd3 --- /dev/null +++ b/gas/testsuite/gas/mips/elf-rel9-mips16.s @@ -0,0 +1,59 @@ + .set mips16 + .ent foo +foo: + move $2,$28 + lw $4,%got(l1)($2) + addiu $4,%lo(l1) + + lw $4,%got(l1 + 16)($2) + addiu $4,%lo(l1 + 16) + + lw $4,%got(l1 + 0x7fec)($2) + addiu $4,%lo(l1 + 0x7fec) + + lw $4,%got(l1 + 0x7ff0)($2) + addiu $4,%lo(l1 + 0x7ff0) + + lw $4,%got(l1 + 0xffec)($2) + addiu $4,%lo(l1 + 0xffec) + + lw $4,%got(l1 + 0xfff0)($2) + addiu $4,%lo(l1 + 0xfff0) + + lw $4,%got(l1 + 0x18000)($2) + addiu $4,%lo(l1 + 0x18000) + + lw $4,%got(l2)($2) + addiu $4,%lo(l2) + + lw $4,%got(l2 + 0xfff)($2) + addiu $4,%lo(l2 + 0xfff) + + lw $4,%got(l2 + 0x1000)($2) + addiu $4,%lo(l2 + 0x1000) + + lw $4,%got(l2 + 0x12345)($2) + addiu $4,%lo(l2 + 0x12345) + + lw $4,%gprel(l3)($2) + lw $4,%gprel(l3 + 4)($2) + lw $4,%gprel(l4)($2) + lw $4,%gprel(l4 + 4)($2) + lw $4,%gprel(l5)($2) + lw $4,%gprel(l5 + 8)($2) + lw $4,%gprel(l5 + 12)($2) + + .align 6 + .end foo + + .data + .word 1,2,3,4 +l1: .word 4,5 + .space 0x1f000 - 24 +l2: .word 7,8 + + .sdata +l3: .word 1 +l4: .word 2 + .word 3 +l5: .word 4 diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index 16edfb73a9..3c4a919207 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -653,13 +653,16 @@ if { [istarget mips*-*-vxworks*] } { } run_dump_test "elf-rel7" run_dump_test "elf-rel8" + run_dump_test "elf-rel8-mips16" run_dump_test "elf-rel9" + run_dump_test "elf-rel9-mips16" if $has_newabi { run_dump_test "elf-rel10" run_dump_test "elf-rel11" } run_dump_test "elf-rel12" run_dump_test "elf-rel13" + run_dump_test "elf-rel13-mips16" run_dump_test "elf-rel14" if $has_newabi { |