* gas/mips/tls-o32.d, gas/mips/tls-o32.s, gas/mips/tls-ill.l,
authorDaniel Jacobowitz <drow@false.org>
Wed, 2 Mar 2005 21:22:47 +0000 (21:22 +0000)
committerDaniel Jacobowitz <drow@false.org>
Wed, 2 Mar 2005 21:22:47 +0000 (21:22 +0000)
gas/mips/tls-ill.s: New files.
* gas/mips/mips.exp: Run TLS tests.

gas/testsuite/ChangeLog
gas/testsuite/gas/mips/mips.exp
gas/testsuite/gas/mips/tls-ill.l [new file with mode: 0644]
gas/testsuite/gas/mips/tls-ill.s [new file with mode: 0644]
gas/testsuite/gas/mips/tls-o32.d [new file with mode: 0644]
gas/testsuite/gas/mips/tls-o32.s [new file with mode: 0644]

index dc0c3efab3d12922d50063d7870c23bc2cc745ca..58d3a3a5d4e82a8d103d256ca6c8d29c1d12570a 100644 (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.
index a64d8b4551ac7766da4c406ee42b0f14d5a2de10..b1772a3083f3096421bd303e1d6cd81348b748d0 100644 (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"
+    }
 }
 
 
diff --git a/gas/testsuite/gas/mips/tls-ill.l b/gas/testsuite/gas/mips/tls-ill.l
new file mode 100644 (file)
index 0000000..1c1e73c
--- /dev/null
@@ -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 (file)
index 0000000..1632984
--- /dev/null
@@ -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 (file)
index 0000000..feb58ae
--- /dev/null
@@ -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 (file)
index 0000000..a4c3e37
--- /dev/null
@@ -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