diff options
author | Jing Yu <jingyu@google.com> | 2011-12-20 10:27:58 -0800 |
---|---|---|
committer | Jing Yu <jingyu@google.com> | 2011-12-20 10:27:58 -0800 |
commit | cf3cdbf8b3cda61a619299e7966a83df66244036 (patch) | |
tree | 201e2bcfc955f16802d3257112d29736cb3a3ce8 /binutils-2.21/ld/testsuite/ld-x86-64/tlsgdesc.s | |
parent | e4df3e0a5bb640ccfa2f30ee67fe9b3146b152d6 (diff) | |
download | toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.zip toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.tar.gz toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.tar.bz2 |
Add binutils-2.21.
Use --enable-gold=default for dual linker support.
Change-Id: Id1a744c7db58a0b5e7a3be174cdfa875f2f86e49
Diffstat (limited to 'binutils-2.21/ld/testsuite/ld-x86-64/tlsgdesc.s')
-rw-r--r-- | binutils-2.21/ld/testsuite/ld-x86-64/tlsgdesc.s | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/binutils-2.21/ld/testsuite/ld-x86-64/tlsgdesc.s b/binutils-2.21/ld/testsuite/ld-x86-64/tlsgdesc.s new file mode 100644 index 0000000..6657e72 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-x86-64/tlsgdesc.s @@ -0,0 +1,106 @@ + .text + .globl fc1 + .type fc1,@function +fc1: + pushq %rbp + movq %rsp, %rbp + nop;nop;nop;nop + + /* IE against global var. */ + movq %fs:0, %rcx + nop;nop + addq sG3@gottpoff(%rip), %rcx + nop;nop;nop;nop + + /* IE against global var. */ + movq %fs:0, %rcx + nop;nop + addq sG4@gottpoff(%rip), %rcx + nop;nop;nop;nop + + /* GD, gd first. */ + .byte 0x66 + leaq sG1@tlsgd(%rip), %rdi + .word 0x6666 + rex64 + call __tls_get_addr@plt + nop;nop;nop;nop + + leaq sG1@tlsdesc(%rip), %rax + call *sG1@tlscall(%rax) + nop;nop;nop;nop + + /* GD, desc first. */ + leaq sG2@tlsdesc(%rip), %rax + call *sG2@tlscall(%rax) + nop;nop;nop;nop + + .byte 0x66 + leaq sG2@tlsgd(%rip), %rdi + .word 0x6666 + rex64 + call __tls_get_addr@plt + nop;nop;nop;nop + + /* GD -> IE, gd first, after IE use. */ + .byte 0x66 + leaq sG3@tlsgd(%rip), %rdi + .word 0x6666 + rex64 + call __tls_get_addr@plt + nop;nop;nop;nop + + leaq sG3@tlsdesc(%rip), %rax + call *sG3@tlscall(%rax) + nop;nop;nop;nop + + /* GD -> IE, desc first, after IE use. */ + leaq sG4@tlsdesc(%rip), %rax + call *sG4@tlscall(%rax) + nop;nop;nop;nop + + .byte 0x66 + leaq sG4@tlsgd(%rip), %rdi + .word 0x6666 + rex64 + call __tls_get_addr@plt + nop;nop;nop;nop + + /* GD -> IE, gd first, before IE use. */ + .byte 0x66 + leaq sG5@tlsgd(%rip), %rdi + .word 0x6666 + rex64 + call __tls_get_addr@plt + nop;nop;nop;nop + + leaq sG5@tlsdesc(%rip), %rax + call *sG5@tlscall(%rax) + nop;nop;nop;nop + + /* GD -> IE, desc first, before IE use. */ + leaq sG6@tlsdesc(%rip), %rax + call *sG6@tlscall(%rax) + nop;nop;nop;nop + + .byte 0x66 + leaq sG6@tlsgd(%rip), %rdi + .word 0x6666 + rex64 + call __tls_get_addr@plt + nop;nop;nop;nop + + /* IE against global var. */ + movq %fs:0, %rcx + nop;nop + addq sG5@gottpoff(%rip), %rcx + nop;nop;nop;nop + + /* IE against global var. */ + movq %fs:0, %rcx + nop;nop + addq sG6@gottpoff(%rip), %rcx + nop;nop;nop;nop + + leave + ret |