Commit | Line | Data |
---|---|---|
6c597796 MS |
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 | ||
19 | Disassembly of section .text: | |
20 | ||
8c37241b | 21 | 0+[0-9a-f]+ <fn2>: |
6c597796 | 22 | # function prolog |
8c37241b JJ |
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> | |
6c597796 | 25 | # sG1@tlsgd |
8c37241b JJ |
26 | +[0-9a-f]+: 00 00 00 00 .long 0x00000000 |
27 | +[0-9a-f]+: 00 00 00 60 .long 0x00000060 | |
6c597796 | 28 | # sG2@tlsgd |
8c37241b JJ |
29 | +[0-9a-f]+: 00 00 00 00 .long 0x00000000 |
30 | +[0-9a-f]+: 00 00 00 48 .long 0x00000048 | |
6c597796 | 31 | # sg1@tlsgd |
8c37241b JJ |
32 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
33 | +[0-9a-f]+: ff ff ff 60 .long 0xffffff60 | |
6c597796 | 34 | # sl1@tlsgd |
8c37241b JJ |
35 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
36 | +[0-9a-f]+: ff ff ff 80 .long 0xffffff80 | |
6c597796 | 37 | # sh1@tlsgd |
8c37241b JJ |
38 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
39 | +[0-9a-f]+: ff ff ff a0 .long 0xffffffa0 | |
6c597796 | 40 | # sl1@tlsldm |
8c37241b JJ |
41 | +[0-9a-f]+: 00 00 00 00 .long 0x00000000 |
42 | +[0-9a-f]+: 00 00 00 00 .long 0x00000000 | |
6c597796 | 43 | # sl1@dtpoff |
8c37241b JJ |
44 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
45 | +[0-9a-f]+: ff ff ff 80 .long 0xffffff80 | |
6c597796 | 46 | # sl2@dtpoff |
8c37241b JJ |
47 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
48 | +[0-9a-f]+: ff ff ff 84 .long 0xffffff84 | |
6c597796 | 49 | # sh1@tlsldm |
8c37241b JJ |
50 | +[0-9a-f]+: 00 00 00 00 .long 0x00000000 |
51 | +[0-9a-f]+: 00 00 00 00 .long 0x00000000 | |
6c597796 | 52 | # sh1@dtpoff |
8c37241b JJ |
53 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
54 | +[0-9a-f]+: ff ff ff a0 .long 0xffffffa0 | |
6c597796 | 55 | # sh2@dtpoff |
8c37241b JJ |
56 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
57 | +[0-9a-f]+: ff ff ff a4 .long 0xffffffa4 | |
6c597796 | 58 | # sG2@gotntpoff |
8c37241b JJ |
59 | +[0-9a-f]+: 00 00 00 00 .long 0x00000000 |
60 | +[0-9a-f]+: 00 00 00 48 .long 0x00000048 | |
6c597796 | 61 | # sg1@gotntpoff |
8c37241b JJ |
62 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
63 | +[0-9a-f]+: ff ff ff 60 .long 0xffffff60 | |
6c597796 | 64 | # sl1@gotntpoff |
8c37241b JJ |
65 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
66 | +[0-9a-f]+: ff ff ff 80 .long 0xffffff80 | |
6c597796 | 67 | # sh1@gotntpoff |
8c37241b JJ |
68 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
69 | +[0-9a-f]+: ff ff ff a0 .long 0xffffffa0 | |
6c597796 | 70 | # function prolog |
8c37241b JJ |
71 | +[0-9a-f]+: b9 04 00 ef lgr %r14,%r15 |
72 | +[0-9a-f]+: a7 fb ff 60 aghi %r15,-160 | |
24801b15 | 73 | +[0-9a-f]+: c0 c0 [0-9a-f ]+ larl %r12,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_> |
8c37241b | 74 | +[0-9a-f]+: e3 e0 e0 00 00 24 stg %r14,0\(%r14\) |
6c597796 | 75 | # extract TCB |
8c37241b JJ |
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 | |
6c597796 | 79 | # GD -> IE because variable is not defined in executable |
8c37241b JJ |
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\) | |
6c597796 MS |
83 | # GD -> IE because variable is not defined in executable where |
84 | # the variable is referenced through IE too | |
8c37241b JJ |
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\) | |
6c597796 | 88 | # GD -> LE with global variable defined in executable |
8c37241b JJ |
89 | +[0-9a-f]+: e3 20 d0 10 00 04 lg %r2,16\(%r13\) |
90 | +[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0xca> | |
91 | +[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\) | |
6c597796 | 92 | # GD -> LE with local variable defined in executable |
8c37241b JJ |
93 | +[0-9a-f]+: e3 20 d0 18 00 04 lg %r2,24\(%r13\) |
94 | +[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0xda> | |
95 | +[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\) | |
6c597796 | 96 | # GD -> LE with hidden variable defined in executable |
8c37241b JJ |
97 | +[0-9a-f]+: e3 20 d0 20 00 04 lg %r2,32\(%r13\) |
98 | +[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0xea> | |
99 | +[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\) | |
6c597796 | 100 | # LD -> LE |
8c37241b JJ |
101 | +[0-9a-f]+: e3 20 d0 28 00 04 lg %r2,40\(%r13\) |
102 | +[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[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 brcl 0,[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\) | |
6c597796 | 115 | # IE against global var |
8c37241b JJ |
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\) | |
6c597796 | 119 | # IE -> LE against global var defined in exec |
8c37241b JJ |
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\) | |
6c597796 | 123 | # IE -> LE against local var |
8c37241b JJ |
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\) | |
6c597796 | 127 | # IE -> LE against hidden var |
8c37241b JJ |
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\) | |
6c597796 | 131 | # IE against global var with larl got access |
a24bb4f0 | 132 | +[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <.*> |
8c37241b JJ |
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\) | |
6c597796 | 135 | # IE against global var defined in exec with larl got access |
24801b15 | 136 | +[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x38> |
8c37241b JJ |
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\) | |
6c597796 | 139 | # IE against local var with larl got access |
24801b15 | 140 | +[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x20> |
8c37241b JJ |
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\) | |
6c597796 | 143 | # IE against hidden var with larl got access |
24801b15 | 144 | +[0-9a-f]+: c0 30 [0-9a-f ]+ larl %r3,[0-9a-f]+ <_GLOBAL_OFFSET_TABLE_\+0x40> |
8c37241b JJ |
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\) | |
6c597796 | 147 | # IE against global var with small got access (no optimization) |
24801b15 | 148 | +[0-9a-f]+: e3 30 c0 28 00 04 lg %r3,40\(%r12\) |
8c37241b | 149 | +[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\) |
6c597796 MS |
150 | # IE against global var defined in exec with small got access |
151 | # (no optimization) | |
24801b15 | 152 | +[0-9a-f]+: e3 30 c0 38 00 04 lg %r3,56\(%r12\) |
8c37241b | 153 | +[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\) |
6c597796 | 154 | # IE against local var with small got access (no optimization) |
24801b15 | 155 | +[0-9a-f]+: e3 30 c0 20 00 04 lg %r3,32\(%r12\) |
8c37241b | 156 | +[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\) |
6c597796 | 157 | # IE against hidden var with small got access (no optimization) |
24801b15 | 158 | +[0-9a-f]+: e3 30 c0 40 00 04 lg %r3,64\(%r12\) |
8c37241b | 159 | +[0-9a-f]+: 41 33 90 00 la %r3,0\(%r3,%r9\) |
6c597796 | 160 | # function epilog |
8c37241b JJ |
161 | +[0-9a-f]+: eb 6e f0 d0 00 04 lmg %r6,%r14,208\(%r15\) |
162 | +[0-9a-f]+: 07 fe br %r14 | |
02cbf767 AK |
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 | |
6c597796 | 173 | |
8c37241b | 174 | 0+[0-9a-f]+ <_start>: |
6c597796 | 175 | # function prolog |
8c37241b JJ |
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> | |
6c597796 | 178 | # sG6@indntpoff |
8c37241b | 179 | +[0-9a-f]+: 00 00 00 00 .long 0x00000000 |
24801b15 | 180 | +[0-9a-f]+: 01 00 18 18 .long 0x01001818 |
6c597796 | 181 | # bg6@indntpoff |
8c37241b JJ |
182 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
183 | +[0-9a-f]+: ff ff ff d4 .long 0xffffffd4 | |
6c597796 | 184 | # bl6@indntpoff |
8c37241b JJ |
185 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
186 | +[0-9a-f]+: ff ff ff f4 .long 0xfffffff4 | |
6c597796 | 187 | # sh6@indntpoff |
8c37241b JJ |
188 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
189 | +[0-9a-f]+: ff ff ff b4 .long 0xffffffb4 | |
6c597796 | 190 | # sg3@indntpoff |
8c37241b JJ |
191 | +[0-9a-f]+: ff ff ff ff .long 0xffffffff |
192 | +[0-9a-f]+: ff ff ff 68 .long 0xffffff68 | |
6c597796 | 193 | # function prolog |
8c37241b JJ |
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\) | |
6c597796 | 197 | # extract TCB |
8c37241b JJ |
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 | |
6c597796 | 201 | # IE against global var |
8c37241b JJ |
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\) | |
6c597796 | 205 | # IE -> LE against global var defined in exec |
8c37241b JJ |
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\) | |
6c597796 | 209 | # IE -> LE against local var |
8c37241b JJ |
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\) | |
6c597796 | 213 | # IE -> LE against hidden but not local var |
8c37241b JJ |
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\) | |
6c597796 | 217 | # LE, global var defined in exec |
8c37241b JJ |
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\) | |
6c597796 | 220 | # function epilog |
8c37241b JJ |
221 | +[0-9a-f]+: eb 6e f0 d0 00 04 lmg %r6,%r14,208\(%r15\) |
222 | +[0-9a-f]+: 07 fe br %r14 | |
02cbf767 | 223 | +[0-9a-f]+: 07 07 nopr %r7 |