--- /dev/null
+.*: 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'
--- /dev/null
+#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
--- /dev/null
+ .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