aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-mips-elf
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-mips-elf')
-rw-r--r--ld/testsuite/ld-mips-elf/jr-to-b-1.d25
-rw-r--r--ld/testsuite/ld-mips-elf/jr-to-b-1.s42
-rw-r--r--ld/testsuite/ld-mips-elf/jr-to-b-2.d25
-rw-r--r--ld/testsuite/ld-mips-elf/jr-to-b-2.s42
-rw-r--r--ld/testsuite/ld-mips-elf/mips-elf.exp6
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"
+}