150276Speter	.section ".tbss", "awT", @nobits
2184989Srafan	.globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
350276Speterbg1:	.space 4
450276Speterbg2:	.space 4
550276Speterbg3:	.space 4
6166124Srafanbg4:	.space 4
7184989Srafanbg5:	.space 4
8166124Srafanbg6:	.space 4
9166124Srafanbg7:	.space 4
10166124Srafanbg8:	.space 4
11166124Srafanbl1:	.space 4
12166124Srafanbl2:	.space 4
13166124Srafanbl3:	.space 4
14166124Srafanbl4:	.space 4
15166124Srafanbl5:	.space 4
16166124Srafanbl6:	.space 4
17166124Srafanbl7:	.space 4
18166124Srafanbl8:	.space 4
19166124Srafan	.text
20166124Srafan	.globl	_start
21166124Srafan	.type	_start,@function
22166124Srafan_start:
23166124Srafan	pushl	%ebp
24166124Srafan	movl	%esp, %ebp
25166124Srafan	/* Set up .GOT pointer for non-pic @gottpoff sequences */
26166124Srafan	call	1f
27166124Srafan1:	popl	%ecx
28166124Srafan	addl	$_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
29166124Srafan	nop;nop;nop;nop
30166124Srafan
31166124Srafan	/* @gottpoff IE against global var  */
32166124Srafan	movl	%gs:0, %edx
33166124Srafan	nop;nop
3450276Speter	subl	sG6@gottpoff(%ecx), %edx
3550276Speter	nop;nop;nop;nop
3650276Speter
3762449Speter	/* @indntpoff IE against global var  */
38166124Srafan	movl	%gs:0, %eax
39166124Srafan	nop;nop
40166124Srafan	addl	sG7@indntpoff, %eax
41166124Srafan	nop;nop;nop;nop
42166124Srafan
43166124Srafan	/* @indntpoff direct %gs access IE against global var  */
4462449Speter	movl	sG8@indntpoff, %edx
4550276Speter	nop;nop
4650276Speter	movl	%gs:(%edx), %eax
4750276Speter	nop;nop;nop;nop
4897049Speter
4997049Speter	/* @gottpoff IE -> LE against global var defined in exec  */
50166124Srafan	movl	%gs:0, %edx
5197049Speter	nop;nop
5297049Speter	subl	bg6@gottpoff(%ecx), %edx
5350276Speter	nop;nop;nop;nop
5450276Speter
5550276Speter	/* @indntpoff IE -> LE against global var defined in exec */
5662449Speter	movl	%gs:0, %eax
5750276Speter	nop;nop
5850276Speter	addl	bg7@indntpoff, %eax
59184989Srafan	nop;nop;nop;nop
6050276Speter
6150276Speter	/* @indntpoff direct %gs access IE -> LE against global var defined
6250276Speter	   in exec  */
6350276Speter	movl	bg8@indntpoff, %edx
6450276Speter	nop;nop
6550276Speter	movl	%gs:(%edx), %eax
6650276Speter	nop;nop;nop;nop
6750276Speter
68184989Srafan	/* @gottpoff IE -> LE against local var  */
6950276Speter	movl	%gs:0, %edx
7050276Speter	nop;nop
7150276Speter	subl	bl6@gottpoff(%ecx), %edx
7250276Speter	nop;nop;nop;nop
7350276Speter
7450276Speter	/* @indntpoff IE -> LE against local var  */
7550276Speter	movl	%gs:0, %eax
7650276Speter	nop;nop
77184989Srafan	addl	bl7@indntpoff, %eax
7850276Speter	nop;nop;nop;nop
7950276Speter
8050276Speter	/* @indntpoff direct %gs access IE -> LE against local var  */
8150276Speter	movl	bl8@indntpoff, %edx
8250276Speter	nop;nop
8350276Speter	movl	%gs:(%edx), %eax
8450276Speter	nop;nop;nop;nop
8550276Speter
86184989Srafan	/* @gottpoff IE -> LE against hidden but not local var  */
8750276Speter	movl	%gs:0, %edx
8850276Speter	nop;nop
8950276Speter	subl	sh6@gottpoff(%ecx), %edx
9050276Speter	nop;nop;nop;nop
9150276Speter
9250276Speter	/* @indntpoff IE -> LE against hidden but not local var  */
9350276Speter	movl	%gs:0, %eax
9450276Speter	nop;nop
95184989Srafan	addl	sh7@indntpoff, %eax
9650276Speter	nop;nop;nop;nop
9750276Speter
9850276Speter	/* @indntpoff direct %gs access IE -> LE against hidden but not
9950276Speter	   local var  */
10050276Speter	movl	sh8@indntpoff, %edx
10150276Speter	nop;nop
10250276Speter	movl	%gs:(%edx), %eax
10350276Speter	nop;nop;nop;nop
104184989Srafan
10550276Speter	/* LE @tpoff, global var defined in exec  */
10650276Speter	movl	$sg1@tpoff, %edx
10750276Speter	nop;nop
10850276Speter	movl	%gs:0, %eax
10950276Speter	nop;nop
11050276Speter	subl	%edx, %eax
11150276Speter	nop;nop;nop;nop
11250276Speter
113184989Srafan	/* LE @tpoff, local var  */
11450276Speter	movl	$-1+bl1@tpoff, %eax
11550276Speter	nop;nop
11650276Speter	movl	%gs:0, %edx
11750276Speter	nop;nop
11850276Speter	subl	%eax, %edx
11950276Speter	nop;nop;nop;nop
12050276Speter
12150276Speter	/* LE @tpoff, hidden var defined in exec  */
122184989Srafan	movl	$sh1@tpoff-3, %eax
12350276Speter	nop;nop
12450276Speter	movl	%gs:0, %edx
12550276Speter	nop;nop
12650276Speter	subl	%eax, %edx
12750276Speter	nop;nop;nop;nop
12850276Speter
12950276Speter	/* LE @ntpoff, global var defined in exec  */
13050276Speter	movl	%gs:0, %eax
131184989Srafan	nop;nop
13250276Speter	leal	sg2@ntpoff(%eax), %edx
13350276Speter	nop;nop;nop;nop
13450276Speter
13550276Speter	/* LE @ntpoff, local var, non-canonical sequence  */
13650276Speter	movl	$2+bl2@ntpoff, %eax
13750276Speter	nop;nop
13850276Speter	movl	%gs:0, %edx
13950276Speter	nop;nop
14062449Speter	addl	%eax, %edx
14150276Speter	nop;nop;nop;nop
14297049Speter
14397049Speter	/* LE @ntpoff, hidden var defined in exec, non-canonical sequence */
14450276Speter	movl	%gs:0, %edx
14550276Speter	nop;nop
14650276Speter	addl	$sh2@ntpoff+1, %edx
14750276Speter	nop;nop;nop;nop
14862449Speter
14950276Speter	/* Direct %gs access  */
15097049Speter
15197049Speter	/* LE @ntpoff, global var defined in exec  */
15250276Speter	movl	%gs:sg3@ntpoff, %eax
15350276Speter	nop;nop;nop;nop
15450276Speter
15550276Speter	/* LE @ntpoff, local var  */
15662449Speter	movl	%gs:bl3@ntpoff+3, %edx
15750276Speter	nop;nop;nop;nop
15897049Speter
15997049Speter	/* LE @ntpoff, hidden var defined in exec  */
16050276Speter	movl	%gs:1+sh3@ntpoff, %edx
16150276Speter	nop;nop;nop;nop
16250276Speter
16397049Speter	movl    -4(%ebp), %ebx
16497049Speter	leave
165	ret
166