1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
.section ".tbss", "awT", @nobits
.globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
bg1: .space 4
bg2: .space 4
bg3: .space 4
bg4: .space 4
bg5: .space 4
bg6: .space 4
bg7: .space 4
bg8: .space 4
bl1: .space 4
bl2: .space 4
bl3: .space 4
bl4: .space 4
bl5: .space 4
bl6: .space 4
bl7: .space 4
bl8: .space 4
.text
.globl _start
.type _start,@function
_start:
pushl %ebp
movl %esp, %ebp
/* Set up .GOT pointer for non-pic @gottpoff sequences */
call 1f
1: popl %ecx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
nop;nop;nop;nop
/* @gottpoff IE against global var */
movl %gs:0, %edx
nop;nop
subl sG6@gottpoff(%ecx), %edx
nop;nop;nop;nop
/* @indntpoff IE against global var */
movl %gs:0, %eax
nop;nop
addl sG7@indntpoff, %eax
nop;nop;nop;nop
/* @indntpoff direct %gs access IE against global var */
movl sG8@indntpoff, %edx
nop;nop
movl %gs:(%edx), %eax
nop;nop;nop;nop
/* @gottpoff IE -> LE against global var defined in exec */
movl %gs:0, %edx
nop;nop
subl bg6@gottpoff(%ecx), %edx
nop;nop;nop;nop
/* @indntpoff IE -> LE against global var defined in exec */
movl %gs:0, %eax
nop;nop
addl bg7@indntpoff, %eax
nop;nop;nop;nop
/* @indntpoff direct %gs access IE -> LE against global var defined
in exec */
movl bg8@indntpoff, %edx
nop;nop
movl %gs:(%edx), %eax
nop;nop;nop;nop
/* @gottpoff IE -> LE against local var */
movl %gs:0, %edx
nop;nop
subl bl6@gottpoff(%ecx), %edx
nop;nop;nop;nop
/* @indntpoff IE -> LE against local var */
movl %gs:0, %eax
nop;nop
addl bl7@indntpoff, %eax
nop;nop;nop;nop
/* @indntpoff direct %gs access IE -> LE against local var */
movl bl8@indntpoff, %edx
nop;nop
movl %gs:(%edx), %eax
nop;nop;nop;nop
/* @gottpoff IE -> LE against hidden but not local var */
movl %gs:0, %edx
nop;nop
subl sh6@gottpoff(%ecx), %edx
nop;nop;nop;nop
/* @indntpoff IE -> LE against hidden but not local var */
movl %gs:0, %eax
nop;nop
addl sh7@indntpoff, %eax
nop;nop;nop;nop
/* @indntpoff direct %gs access IE -> LE against hidden but not
local var */
movl sh8@indntpoff, %edx
nop;nop
movl %gs:(%edx), %eax
nop;nop;nop;nop
/* LE @tpoff, global var defined in exec */
movl $sg1@tpoff, %edx
nop;nop
movl %gs:0, %eax
nop;nop
subl %edx, %eax
nop;nop;nop;nop
/* LE @tpoff, local var */
movl $-1+bl1@tpoff, %eax
nop;nop
movl %gs:0, %edx
nop;nop
subl %eax, %edx
nop;nop;nop;nop
/* LE @tpoff, hidden var defined in exec */
movl $sh1@tpoff-3, %eax
nop;nop
movl %gs:0, %edx
nop;nop
subl %eax, %edx
nop;nop;nop;nop
/* LE @ntpoff, global var defined in exec */
movl %gs:0, %eax
nop;nop
leal sg2@ntpoff(%eax), %edx
nop;nop;nop;nop
/* LE @ntpoff, local var, non-canonical sequence */
movl $2+bl2@ntpoff, %eax
nop;nop
movl %gs:0, %edx
nop;nop
addl %eax, %edx
nop;nop;nop;nop
/* LE @ntpoff, hidden var defined in exec, non-canonical sequence */
movl %gs:0, %edx
nop;nop
addl $sh2@ntpoff+1, %edx
nop;nop;nop;nop
/* Direct %gs access */
/* LE @ntpoff, global var defined in exec */
movl %gs:sg3@ntpoff, %eax
nop;nop;nop;nop
/* LE @ntpoff, local var */
movl %gs:bl3@ntpoff+3, %edx
nop;nop;nop;nop
/* LE @ntpoff, hidden var defined in exec */
movl %gs:1+sh3@ntpoff, %edx
nop;nop;nop;nop
movl -4(%ebp), %ebx
leave
ret
|