aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2005-03-02 21:22:47 +0000
committerDaniel Jacobowitz <drow@false.org>2005-03-02 21:22:47 +0000
commit128b3d864335747b62d95d2d8ba8e737e14a6d8f (patch)
tree59d2b54ebe5bd741ea79ea0c01df4d74c5353b2d
parent51cb3ca7c846cef1ffb4fe1937b2fba706e677f7 (diff)
downloadgdb-128b3d864335747b62d95d2d8ba8e737e14a6d8f.zip
gdb-128b3d864335747b62d95d2d8ba8e737e14a6d8f.tar.gz
gdb-128b3d864335747b62d95d2d8ba8e737e14a6d8f.tar.bz2
* gas/mips/tls-o32.d, gas/mips/tls-o32.s, gas/mips/tls-ill.l,
gas/mips/tls-ill.s: New files. * gas/mips/mips.exp: Run TLS tests.
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/mips/mips.exp5
-rw-r--r--gas/testsuite/gas/mips/tls-ill.l11
-rw-r--r--gas/testsuite/gas/mips/tls-ill.s9
-rw-r--r--gas/testsuite/gas/mips/tls-o32.d55
-rw-r--r--gas/testsuite/gas/mips/tls-o32.s85
6 files changed, 171 insertions, 0 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index dc0c3ef..58d3a3a 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2005-03-02 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * gas/mips/tls-o32.d, gas/mips/tls-o32.s, gas/mips/tls-ill.l,
+ gas/mips/tls-ill.s: New files.
+ * gas/mips/mips.exp: Run TLS tests.
+
2005-03-02 Alan Modra <amodra@bigpond.net.au>
* gas/ppc/astest.d: Adjust for relocs reduced to section sym.
diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp
index a64d8b4..b1772a3 100644
--- a/gas/testsuite/gas/mips/mips.exp
+++ b/gas/testsuite/gas/mips/mips.exp
@@ -336,6 +336,11 @@ proc run_list_test_arches { name opts arch_list } {
foreach arch $arch_list {
run_list_test_arch "$name" "$opts" "$arch"
}
+
+ if $elf {
+ run_list_test "tls-ill" "-32"
+ run_dump_test "tls-o32"
+ }
}
diff --git a/gas/testsuite/gas/mips/tls-ill.l b/gas/testsuite/gas/mips/tls-ill.l
new file mode 100644
index 0000000..1c1e73c
--- /dev/null
+++ b/gas/testsuite/gas/mips/tls-ill.l
@@ -0,0 +1,11 @@
+.*: Assembler messages:
+.*:6: Error: bad expression
+.*:6: Error: illegal operands `addiu'
+.*:7: Error: bad expression
+.*:7: Error: illegal operands `addiu'
+.*:8: Error: bad expression
+.*:8: Error: missing '\)'
+.*:8: Error: illegal operands `addiu'
+.*:9: Error: bad expression
+.*:9: Error: missing '\)'
+.*:9: Error: illegal operands `addiu'
diff --git a/gas/testsuite/gas/mips/tls-ill.s b/gas/testsuite/gas/mips/tls-ill.s
new file mode 100644
index 0000000..1632984
--- /dev/null
+++ b/gas/testsuite/gas/mips/tls-ill.s
@@ -0,0 +1,9 @@
+ .abicalls
+ .text
+
+ /* These have obvious meanings, but we don't have currently defined
+ relocations for them. */
+ addiu $4,$28,%dtprel(tlsvar)
+ addiu $4,$28,%tprel(tlsvar)
+ addiu $4,$28,%lo(%gottprel(tlsvar))
+ addiu $4,$28,%hi(%gottprel(tlsvar))
diff --git a/gas/testsuite/gas/mips/tls-o32.d b/gas/testsuite/gas/mips/tls-o32.d
new file mode 100644
index 0000000..feb58ae
--- /dev/null
+++ b/gas/testsuite/gas/mips/tls-o32.d
@@ -0,0 +1,55 @@
+#as: -EB -march=mips1 -mabi=32
+#objdump: -dr
+#name: MIPS ELF TLS o32
+
+dump.o: file format elf32-.*bigmips
+
+Disassembly of section .text:
+
+00000000 <fn>:
+ 0: 3c1c0000 lui gp,0x0
+ 0: R_MIPS_HI16 _gp_disp
+ 4: 279c0000 addiu gp,gp,0
+ 4: R_MIPS_LO16 _gp_disp
+ 8: 0399e021 addu gp,gp,t9
+ c: 27bdfff0 addiu sp,sp,-16
+ 10: afbe0008 sw s8,8\(sp\)
+ 14: 03a0f021 move s8,sp
+ 18: afbc0000 sw gp,0\(sp\)
+ 1c: 8f990000 lw t9,0\(gp\)
+ 1c: R_MIPS_CALL16 __tls_get_addr
+ 20: 27840000 addiu a0,gp,0
+ 20: R_MIPS_TLS_GD tlsvar_gd
+ 24: 0320f809 jalr t9
+ 28: 00000000 nop
+ 2c: 8fdc0000 lw gp,0\(s8\)
+ 30: 00000000 nop
+ 34: 8f990000 lw t9,0\(gp\)
+ 34: R_MIPS_CALL16 __tls_get_addr
+ 38: 27840000 addiu a0,gp,0
+ 38: R_MIPS_TLS_LDM tlsvar_ld
+ 3c: 0320f809 jalr t9
+ 40: 00000000 nop
+ 44: 8fdc0000 lw gp,0\(s8\)
+ 48: 00401021 move v0,v0
+ 4c: 3c030000 lui v1,0x0
+ 4c: R_MIPS_TLS_DTPREL_HI16 tlsvar_ld
+ 50: 24630000 addiu v1,v1,0
+ 50: R_MIPS_TLS_DTPREL_LO16 tlsvar_ld
+ 54: 00621821 addu v1,v1,v0
+ 58: 7c02283b 0x7c02283b
+ 5c: 8f830000 lw v1,0\(gp\)
+ 5c: R_MIPS_TLS_GOTTPREL tlsvar_ie
+ 60: 00000000 nop
+ 64: 00621821 addu v1,v1,v0
+ 68: 7c02283b 0x7c02283b
+ 6c: 3c030000 lui v1,0x0
+ 6c: R_MIPS_TLS_TPREL_HI16 tlsvar_le
+ 70: 34630000 ori v1,v1,0x0
+ 70: R_MIPS_TLS_TPREL_LO16 tlsvar_le
+ 74: 00621821 addu v1,v1,v0
+ 78: 03c0e821 move sp,s8
+ 7c: 8fbe0008 lw s8,8\(sp\)
+ 80: 03e00008 jr ra
+ 84: 27bd0010 addiu sp,sp,16
+#pass
diff --git a/gas/testsuite/gas/mips/tls-o32.s b/gas/testsuite/gas/mips/tls-o32.s
new file mode 100644
index 0000000..a4c3e37
--- /dev/null
+++ b/gas/testsuite/gas/mips/tls-o32.s
@@ -0,0 +1,85 @@
+ .file 1 "tls.s"
+ .abicalls
+ .text
+ .align 2
+ .globl fn
+ .ent fn
+ .type fn,@function
+fn:
+ .frame $fp,16,$31
+ .mask 0x40000000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .cpload $25
+ .set reorder
+ addiu $sp,$sp,-16
+ sw $fp,8($sp)
+ move $fp,$sp
+ .cprestore 0
+
+ # General Dynamic
+ lw $25,%call16(__tls_get_addr)($28)
+ addiu $4,$28,%tlsgd(tlsvar_gd)
+ jal $25
+
+ # Local Dynamic
+ lw $25,%call16(__tls_get_addr)($28)
+ addiu $4,$28,%tlsldm(tlsvar_ld)
+ jal $25
+
+ move $2,$2 # Arbitrary instructions
+
+ lui $3,%dtprel_hi(tlsvar_ld)
+ addiu $3,$3,%dtprel_lo(tlsvar_ld)
+ addu $3,$3,$2
+
+ # Initial Exec
+ .set push
+ .set mips32r2
+ rdhwr $2, $5
+ .set pop
+ lw $3,%gottprel(tlsvar_ie)($28)
+ addu $3,$3,$2
+
+ # Local Exec
+ .set push
+ .set mips32r2
+ rdhwr $2, $5
+ .set pop
+ lui $3,%tprel_hi(tlsvar_le)
+ ori $3,$3,%tprel_lo(tlsvar_le)
+ addu $3,$3,$2
+
+ move $sp,$fp
+ lw $fp,8($sp)
+ addiu $sp,$sp,16
+ j $31
+ .end fn
+
+ .section .tbss,"awT",@nobits
+ .align 2
+ .global tlsvar_gd
+ .type tlsvar_gd,@object
+ .size tlsvar_gd,4
+tlsvar_gd:
+ .space 4
+ .global tlsvar_ie
+ .type tlsvar_ie,@object
+ .size tlsvar_ie,4
+tlsvar_ie:
+ .space 4
+
+ .section .tdata,"awT"
+ .align 2
+ .global tlsvar_ld
+ .hidden tlsvar_ld
+ .type tlsvar_ld,@object
+ .size tlsvar_ld,4
+tlsvar_ld:
+ .word 1
+ .global tlsvar_le
+ .hidden tlsvar_le
+ .type tlsvar_le,@object
+ .size tlsvar_le,4
+tlsvar_le:
+ .word 1