aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-i386
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-i386')
-rw-r--r--ld/testsuite/ld-i386/i386.exp7
-rw-r--r--ld/testsuite/ld-i386/tlsie1.dd18
-rw-r--r--ld/testsuite/ld-i386/tlsie1.s16
-rw-r--r--ld/testsuite/ld-i386/tlsie2.d4
-rw-r--r--ld/testsuite/ld-i386/tlsie2.s12
-rw-r--r--ld/testsuite/ld-i386/tlsie3.d4
-rw-r--r--ld/testsuite/ld-i386/tlsie3.s12
-rw-r--r--ld/testsuite/ld-i386/tlsie4.d4
-rw-r--r--ld/testsuite/ld-i386/tlsie4.s12
-rw-r--r--ld/testsuite/ld-i386/tlsie5.d4
-rw-r--r--ld/testsuite/ld-i386/tlsie5.s12
11 files changed, 105 insertions, 0 deletions
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index 2c7c14b..10f90ce 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -115,6 +115,9 @@ set i386tests {
{"TLS LD->LE transition" "-melf_i386"
"--32" {tlsld1.s}
{{objdump -dwr tlsld1.dd}} "tlsld1"}
+ {"TLS IE->LE transition" "-melf_i386"
+ "--32" {tlsie1.s}
+ {{objdump -dwr tlsie1.dd}} "tlsie1"}
}
run_ld_link_tests $i386tests
@@ -125,3 +128,7 @@ run_dump_test "pcrel16"
run_dump_test "pcrel16abs"
run_dump_test "alloc"
run_dump_test "warn1"
+run_dump_test "tlsie2"
+run_dump_test "tlsie3"
+run_dump_test "tlsie4"
+run_dump_test "tlsie5"
diff --git a/ld/testsuite/ld-i386/tlsie1.dd b/ld/testsuite/ld-i386/tlsie1.dd
new file mode 100644
index 0000000..2cebc70
--- /dev/null
+++ b/ld/testsuite/ld-i386/tlsie1.dd
@@ -0,0 +1,18 @@
+#source: tlsie1.s
+#as: --32
+#ld: -melf_i386 tmpdir/tlsld1
+#objdump: -drw
+#target: i?86-*-linux*
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+[a-f0-9]+ <_start>:
+[ ]*[a-f0-9]+: 81 c1 fc ff ff ff add \$0xfffffffc,%ecx
+[ ]*[a-f0-9]+: 81 c1 fc ff ff ff add \$0xfffffffc,%ecx
+[ ]*[a-f0-9]+: c7 c0 fc ff ff ff mov \$0xfffffffc,%eax
+[ ]*[a-f0-9]+: c7 c1 fc ff ff ff mov \$0xfffffffc,%ecx
+[ ]*[a-f0-9]+: b8 fc ff ff ff mov \$0xfffffffc,%eax
+[ ]*[a-f0-9]+: c7 c1 fc ff ff ff mov \$0xfffffffc,%ecx
+#pass
diff --git a/ld/testsuite/ld-i386/tlsie1.s b/ld/testsuite/ld-i386/tlsie1.s
new file mode 100644
index 0000000..d4ad569
--- /dev/null
+++ b/ld/testsuite/ld-i386/tlsie1.s
@@ -0,0 +1,16 @@
+ .text
+ .globl _start
+_start:
+ addl foo@gotntpoff(%ebx), %ecx
+ addl foo@indntpoff, %ecx
+ movl foo@gotntpoff(%ebx), %eax
+ movl foo@gotntpoff(%ebx), %ecx
+ movl foo@indntpoff, %eax
+ movl foo@indntpoff, %ecx
+ .globl foo
+ .section .tdata,"awT",@progbits
+ .align 4
+ .type foo, @object
+ .size foo, 4
+foo:
+ .long 100
diff --git a/ld/testsuite/ld-i386/tlsie2.d b/ld/testsuite/ld-i386/tlsie2.d
new file mode 100644
index 0000000..ebb85fd
--- /dev/null
+++ b/ld/testsuite/ld-i386/tlsie2.d
@@ -0,0 +1,4 @@
+#name: TLS IE->LE transition check (R_386_TLS_GOTIE with %eax)
+#as: --32
+#ld: -melf_i386
+#error: .*TLS transition from R_386_TLS_GOTIE to R_386_TLS_LE_32 against `foo'.*failed.*
diff --git a/ld/testsuite/ld-i386/tlsie2.s b/ld/testsuite/ld-i386/tlsie2.s
new file mode 100644
index 0000000..72df617
--- /dev/null
+++ b/ld/testsuite/ld-i386/tlsie2.s
@@ -0,0 +1,12 @@
+ .text
+ .globl _start
+_start:
+ leal foo@gotntpoff(%ebx), %eax
+ movl (%eax), %eax
+ .globl foo
+ .section .tdata,"awT",@progbits
+ .align 4
+ .type foo, @object
+ .size foo, 4
+foo:
+ .long 100
diff --git a/ld/testsuite/ld-i386/tlsie3.d b/ld/testsuite/ld-i386/tlsie3.d
new file mode 100644
index 0000000..d993f30
--- /dev/null
+++ b/ld/testsuite/ld-i386/tlsie3.d
@@ -0,0 +1,4 @@
+#name: TLS IE->LE transition check (R_386_TLS_GOTIE)
+#as: --32
+#ld: -melf_i386
+#error: .*TLS transition from R_386_TLS_GOTIE to R_386_TLS_LE_32 against `foo'.*failed.*
diff --git a/ld/testsuite/ld-i386/tlsie3.s b/ld/testsuite/ld-i386/tlsie3.s
new file mode 100644
index 0000000..865156d
--- /dev/null
+++ b/ld/testsuite/ld-i386/tlsie3.s
@@ -0,0 +1,12 @@
+ .text
+ .globl _start
+_start:
+ leal foo@gotntpoff(%ebx), %ecx
+ movl (%ecx), %ecx
+ .globl foo
+ .section .tdata,"awT",@progbits
+ .align 4
+ .type foo, @object
+ .size foo, 4
+foo:
+ .long 100
diff --git a/ld/testsuite/ld-i386/tlsie4.d b/ld/testsuite/ld-i386/tlsie4.d
new file mode 100644
index 0000000..3ca8fdd
--- /dev/null
+++ b/ld/testsuite/ld-i386/tlsie4.d
@@ -0,0 +1,4 @@
+#name: TLS IE->LE transition check (R_386_TLS_IE with %eax)
+#as: --32
+#ld: -melf_i386
+#error: .*TLS transition from R_386_TLS_IE to R_386_TLS_LE_32 against `foo'.*failed.*
diff --git a/ld/testsuite/ld-i386/tlsie4.s b/ld/testsuite/ld-i386/tlsie4.s
new file mode 100644
index 0000000..3469f29
--- /dev/null
+++ b/ld/testsuite/ld-i386/tlsie4.s
@@ -0,0 +1,12 @@
+ .text
+ .globl _start
+_start:
+ leal foo@indntpoff(%ebx), %eax
+ movl (%eax), %eax
+ .globl foo
+ .section .tdata,"awT",@progbits
+ .align 4
+ .type foo, @object
+ .size foo, 4
+foo:
+ .long 100
diff --git a/ld/testsuite/ld-i386/tlsie5.d b/ld/testsuite/ld-i386/tlsie5.d
new file mode 100644
index 0000000..3febeb1
--- /dev/null
+++ b/ld/testsuite/ld-i386/tlsie5.d
@@ -0,0 +1,4 @@
+#name: TLS IE->LE transition check (R_386_TLS_IE)
+#as: --32
+#ld: -melf_i386
+#error: .*TLS transition from R_386_TLS_IE to R_386_TLS_LE_32 against `foo'.*failed.*
diff --git a/ld/testsuite/ld-i386/tlsie5.s b/ld/testsuite/ld-i386/tlsie5.s
new file mode 100644
index 0000000..affee31
--- /dev/null
+++ b/ld/testsuite/ld-i386/tlsie5.s
@@ -0,0 +1,12 @@
+ .text
+ .globl _start
+_start:
+ leal foo@indntpoff, %ecx
+ movl (%ecx), %ecx
+ .globl foo
+ .section .tdata,"awT",@progbits
+ .align 4
+ .type foo, @object
+ .size foo, 4
+foo:
+ .long 100