Commit | Line | Data |
---|---|---|
8c37241b | 1 | .section ".data.rel.ro", "aw", @progbits |
37e55690 JJ |
2 | /* Align, so that .got is likely at address 0x2080. */ |
3 | .balign 4096 | |
4 | .section ".tbss", "awT", @nobits | |
5 | bl1: .space 4 | |
6 | bl2: .space 4 | |
7 | bl3: .space 4 | |
8 | bl4: .space 4 | |
9 | bl5: .space 4 | |
10 | .text | |
11 | /* Align, so that fn3 is likely at address 0x1000. */ | |
12 | .balign 4096 | |
13 | .globl fn3 | |
14 | .type fn3,@function | |
15 | fn3: | |
16 | pushl %ebp | |
17 | movl %esp, %ebp | |
18 | ||
19 | /* @indntpoff IE against global var */ | |
20 | movl %gs:0, %eax | |
21 | nop;nop | |
22 | addl sg1@indntpoff, %eax | |
23 | nop;nop;nop;nop | |
24 | ||
25 | /* @indntpoff direct %gs access IE against global var */ | |
26 | movl sg2@indntpoff, %edx | |
27 | nop;nop | |
28 | movl %gs:(%edx), %eax | |
29 | nop;nop;nop;nop | |
30 | ||
31 | /* @indntpoff IE against hidden var */ | |
32 | movl %gs:0, %eax | |
33 | nop;nop | |
34 | addl sh1@indntpoff, %eax | |
35 | nop;nop;nop;nop | |
36 | ||
37 | /* @indntpoff direct %gs access IE against hidden var */ | |
38 | movl sh2@indntpoff, %edx | |
39 | nop;nop | |
40 | movl %gs:(%edx), %eax | |
41 | nop;nop;nop;nop | |
42 | ||
43 | /* @indntpoff IE against local var */ | |
44 | movl %gs:0, %eax | |
45 | nop;nop | |
46 | addl bl1@indntpoff, %eax | |
47 | nop;nop;nop;nop | |
48 | ||
49 | /* @indntpoff direct %gs access IE against local var */ | |
50 | movl bl2@indntpoff, %edx | |
51 | nop;nop | |
52 | movl %gs:(%edx), %eax | |
53 | nop;nop;nop;nop | |
54 | ||
55 | /* LE @tpoff, global var */ | |
56 | movl $-3+sg3@tpoff, %edx | |
57 | nop;nop | |
58 | movl %gs:0, %eax | |
59 | nop;nop | |
60 | subl %edx, %eax | |
61 | nop;nop;nop;nop | |
62 | ||
63 | /* LE @tpoff, local var */ | |
64 | movl $-1+bl3@tpoff, %eax | |
65 | nop;nop | |
66 | movl %gs:0, %edx | |
67 | nop;nop | |
68 | subl %eax, %edx | |
69 | nop;nop;nop;nop | |
70 | ||
71 | /* LE @ntpoff, global var */ | |
72 | movl %gs:0, %eax | |
73 | nop;nop | |
74 | leal 2+sg4@ntpoff(%eax), %edx | |
75 | nop;nop;nop;nop | |
76 | ||
77 | /* LE @ntpoff, hidden var, non-canonical sequence */ | |
78 | movl $sh3@ntpoff, %eax | |
79 | nop;nop | |
80 | movl %gs:0, %edx | |
81 | nop;nop | |
82 | addl %eax, %edx | |
83 | nop;nop;nop;nop | |
84 | ||
85 | /* LE @ntpoff, local var, non-canonical sequence */ | |
86 | movl %gs:0, %edx | |
87 | nop;nop | |
88 | addl $bl4@ntpoff+1, %edx | |
89 | nop;nop;nop;nop | |
90 | ||
91 | /* Direct %gs access */ | |
92 | ||
93 | /* LE @ntpoff, global var */ | |
94 | movl %gs:sg5@ntpoff, %eax | |
95 | nop;nop;nop;nop | |
96 | ||
97 | /* LE @ntpoff, local var */ | |
98 | movl %gs:bl5@ntpoff+3, %edx | |
99 | nop;nop;nop;nop | |
100 | ||
101 | /* LE @ntpoff, hidden var */ | |
102 | movl %gs:1+sh4@ntpoff, %edx | |
103 | nop;nop;nop;nop | |
104 | ||
105 | movl -4(%ebp), %ebx | |
106 | leave | |
107 | ret |