1	.section ".tdata", "awT", @progbits
2	.globl baz
3	.hidden baz
4	.globl var
5	.hidden var2
6bar:	.long 27
7baz:	.long 29
8var:	.long 31
9var2:	.long 33
10	.text
11	.globl	fn
12	.type	fn,@function
13fn:
14	/* Main binary, no PIC.  */
151:	movl	1b, %edx
16	addl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
17
18	/* foo can be anywhere in startup TLS.  */
19	movl	%gs:0, %eax
20	subl	foo@GOTTPOFF(%edx), %eax
21	/* %eax now contains &foo.  */
22
23	/* bar only in the main program.  */
24	movl	%gs:0, %eax
25	subl	$bar@TPOFF, %eax
26	/* %eax now contains &bar.  */
27
28	/* baz only in the main program.  */
29	movl	%gs:0, %ecx
30	/* Arbitrary instructions in between.  */
31	nop
32	subl	$baz@TPOFF, %ecx
33	/* %ecx now contains &baz.  */
34
35	/* var and var2 only in the main program.  */
36	movl	%gs:0, %ecx
37	/* Arbitrary instructions in between.  */
38	nop
39	nop
40	leal	var@NTPOFF(%ecx), %eax
41	/* Arbitrary instructions in between.  */
42	nop
43	leal	var2@NTPOFF(%ecx), %edx
44
45	/* foo can be anywhere in startup TLS.  */
46	movl	foo@INDNTPOFF, %eax
47	movl	%gs:(%eax), %eax
48	/* %eax now contains foo.  */
49
50	movl	%gs:0, %eax
51	addl	foo@INDNTPOFF, %eax
52	/* %eax now contains &foo.  */
53
54	ret
55