Commit | Line | Data |
---|---|---|
67a4f2b7 AO |
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 |