1	.section ".tdata", "awT", @progbits
2	.globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8
3	.globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
4	.hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
5sg1:	.long 17
6sg2:	.long 18
7sg3:	.long 19
8sg4:	.long 20
9sg5:	.long 21
10sg6:	.long 22
11sg7:	.long 23
12sg8:	.long 24
13sl1:	.long 65
14sl2:	.long 66
15sl3:	.long 67
16sl4:	.long 68
17sl5:	.long 69
18sl6:	.long 70
19sl7:	.long 71
20sl8:	.long 72
21sh1:	.long 257
22sh2:	.long 258
23sh3:	.long 259
24sh4:	.long 260
25sh5:	.long 261
26sh6:	.long 262
27sh7:	.long 263
28sh8:	.long 264
29	.text
30	.globl	fn1
31	.type	fn1,@function
32fn1:
33	pushl	%ebp
34	movl	%esp, %ebp
35	pushl	%ebx
36	pushl	%eax
37	call	1f
381:	popl	%ebx
39	addl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
40	nop;nop;nop;nop
41
42	/* GD */
43	leal	sg1@tlsdesc(%ebx), %eax
44	call	*sg1@tlscall(%eax)
45	nop;nop;nop;nop
46
47	/* GD -> IE because variable is referenced through @gottpoff too */
48	leal	sg2@tlsdesc(%ebx), %eax
49	call	*sg2@tlscall(%eax)
50	nop;nop;nop;nop
51
52	/* GD -> IE because variable is referenced through @gotntpoff too */
53	leal	sg3@tlsdesc(%ebx), %eax
54	call	*sg3@tlscall(%eax)
55	nop;nop;nop;nop
56
57	/* GD -> IE because variable is referenced through @gottpoff and
58	   @gotntpoff too */
59	leal	sg4@tlsdesc(%ebx), %eax
60	call	*sg4@tlscall(%eax)
61	nop;nop;nop;nop
62
63	/* GD against local variable */
64	leal	sl1@tlsdesc(%ebx), %eax
65	call	*sl1@tlscall(%eax)
66	nop;nop;nop;nop
67
68	/* GD -> IE against local variable referenced through @gottpoff too */
69	leal	sl2@tlsdesc(%ebx), %eax
70	call	*sl2@tlscall(%eax)
71	nop;nop;nop;nop
72
73	/* GD -> IE against local variable referenced through @gotntpoff
74	   too */
75	leal	sl3@tlsdesc(%ebx), %eax
76	call	*sl3@tlscall(%eax)
77	nop;nop;nop;nop
78
79	/* GD -> IE against local variable referenced through @gottpoff and
80	   @gotntpoff too */
81	leal	sl4@tlsdesc(%ebx), %eax
82	call	*sl4@tlscall(%eax)
83	nop;nop;nop;nop
84
85	/* GD against hidden and local variable */
86	leal	sh1@tlsdesc(%ebx), %eax
87	call	*sh1@tlscall(%eax)
88	nop;nop;nop;nop
89
90	/* GD -> IE against hidden and local variable referenced through
91	   @gottpoff too */
92	leal	sh2@tlsdesc(%ebx), %eax
93	call	*sh2@tlscall(%eax)
94	nop;nop;nop;nop
95
96	/* GD -> IE against hidden and local variable referenced through
97	   @gotntpoff too */
98	leal	sh3@tlsdesc(%ebx), %eax
99	call	*sh3@tlscall(%eax)
100	nop;nop;nop;nop
101
102	/* GD -> IE against hidden and local variable referenced through
103	   @gottpoff and @gotntpoff too */
104	leal	sh4@tlsdesc(%ebx), %eax
105	call	*sh4@tlscall(%eax)
106	nop;nop;nop;nop
107
108	/* GD against hidden but not local variable */
109	leal	sH1@tlsdesc(%ebx), %eax
110	call	*sH1@tlscall(%eax)
111	nop;nop;nop;nop
112
113	/* GD -> IE against hidden but not local variable referenced through
114	   @gottpoff too */
115	leal	sH2@tlsdesc(%ebx), %eax
116	call	*sH2@tlscall(%eax)
117	nop;nop;nop;nop
118
119	/* GD -> IE against hidden but not local variable referenced through
120	   @gotntpoff too */
121	leal	sH3@tlsdesc(%ebx), %eax
122	call	*sH3@tlscall(%eax)
123	nop;nop;nop;nop
124
125	/* GD -> IE against hidden but not local variable referenced through
126	   @gottpoff and @gotntpoff too */
127	leal	sH4@tlsdesc(%ebx), %eax
128	call	*sH4@tlscall(%eax)
129	nop;nop;nop;nop
130
131	/* LD */
132	leal	_TLS_MODULE_BASE_@tlsdesc(%ebx), %eax
133	call	*_TLS_MODULE_BASE_@tlscall(%eax)
134	nop;nop
135	leal	sl1@dtpoff(%eax), %edx
136	nop;nop
137	leal	2+sl2@dtpoff(%eax), %ecx
138	nop;nop;nop;nop
139
140	/* LD against hidden and local variables */
141	leal	sh1@dtpoff(%eax), %edx
142	nop;nop
143	leal	sh2@dtpoff+3(%eax), %ecx
144	nop;nop;nop;nop
145
146	/* LD against hidden but not local variables */
147	leal	sH1@dtpoff(%eax), %edx
148	nop;nop
149	leal	sH2@dtpoff+1(%eax), %ecx
150	nop;nop
151
152	/* @gottpoff IE against global var  */
153	movl	%gs:0, %ecx
154	nop;nop
155	subl	sg2@gottpoff(%ebx), %ecx
156	nop;nop;nop;nop
157
158	/* @gottpoff IE against global var  */
159	movl	%gs:0, %eax
160	nop;nop
161	subl	sg4@gottpoff(%ebx), %eax
162	nop;nop;nop;nop
163
164	/* @gotntpoff IE against global var  */
165	movl	%gs:0, %ecx
166	nop;nop
167	addl	sg3@gotntpoff(%ebx), %ecx
168	nop;nop;nop;nop
169
170	/* @gotntpoff IE against global var  */
171	movl	%gs:0, %eax
172	nop;nop
173	addl	sg4@gotntpoff(%ebx), %eax
174	nop;nop;nop;nop
175
176	/* @gottpoff IE against local var  */
177	movl	%gs:0, %ecx
178	nop;nop
179	subl	sl2@gottpoff(%ebx), %ecx
180	nop;nop;nop;nop
181
182	/* @gottpoff IE against local var  */
183	movl	%gs:0, %eax
184	nop;nop
185	subl	sl4@gottpoff(%ebx), %eax
186	nop;nop;nop;nop
187
188	/* @gotntpoff IE against local var  */
189	movl	%gs:0, %ecx
190	nop;nop
191	addl	sl3@gotntpoff(%ebx), %ecx
192	nop;nop;nop;nop
193
194	/* @gotntpoff IE against local var  */
195	movl	%gs:0, %eax
196	nop;nop
197	addl	sl4@gotntpoff(%ebx), %eax
198	nop;nop;nop;nop
199
200	/* @gottpoff IE against hidden and local var  */
201	movl	%gs:0, %ecx
202	nop;nop
203	subl	sh2@gottpoff(%ebx), %ecx
204	nop;nop;nop;nop
205
206	/* @gottpoff IE against hidden and local var  */
207	movl	%gs:0, %eax
208	nop;nop
209	subl	sh4@gottpoff(%ebx), %eax
210	nop;nop;nop;nop
211
212	/* @gotntpoff IE against hidden and local var  */
213	movl	%gs:0, %ecx
214	nop;nop
215	addl	sh3@gotntpoff(%ebx), %ecx
216	nop;nop;nop;nop
217
218	/* @gotntpoff IE against hidden and local var  */
219	movl	%gs:0, %eax
220	nop;nop
221	addl	sh4@gotntpoff(%ebx), %eax
222	nop;nop;nop;nop
223
224	/* @gottpoff IE against hidden but not local var  */
225	movl	%gs:0, %ecx
226	nop;nop
227	subl	sH2@gottpoff(%ebx), %ecx
228	nop;nop;nop;nop
229
230	/* @gottpoff IE against hidden but not local var  */
231	movl	%gs:0, %eax
232	nop;nop
233	subl	sH4@gottpoff(%ebx), %eax
234	nop;nop;nop;nop
235
236	/* @gotntpoff IE against hidden but not local var  */
237	movl	%gs:0, %ecx
238	nop;nop
239	addl	sH3@gotntpoff(%ebx), %ecx
240	nop;nop;nop;nop
241
242	/* @gotntpoff IE against hidden but not local var  */
243	movl	%gs:0, %eax
244	nop;nop
245	addl	sH4@gotntpoff(%ebx), %eax
246	nop;nop;nop;nop
247
248	/* Direct access through %gs  */
249
250	/* @gotntpoff IE against global var  */
251	movl	sg5@gotntpoff(%ebx), %ecx
252	nop;nop
253	movl	%gs:(%ecx), %edx
254	nop;nop;nop;nop
255
256	/* @gotntpoff IE against local var  */
257	movl	sl5@gotntpoff(%ebx), %eax
258	nop;nop
259	movl	%gs:(%eax), %edx
260	nop;nop;nop;nop
261
262	/* @gotntpoff IE against hidden and local var  */
263	movl	sh5@gotntpoff(%ebx), %edx
264	nop;nop
265	movl	%gs:(%edx), %edx
266	nop;nop;nop;nop
267
268	/* @gotntpoff IE against hidden but not local var  */
269	movl	sH5@gotntpoff(%ebx), %ecx
270	nop;nop
271	movl	%gs:(%ecx), %edx
272	nop;nop;nop;nop
273
274	movl    -4(%ebp), %ebx
275	leave
276	ret
277