* 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.
This commit is contained in:
Daniel Jacobowitz 2005-03-02 21:22:47 +00:00
parent 51cb3ca7c8
commit 128b3d8643
6 changed files with 171 additions and 0 deletions

View File

@ -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.

View File

@ -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"
}
}

View File

@ -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'

View File

@ -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))

View File

@ -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

View File

@ -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