1#source: tlsbinpic_64.s
2#source: tlsbin_64.s
3#as: -m64 -Aesame
4#ld: -shared -melf64_s390
5#objdump: -dzrj.text
6#target: s390x-*-*
7
8# PT_TLS layout is:
9# Offset from   Offset from     Name
10# TCB base      TCB end
11# 0x00          -0xa0           sg1..sg2
12# 0x20          -0x80           sl1..sl2
13# 0x40          -0x60           sh1..sh2
14# 0x60          -0x40           bg1..bg2
15# 0x80          -0x20           bl1..bl2
16
17.*: +file format elf64-s390
18
19Disassembly of section .text:
20
210+[0-9a-f]+ <fn2>:
22# function prolog
23 +[0-9a-f]+:	eb 6e f0 30 00 24 	stmg	%r6,%r14,48\(%r15\)
24 +[0-9a-f]+:	a7 d5 00 3e       	bras	%r13,[0-9a-f]+ <fn2\+0x82>
25# sG1@tlsgd
26 +[0-9a-f]+:	00 00 00 00       	.long	0x00000000
27 +[0-9a-f]+:	00 00 00 60       	.long	0x00000060
28# sG2@tlsgd
29 +[0-9a-f]+:	00 00 00 00       	.long	0x00000000
30 +[0-9a-f]+:	00 00 00 48       	.long	0x00000048
31# sg1@tlsgd
32 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
33 +[0-9a-f]+:	ff ff ff 60       	.long	0xffffff60
34# sl1@tlsgd
35 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
36 +[0-9a-f]+:	ff ff ff 80       	.long	0xffffff80
37# sh1@tlsgd
38 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
39 +[0-9a-f]+:	ff ff ff a0       	.long	0xffffffa0
40# sl1@tlsldm
41 +[0-9a-f]+:	00 00 00 00       	.long	0x00000000
42 +[0-9a-f]+:	00 00 00 00       	.long	0x00000000
43# sl1@dtpoff
44 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
45 +[0-9a-f]+:	ff ff ff 80       	.long	0xffffff80
46# sl2@dtpoff
47 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
48 +[0-9a-f]+:	ff ff ff 84       	.long	0xffffff84
49# sh1@tlsldm
50 +[0-9a-f]+:	00 00 00 00       	.long	0x00000000
51 +[0-9a-f]+:	00 00 00 00       	.long	0x00000000
52# sh1@dtpoff
53 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
54 +[0-9a-f]+:	ff ff ff a0       	.long	0xffffffa0
55# sh2@dtpoff
56 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
57 +[0-9a-f]+:	ff ff ff a4       	.long	0xffffffa4
58# sG2@gotntpoff
59 +[0-9a-f]+:	00 00 00 00       	.long	0x00000000
60 +[0-9a-f]+:	00 00 00 48       	.long	0x00000048
61# sg1@gotntpoff
62 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
63 +[0-9a-f]+:	ff ff ff 60       	.long	0xffffff60
64# sl1@gotntpoff
65 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
66 +[0-9a-f]+:	ff ff ff 80       	.long	0xffffff80
67# sh1@gotntpoff
68 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
69 +[0-9a-f]+:	ff ff ff a0       	.long	0xffffffa0
70# function prolog
71 +[0-9a-f]+:	b9 04 00 ef       	lgr	%r14,%r15
72 +[0-9a-f]+:	a7 fb ff 60       	aghi	%r15,-160
73 +[0-9a-f]+:	c0 c0 [0-9a-f ]+ 	larl	%r12,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_>
74 +[0-9a-f]+:	e3 e0 e0 00 00 24 	stg	%r14,0\(%r14\)
75# extract TCB
76 +[0-9a-f]+:	b2 4f 00 90       	ear	%r9,%a0
77 +[0-9a-f]+:	eb 94 00 20 00 0d 	sllg	%r9,%r4,32
78 +[0-9a-f]+:	b2 4f 00 91       	ear	%r9,%a1
79# GD -> IE because variable is not defined in executable
80 +[0-9a-f]+:	e3 c0 d0 00 00 04 	lg	%r12,0\(%r13\)
81 +[0-9a-f]+:	e3 22 c0 00 00 04 	lg	%r2,0\(%r2,%r12\)
82 +[0-9a-f]+:	41 22 90 00       	la	%r2,0\(%r2,%r9\)
83# GD -> IE because variable is not defined in executable where
84# the variable is referenced through IE too
85 +[0-9a-f]+:	e3 20 d0 08 00 04 	lg	%r2,8\(%r13\)
86 +[0-9a-f]+:	e3 22 c0 00 00 04 	lg	%r2,0\(%r2,%r12\)
87 +[0-9a-f]+:	41 22 90 00       	la	%r2,0\(%r2,%r9\)
88# GD -> LE with global variable defined in executable
89 +[0-9a-f]+:	e3 20 d0 10 00 04 	lg	%r2,16\(%r13\)
90 +[0-9a-f]+:	c0 04 00 00 00 00 	jgnop	[0-9a-f]+ <fn2\+0xca>
91 +[0-9a-f]+:	41 22 90 00       	la	%r2,0\(%r2,%r9\)
92# GD -> LE with local variable defined in executable
93 +[0-9a-f]+:	e3 20 d0 18 00 04 	lg	%r2,24\(%r13\)
94 +[0-9a-f]+:	c0 04 00 00 00 00 	jgnop	[0-9a-f]+ <fn2\+0xda>
95 +[0-9a-f]+:	41 22 90 00       	la	%r2,0\(%r2,%r9\)
96# GD -> LE with hidden variable defined in executable
97 +[0-9a-f]+:	e3 20 d0 20 00 04 	lg	%r2,32\(%r13\)
98 +[0-9a-f]+:	c0 04 00 00 00 00 	jgnop	[0-9a-f]+ <fn2\+0xea>
99 +[0-9a-f]+:	41 22 90 00       	la	%r2,0\(%r2,%r9\)
100# LD -> LE
101 +[0-9a-f]+:	e3 20 d0 28 00 04 	lg	%r2,40\(%r13\)
102 +[0-9a-f]+:	c0 04 00 00 00 00 	jgnop	[0-9a-f]+ <fn2\+0xfa>
103 +[0-9a-f]+:	41 32 90 00       	la	%r3,0\(%r2,%r9\)
104 +[0-9a-f]+:	e3 40 d0 30 00 04 	lg	%r4,48\(%r13\)
105 +[0-9a-f]+:	41 54 30 00       	la	%r5,0\(%r4,%r3\)
106 +[0-9a-f]+:	e3 40 d0 38 00 04 	lg	%r4,56\(%r13\)
107 +[0-9a-f]+:	41 54 30 00       	la	%r5,0\(%r4,%r3\)
108 +[0-9a-f]+:	e3 20 d0 40 00 04 	lg	%r2,64\(%r13\)
109 +[0-9a-f]+:	c0 04 00 00 00 00 	jgnop	[0-9a-f]+ <fn2\+0x11e>
110 +[0-9a-f]+:	41 32 90 00       	la	%r3,0\(%r2,%r9\)
111 +[0-9a-f]+:	e3 40 d0 48 00 04 	lg	%r4,72\(%r13\)
112 +[0-9a-f]+:	41 54 30 00       	la	%r5,0\(%r4,%r3\)
113 +[0-9a-f]+:	e3 40 d0 50 00 04 	lg	%r4,80\(%r13\)
114 +[0-9a-f]+:	41 54 30 00       	la	%r5,0\(%r4,%r3\)
115# IE against global var
116 +[0-9a-f]+:	e3 30 d0 58 00 04 	lg	%r3,88\(%r13\)
117 +[0-9a-f]+:	e3 33 c0 00 00 04 	lg	%r3,0\(%r3,%r12\)
118 +[0-9a-f]+:	41 33 90 00       	la	%r3,0\(%r3,%r9\)
119# IE -> LE against global var defined in exec
120 +[0-9a-f]+:	e3 30 d0 60 00 04 	lg	%r3,96\(%r13\)
121 +[0-9a-f]+:	eb 43 00 00 00 0d 	sllg	%r4,%r3,0
122 +[0-9a-f]+:	41 54 90 00       	la	%r5,0\(%r4,%r9\)
123# IE -> LE against local var
124 +[0-9a-f]+:	e3 30 d0 68 00 04 	lg	%r3,104\(%r13\)
125 +[0-9a-f]+:	eb 43 00 00 00 0d 	sllg	%r4,%r3,0
126 +[0-9a-f]+:	41 54 90 00       	la	%r5,0\(%r4,%r9\)
127# IE -> LE against hidden var
128 +[0-9a-f]+:	e3 30 d0 70 00 04 	lg	%r3,112\(%r13\)
129 +[0-9a-f]+:	eb 43 00 00 00 0d 	sllg	%r4,%r3,0
130 +[0-9a-f]+:	41 54 90 00       	la	%r5,0\(%r4,%r9\)
131# IE against global var with larl got access
132 +[0-9a-f]+:	c0 30 [0-9a-f ]+ 	larl	%r3,[0-9a-f]+ <.*>
133 +[0-9a-f]+:	e3 33 c0 00 00 04 	lg	%r3,0\(%r3,%r12\)
134 +[0-9a-f]+:	41 33 90 00       	la	%r3,0\(%r3,%r9\)
135# IE against global var defined in exec with larl got access
136 +[0-9a-f]+:	c0 30 [0-9a-f ]+ 	larl	%r3,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x38>
137 +[0-9a-f]+:	eb 43 00 00 00 0d 	sllg	%r4,%r3,0
138 +[0-9a-f]+:	41 54 90 00       	la	%r5,0\(%r4,%r9\)
139# IE against local var with larl got access
140 +[0-9a-f]+:	c0 30 [0-9a-f ]+ 	larl	%r3,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x20>
141 +[0-9a-f]+:	eb 43 00 00 00 0d 	sllg	%r4,%r3,0
142 +[0-9a-f]+:	41 54 90 00       	la	%r5,0\(%r4,%r9\)
143# IE against hidden var with larl got access
144 +[0-9a-f]+:	c0 30 [0-9a-f ]+ 	larl	%r3,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x40>
145 +[0-9a-f]+:	eb 43 00 00 00 0d 	sllg	%r4,%r3,0
146 +[0-9a-f]+:	41 54 90 00       	la	%r5,0\(%r4,%r9\)
147# IE against global var with small got access (no optimization)
148 +[0-9a-f]+:	e3 30 c0 28 00 04 	lg	%r3,40\(%r12\)
149 +[0-9a-f]+:	41 33 90 00       	la	%r3,0\(%r3,%r9\)
150# IE against global var defined in exec with small got access
151# (no optimization)
152 +[0-9a-f]+:	e3 30 c0 38 00 04 	lg	%r3,56\(%r12\)
153 +[0-9a-f]+:	41 33 90 00       	la	%r3,0\(%r3,%r9\)
154# IE against local var with small got access (no optimization)
155 +[0-9a-f]+:	e3 30 c0 20 00 04 	lg	%r3,32\(%r12\)
156 +[0-9a-f]+:	41 33 90 00       	la	%r3,0\(%r3,%r9\)
157# IE against hidden var with small got access (no optimization)
158 +[0-9a-f]+:	e3 30 c0 40 00 04 	lg	%r3,64\(%r12\)
159 +[0-9a-f]+:	41 33 90 00       	la	%r3,0\(%r3,%r9\)
160# function epilog
161 +[0-9a-f]+:	eb 6e f0 d0 00 04 	lmg	%r6,%r14,208\(%r15\)
162 +[0-9a-f]+:	07 fe             	br	%r14
163 +[0-9a-f]+:	07 07             	nopr	%r7
164 +[0-9a-f]+:	07 07             	nopr	%r7
165 +[0-9a-f]+:	07 07             	nopr	%r7
166 +[0-9a-f]+:	07 07             	nopr	%r7
167 +[0-9a-f]+:	07 07             	nopr	%r7
168 +[0-9a-f]+:	07 07             	nopr	%r7
169 +[0-9a-f]+:	07 07             	nopr	%r7
170 +[0-9a-f]+:	07 07             	nopr	%r7
171 +[0-9a-f]+:	07 07             	nopr	%r7
172 +[0-9a-f]+:	07 07             	nopr	%r7
173
1740+[0-9a-f]+ <_start>:
175# function prolog
176 +[0-9a-f]+:	90 6e f0 18       	stm	%r6,%r14,24\(%r15\)
177 +[0-9a-f]+:	a7 d5 00 16       	bras	%r13,[0-9a-f]+ <_start\+0x30>
178# sG6@indntpoff
179 +[0-9a-f]+:	00 00 00 00       	.long	0x00000000
180 +[0-9a-f]+:	01 00 18 18       	.long	0x01001818
181# bg6@indntpoff
182 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
183 +[0-9a-f]+:	ff ff ff d4       	.long	0xffffffd4
184# bl6@indntpoff
185 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
186 +[0-9a-f]+:	ff ff ff f4       	.long	0xfffffff4
187# sh6@indntpoff
188 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
189 +[0-9a-f]+:	ff ff ff b4       	.long	0xffffffb4
190# sg3@indntpoff
191 +[0-9a-f]+:	ff ff ff ff       	.long	0xffffffff
192 +[0-9a-f]+:	ff ff ff 68       	.long	0xffffff68
193# function prolog
194 +[0-9a-f]+:	b9 04 00 ef       	lgr	%r14,%r15
195 +[0-9a-f]+:	a7 fb ff 60       	aghi	%r15,-160
196 +[0-9a-f]+:	e3 e0 e0 00 00 24 	stg	%r14,0\(%r14\)
197# extract TCB
198 +[0-9a-f]+:	b2 4f 00 90       	ear	%r9,%a0
199 +[0-9a-f]+:	eb 94 00 20 00 0d 	sllg	%r9,%r4,32
200 +[0-9a-f]+:	b2 4f 00 91       	ear	%r9,%a1
201# IE against global var
202 +[0-9a-f]+:	e3 30 d0 00 00 04 	lg	%r3,0\(%r13\)
203 +[0-9a-f]+:	e3 33 c0 00 00 04 	lg	%r3,0\(%r3,%r12\)
204 +[0-9a-f]+:	41 33 90 00       	la	%r3,0\(%r3,%r9\)
205# IE -> LE against global var defined in exec
206 +[0-9a-f]+:	e3 30 d0 08 00 04 	lg	%r3,8\(%r13\)
207 +[0-9a-f]+:	eb 43 00 00 00 0d 	sllg	%r4,%r3,0
208 +[0-9a-f]+:	41 54 90 00       	la	%r5,0\(%r4,%r9\)
209# IE -> LE against local var
210 +[0-9a-f]+:	e3 30 d0 10 00 04 	lg	%r3,16\(%r13\)
211 +[0-9a-f]+:	eb 43 00 00 00 0d 	sllg	%r4,%r3,0
212 +[0-9a-f]+:	41 54 90 00       	la	%r5,0\(%r4,%r9\)
213# IE -> LE against hidden but not local var
214 +[0-9a-f]+:	e3 30 d0 18 00 04 	lg	%r3,24\(%r13\)
215 +[0-9a-f]+:	eb 43 00 00 00 0d 	sllg	%r4,%r3,0
216 +[0-9a-f]+:	41 54 90 00       	la	%r5,0\(%r4,%r9\)
217# LE, global var defined in exec
218 +[0-9a-f]+:	e3 40 d0 20 00 04 	lg	%r4,32\(%r13\)
219 +[0-9a-f]+:	41 54 90 00       	la	%r5,0\(%r4,%r9\)
220# function epilog
221 +[0-9a-f]+:	eb 6e f0 d0 00 04 	lmg	%r6,%r14,208\(%r15\)
222 +[0-9a-f]+:	07 fe             	br	%r14
223 +[0-9a-f]+:	07 07             	nopr	%r7
224