diff options
Diffstat (limited to 'ld/testsuite/ld-mips-elf')
-rw-r--r-- | ld/testsuite/ld-mips-elf/jr-to-b-1.d | 25 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/jr-to-b-1.s | 42 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/jr-to-b-2.d | 25 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/jr-to-b-2.s | 42 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/mips-elf.exp | 6 |
5 files changed, 140 insertions, 0 deletions
diff --git a/ld/testsuite/ld-mips-elf/jr-to-b-1.d b/ld/testsuite/ld-mips-elf/jr-to-b-1.d new file mode 100644 index 0000000..c786847 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/jr-to-b-1.d @@ -0,0 +1,25 @@ +#name: jr to b conversion +#source: jr-to-b-1.s +#as: -32 -mips1 -EB +#ld: -shared -melf32btsmip +#objdump: -d + +.*: file format .* + + +Disassembly of section \.text: + +.* <s>: +.*: 03e00008 jr ra +.*: 24020001 li v0,1 + +.* <t>: +.*: 3c1c.... lui gp,.* +.*: 279c.... addiu gp,gp,.* +.*: 0399e021 addu gp,gp,t9 +.*: 8f998018 lw t9,.*\(gp\) +.*: 00000000 nop +.*: 2739.... addiu t9,t9,.* +.*: 1000fff7 b .* <s> +.*: 00000000 nop +#pass diff --git a/ld/testsuite/ld-mips-elf/jr-to-b-1.s b/ld/testsuite/ld-mips-elf/jr-to-b-1.s new file mode 100644 index 0000000..8f07005 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/jr-to-b-1.s @@ -0,0 +1,42 @@ + .abicalls + .text + .align 2 + .set nomips16 + .ent s + .type s, @function +s: + .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 + .mask 0x00000000,0 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + j $31 + li $2,1 # 0x1 + + .set macro + .set reorder + .end s + .size s, .-s + .align 2 + .globl t + .set nomips16 + .ent t + .type t, @function +t: + .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 + .mask 0x00000000,0 + .fmask 0x00000000,0 + .set noreorder + .cpload $25 + .set nomacro + lw $25,%got(s)($28) + nop + addiu $25,$25,%lo(s) + .reloc 1f,R_MIPS_JALR,s +1: jr $25 + nop + + .set macro + .set reorder + .end t + .size t, .-t diff --git a/ld/testsuite/ld-mips-elf/jr-to-b-2.d b/ld/testsuite/ld-mips-elf/jr-to-b-2.d new file mode 100644 index 0000000..4b6399f --- /dev/null +++ b/ld/testsuite/ld-mips-elf/jr-to-b-2.d @@ -0,0 +1,25 @@ +#name: jr not to b conversion +#source: jr-to-b-2.s +#as: -32 -mips1 -EB +#ld: -shared -melf32btsmip +#objdump: -d + +.*: file format .* + + +Disassembly of section \.text: + +.* <s>: +.*: e820 jr ra +.*: 6a01 li v0,1 + +.* <t>: +.*: 3c1c.... lui gp,.* +.*: 279c.... addiu gp,gp,.* +.*: 0399e021 addu gp,gp,t9 +.*: 8f99.... lw t9,.*\(gp\) +.*: 00000000 nop +.*: 2739.... addiu t9,t9,.* +.*: 03200008 jr t9 +.*: 00000000 nop +#pass diff --git a/ld/testsuite/ld-mips-elf/jr-to-b-2.s b/ld/testsuite/ld-mips-elf/jr-to-b-2.s new file mode 100644 index 0000000..ac883c3 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/jr-to-b-2.s @@ -0,0 +1,42 @@ + .abicalls + .text + .align 2 + .set mips16 + .ent s + .type s, @function +s: + .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 + .mask 0x00000000,0 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + j $31 + li $2,1 + .set macro + .set reorder + + .end s + .size s, .-s + .align 2 + .globl t + .set nomips16 + .ent t + .type t, @function +t: + .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 + .mask 0x00000000,0 + .fmask 0x00000000,0 + .set noreorder + .cpload $25 + .set nomacro + lw $25,%got(s)($28) + nop + addiu $25,$25,%lo(s) + .reloc 1f,R_MIPS_JALR,s +1: jr $25 + nop + + .set macro + .set reorder + .end t + .size t, .-t diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp index ea70ea1..7b1a57b 100644 --- a/ld/testsuite/ld-mips-elf/mips-elf.exp +++ b/ld/testsuite/ld-mips-elf/mips-elf.exp @@ -522,3 +522,9 @@ if { $linux_gnu } { } run_dump_test "undefined" + +# Test the conversion from jr to b +if { $linux_gnu } { + run_dump_test "jr-to-b-1" + run_dump_test "jr-to-b-2" +} |