2007-08-24 H.J. Lu <hongjiu.lu@intel.com>

* ld-i386/i386.exp (i386tests): Add a test for TLS IE->LE
	transition.
	Run tlsie2, tlsie3, tlsie4 and tlsie5.

	* ld-i386/tlsie1.dd: New file.
	* ld-i386/tlsie1.s: Likewise.
	* ld-i386/tlsie2.d: Likewise.
	* ld-i386/tlsie2.s: Likewise.
	* ld-i386/tlsie3.d: Likewise.
	* ld-i386/tlsie3.s: Likewise.
	* ld-i386/tlsie4.d: Likewise.
	* ld-i386/tlsie4.s: Likewise.
	* ld-i386/tlsie5.d: Likewise.
	* ld-i386/tlsie5.s: Likewise.
	* ld-x86-64/tlsgd2.d: Likewise.
	* ld-x86-64/tlsgd2.s: Likewise.
	* ld-x86-64/tlsgd3.d: Likewise.
	* ld-x86-64/tlsgd3.s: Likewise.
	* ld-x86-64/tlsie1.dd: Likewise.
	* ld-x86-64/tlsie1.s: Likewise.
	* ld-x86-64/tlsie2.d: Likewise.
	* ld-x86-64/tlsie2.s: Likewise.
	* ld-x86-64/tlsie3.d: Likewise.
	* ld-x86-64/tlsie3.s: Likewise.

	* ld-x86-64/x86-64.exp (x86_64tests): Add a test for TLS LD->LE
	transition.
	Run tlsgd2, tlsgd3, tlsie2 and tlsie3.
This commit is contained in:
H.J. Lu 2007-08-24 19:39:19 +00:00
parent 495bde8ec4
commit dd1093aa2c
23 changed files with 229 additions and 0 deletions

View File

@ -1,3 +1,34 @@
2007-08-24 H.J. Lu <hongjiu.lu@intel.com>
* ld-i386/i386.exp (i386tests): Add a test for TLS IE->LE
transition.
Run tlsie2, tlsie3, tlsie4 and tlsie5.
* ld-i386/tlsie1.dd: New file.
* ld-i386/tlsie1.s: Likewise.
* ld-i386/tlsie2.d: Likewise.
* ld-i386/tlsie2.s: Likewise.
* ld-i386/tlsie3.d: Likewise.
* ld-i386/tlsie3.s: Likewise.
* ld-i386/tlsie4.d: Likewise.
* ld-i386/tlsie4.s: Likewise.
* ld-i386/tlsie5.d: Likewise.
* ld-i386/tlsie5.s: Likewise.
* ld-x86-64/tlsgd2.d: Likewise.
* ld-x86-64/tlsgd2.s: Likewise.
* ld-x86-64/tlsgd3.d: Likewise.
* ld-x86-64/tlsgd3.s: Likewise.
* ld-x86-64/tlsie1.dd: Likewise.
* ld-x86-64/tlsie1.s: Likewise.
* ld-x86-64/tlsie2.d: Likewise.
* ld-x86-64/tlsie2.s: Likewise.
* ld-x86-64/tlsie3.d: Likewise.
* ld-x86-64/tlsie3.s: Likewise.
* ld-x86-64/x86-64.exp (x86_64tests): Add a test for TLS LD->LE
transition.
Run tlsgd2, tlsgd3, tlsie2 and tlsie3.
2007-08-23 H.J. Lu <hongjiu.lu@intel.com>
* ld-i386/tlsbinpic.s: Add a new GD -> IE test.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,4 @@
#name: TLS GD->IE transition check
#as: --64
#ld: -melf_x86_64
#error: .*TLS transition from R_X86_64_TLSGD to R_X86_64_GOTTPOFF against `foo'.*failed.*

View File

@ -0,0 +1,5 @@
.text
.globl _start
_start:
leaq foo@TLSGD(%rip), %rdi
call __tls_get_addr

View File

@ -0,0 +1,4 @@
#name: TLS GD->LE transition check
#as: --64
#ld: -melf_x86_64
#error: .*TLS transition from R_X86_64_TLSGD to R_X86_64_TPOFF32 against `a local symbol'.*failed.*

View File

@ -0,0 +1,11 @@
.text
.globl _start
_start:
leaq foo@TLSGD(%rip), %rdi
call __tls_get_addr
.section .tdata,"awT",@progbits
.align 4
.type foo, @object
.size foo, 4
foo:
.long 100

View File

@ -0,0 +1,16 @@
#source: tlsie1.s
#as: --64
#ld: -melf_x86_64 tmpdir/tlsie1
#objdump: -drw
#target: x86_64-*-linux*
.*: +file format .*
Disassembly of section .text:
[a-f0-9]+ <_start>:
[ ]*[a-f0-9]+: 48 c7 c0 fc ff ff ff mov \$0xfffffffffffffffc,%rax
[ ]*[a-f0-9]+: 48 8d 80 fc ff ff ff lea -0x4\(%rax\),%rax
[ ]*[a-f0-9]+: 49 c7 c4 fc ff ff ff mov \$0xfffffffffffffffc,%r12
[ ]*[a-f0-9]+: 49 81 c4 fc ff ff ff add \$0xfffffffffffffffc,%r12
#pass

View File

@ -0,0 +1,14 @@
.text
.globl _start
_start:
movq foo@GOTTPOFF(%rip), %rax
addq foo@GOTTPOFF(%rip), %rax
movq foo@GOTTPOFF(%rip), %r12
addq foo@GOTTPOFF(%rip), %r12
.globl foo
.section .tdata,"awT",@progbits
.align 4
.type foo, @object
.size foo, 4
foo:
.long 100

View File

@ -0,0 +1,4 @@
#name: TLS IE->LE transition check
#as: --64
#ld: -melf_x86_64
#error: .*TLS transition from R_X86_64_GOTTPOFF to R_X86_64_TPOFF32 against `foo'.*failed.*

View File

@ -0,0 +1,12 @@
.text
.globl _start
_start:
leaq foo@GOTTPOFF(%rip), %rax
movq (%rax), %rax
.globl foo
.section .tdata,"awT",@progbits
.align 4
.type foo, @object
.size foo, 4
foo:
.long 100

View File

@ -0,0 +1,4 @@
#name: TLS IE->LE transition check (%r12)
#as: --64
#ld: -melf_x86_64
#error: .*TLS transition from R_X86_64_GOTTPOFF to R_X86_64_TPOFF32 against `foo'.*failed.*

View File

@ -0,0 +1,12 @@
.text
.globl _start
_start:
leaq foo@GOTTPOFF(%rip), %r12
movq (%r12), %r12
.globl foo
.section .tdata,"awT",@progbits
.align 4
.type foo, @object
.size foo, 4
foo:
.long 100

View File

@ -72,6 +72,9 @@ set x86_64tests {
{"TLS LD->LE transition" "-melf_x86_64"
"--64" {tlsld1.s}
{{objdump -dwr tlsld1.dd}} "tlsld1"}
{"TLS IE->LE transition" "-melf_x86_64"
"--64" {tlsie1.s}
{{objdump -dwr tlsie1.dd}} "tlsie1"}
}
run_ld_link_tests $x86_64tests
@ -79,3 +82,7 @@ run_ld_link_tests $x86_64tests
run_dump_test "abs"
run_dump_test "pcrel8"
run_dump_test "pcrel16"
run_dump_test "tlsgd2"
run_dump_test "tlsgd3"
run_dump_test "tlsie2"
run_dump_test "tlsie3"