diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2009-08-02 23:55:49 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2009-08-02 23:55:49 +0000 |
commit | 1d85728fd7299ff10bdcc066db96fb7e26748d58 (patch) | |
tree | 6aeeca69facc0b9b94d325b6989ae49364e4d5e9 /ld/testsuite/ld-i386 | |
parent | 249da6857069f9c7bb7ac7cab91be8346ba5b94e (diff) | |
download | gdb-1d85728fd7299ff10bdcc066db96fb7e26748d58.zip gdb-1d85728fd7299ff10bdcc066db96fb7e26748d58.tar.gz gdb-1d85728fd7299ff10bdcc066db96fb7e26748d58.tar.bz2 |
2009-08-02 H.J. Lu <hongjiu.lu@intel.com>
Jakub Jelinek <jakub@redhat.com>
PR ld/6443
* elf32-i386.c (elf_i386_tls_transition): Check executable
instead of shared for TLS when building PIE.
(elf_i386_check_relocs): Likewise.
(elf_i386_allocate_dynrelocs): Likewise.
(elf_i386_relocate_section): Likewise.
* elf64-x86-64.c (elf64_x86_64_tls_transition): Check executable
instead of shared for TLS when building PIE.
(elf64_x86_64_check_relocs): Likewise.
(elf64_x86_64_allocate_dynrelocs): Likewise.
(elf64_x86_64_relocate_section): Likewise.
ld/testsuite/
2009-08-02 H.J. Lu <hongjiu.lu@intel.com>
PR ld/6443
* ld-i386/i386.exp: Run tlspie1.
* ld-x86-64/x86-64.exp: tlspie1.
* ld-i386/tlspie1.d: New.
* ld-i386/tlspie1.s: Likewise.
* ld-x86-64/tlspie1.d: Likewise.
* ld-x86-64/tlspie1.s: Likewise.
Diffstat (limited to 'ld/testsuite/ld-i386')
-rw-r--r-- | ld/testsuite/ld-i386/i386.exp | 1 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/tlspie1.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/tlspie1.s | 64 |
3 files changed, 71 insertions, 0 deletions
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index 18e8d80..df2fcfc 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -139,3 +139,4 @@ run_dump_test "hidden3" run_dump_test "protected1" run_dump_test "protected2" run_dump_test "protected3" +run_dump_test "tlspie1" diff --git a/ld/testsuite/ld-i386/tlspie1.d b/ld/testsuite/ld-i386/tlspie1.d new file mode 100644 index 0000000..bac5dc6 --- /dev/null +++ b/ld/testsuite/ld-i386/tlspie1.d @@ -0,0 +1,6 @@ +#name: TLS with PIE +#as: --32 +#ld: -melf_i386 -pie +#readelf: -r + +There are no relocations in this file. diff --git a/ld/testsuite/ld-i386/tlspie1.s b/ld/testsuite/ld-i386/tlspie1.s new file mode 100644 index 0000000..c2b6151 --- /dev/null +++ b/ld/testsuite/ld-i386/tlspie1.s @@ -0,0 +1,64 @@ + .text + .globl ___tls_get_addr + .type ___tls_get_addr, @function +___tls_get_addr: + ret + .size ___tls_get_addr, .-___tls_get_addr +.globl _start + .type _start, @function +_start: + pushl %ebp + movl %esp, %ebp + pushl %esi + pushl %ebx + call .L3 +.L3: + popl %ebx + addl $_GLOBAL_OFFSET_TABLE_+[.-.L3], %ebx + movl %gs:foo2@NTPOFF, %esi + addl %gs:foo1@NTPOFF, %esi + movl foo3@GOTNTPOFF(%ebx), %eax + addl %gs:(%eax), %esi + leal foo4@TLSGD(,%ebx,1), %eax + call ___tls_get_addr@PLT + addl (%eax), %esi + leal foo5@TLSGD(,%ebx,1), %eax + call ___tls_get_addr@PLT + addl (%eax), %esi + movl %esi, %eax + popl %ebx + popl %esi + leave + ret + .size _start, .-_start +.globl foo1 + .section .tbss,"awT",@nobits + .align 4 + .type foo1, @object + .size foo1, 4 +foo1: + .zero 4 +.globl foo2 + .align 4 + .type foo2, @object + .size foo2, 4 +foo2: + .zero 4 +.globl foo3 + .align 4 + .type foo3, @object + .size foo3, 4 +foo3: + .zero 4 +.globl foo4 + .align 4 + .type foo4, @object + .size foo4, 4 +foo4: + .zero 4 +.globl foo5 + .align 4 + .type foo5, @object + .size foo5, 4 +foo5: + .zero 4 |