1	.section ".tdata", "awT", @progbits
2	.globl foo
3foo:	.long 25
4	.text
5	.globl	fn
6	.type	fn,@function
7fn:
8	pushl	%ebp
9	movl	%esp, %ebp
10	pushl	%ebx
11	pushl	%eax
12	call	1f
131:	popl	%ebx
14	addl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
15
16	/* foo can be anywhere in the startup TLS  */
17	movl	%gs:0, %eax
18
19	/* Arbitrary instructions in between.  */
20	addl	$0, %esi
21
22	subl	foo@GOTTPOFF(%ebx), %eax
23	/* %eax now contains &foo  */
24
25	/* Now the GNU sequence.  */
26	movl	foo@GOTNTPOFF(%ebx), %eax
27
28	/* Arbitrary instructions in between.  */
29	addl	$0, %esi
30
31	movl	%gs:(%eax), %eax
32	/* %eax now contains foo  */
33
34	movl	%gs:0, %ecx
35	addl	foo@GOTNTPOFF(%ebx), %ecx
36
37	movl    -4(%ebp), %ebx
38	leave
39	ret
40