1 .text 2 .globl fc1 3 .type fc1,@function 4 fc1: 5 pushq %rbp 6 movq %rsp, %rbp 7 nop;nop;nop;nop 8 9 /* IE against global var. */ 10 movq %fs:0, %rcx 11 nop;nop 12 addq sG3@gottpoff(%rip), %rcx 13 nop;nop;nop;nop 14 15 /* IE against global var. */ 16 movq %fs:0, %rcx 17 nop;nop 18 addq sG4@gottpoff(%rip), %rcx 19 nop;nop;nop;nop 20 21 /* GD, gd first. */ 22 .byte 0x66 23 leaq sG1@tlsgd(%rip), %rdi 24 .word 0x6666 25 rex64 26 call __tls_get_addr@plt 27 nop;nop;nop;nop 28 29 leaq sG1@tlsdesc(%rip), %rax 30 call *sG1@tlscall(%rax) 31 nop;nop;nop;nop 32 33 /* GD, desc first. */ 34 leaq sG2@tlsdesc(%rip), %rax 35 call *sG2@tlscall(%rax) 36 nop;nop;nop;nop 37 38 .byte 0x66 39 leaq sG2@tlsgd(%rip), %rdi 40 .word 0x6666 41 rex64 42 call __tls_get_addr@plt 43 nop;nop;nop;nop 44 45 /* GD -> IE, gd first, after IE use. */ 46 .byte 0x66 47 leaq sG3@tlsgd(%rip), %rdi 48 .word 0x6666 49 rex64 50 call __tls_get_addr@plt 51 nop;nop;nop;nop 52 53 leaq sG3@tlsdesc(%rip), %rax 54 call *sG3@tlscall(%rax) 55 nop;nop;nop;nop 56 57 /* GD -> IE, desc first, after IE use. */ 58 leaq sG4@tlsdesc(%rip), %rax 59 call *sG4@tlscall(%rax) 60 nop;nop;nop;nop 61 62 .byte 0x66 63 leaq sG4@tlsgd(%rip), %rdi 64 .word 0x6666 65 rex64 66 call __tls_get_addr@plt 67 nop;nop;nop;nop 68 69 /* GD -> IE, gd first, before IE use. */ 70 .byte 0x66 71 leaq sG5@tlsgd(%rip), %rdi 72 .word 0x6666 73 rex64 74 call __tls_get_addr@plt 75 nop;nop;nop;nop 76 77 leaq sG5@tlsdesc(%rip), %rax 78 call *sG5@tlscall(%rax) 79 nop;nop;nop;nop 80 81 /* GD -> IE, desc first, before IE use. */ 82 leaq sG6@tlsdesc(%rip), %rax 83 call *sG6@tlscall(%rax) 84 nop;nop;nop;nop 85 86 .byte 0x66 87 leaq sG6@tlsgd(%rip), %rdi 88 .word 0x6666 89 rex64 90 call __tls_get_addr@plt 91 nop;nop;nop;nop 92 93 /* IE against global var. */ 94 movq %fs:0, %rcx 95 nop;nop 96 addq sG5@gottpoff(%rip), %rcx 97 nop;nop;nop;nop 98 99 /* IE against global var. */ 100 movq %fs:0, %rcx 101 nop;nop 102 addq sG6@gottpoff(%rip), %rcx 103 nop;nop;nop;nop 104 105 leave 106 ret 107