Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / lld / test / ELF / pack-dyn-relocs.s
blobda97e388c3d0c5db7ba5cf33dc6b68abf82e054c
1 // REQUIRES: arm, aarch64
3 // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %p/Inputs/arm-shared.s -o %t.a32.so.o
4 // RUN: ld.lld -shared %t.a32.so.o -soname=so -o %t.a32.so
5 // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.a32.o
6 // RUN: ld.lld -pie --pack-dyn-relocs=none %t.a32.o %t.a32.so -o %t2.a32
7 // RUN: llvm-readobj -r %t2.a32 | FileCheck --check-prefix=UNPACKED32 %s
9 // RUN: not ld.lld --pack-dyn-relocs=invalid %t.a32.o %t.a32.so -o /dev/null 2>&1 | FileCheck %s --check-prefix=UNKNOWN
11 // UNKNOWN: unknown --pack-dyn-relocs format: invalid
13 /// Unpacked should have the relative relocations in their natural order.
14 /// UNPACKED32: Section ({{.+}}) .rel.dyn {
15 // UNPACKED32-NEXT: 0x30324 R_ARM_RELATIVE -
16 // UNPACKED32-NEXT: 0x30328 R_ARM_RELATIVE -
17 // UNPACKED32-NEXT: 0x3032C R_ARM_RELATIVE -
18 // UNPACKED32-NEXT: 0x30330 R_ARM_RELATIVE -
19 // UNPACKED32-NEXT: 0x30334 R_ARM_RELATIVE -
20 // UNPACKED32-NEXT: 0x30338 R_ARM_RELATIVE -
21 // UNPACKED32-NEXT: 0x3033C R_ARM_RELATIVE -
22 // UNPACKED32-NEXT: 0x30340 R_ARM_RELATIVE -
24 // UNPACKED32-NEXT: 0x30348 R_ARM_RELATIVE -
25 // UNPACKED32-NEXT: 0x3034C R_ARM_RELATIVE -
26 // UNPACKED32-NEXT: 0x30350 R_ARM_RELATIVE -
27 // UNPACKED32-NEXT: 0x30354 R_ARM_RELATIVE -
28 // UNPACKED32-NEXT: 0x30358 R_ARM_RELATIVE -
29 // UNPACKED32-NEXT: 0x3035C R_ARM_RELATIVE -
30 // UNPACKED32-NEXT: 0x30360 R_ARM_RELATIVE -
32 // UNPACKED32-NEXT: 0x3036C R_ARM_RELATIVE -
33 // UNPACKED32-NEXT: 0x30370 R_ARM_RELATIVE -
34 // UNPACKED32-NEXT: 0x30374 R_ARM_RELATIVE -
35 // UNPACKED32-NEXT: 0x30378 R_ARM_RELATIVE -
36 // UNPACKED32-NEXT: 0x3037C R_ARM_RELATIVE -
37 // UNPACKED32-NEXT: 0x30380 R_ARM_RELATIVE -
38 // UNPACKED32-NEXT: 0x30384 R_ARM_RELATIVE -
39 // UNPACKED32-NEXT: 0x30388 R_ARM_RELATIVE -
40 // UNPACKED32-NEXT: 0x3038C R_ARM_RELATIVE -
41 // UNPACKED32-NEXT: 0x30391 R_ARM_RELATIVE -
43 // UNPACKED32-NEXT: 0x30344 R_ARM_ABS32 bar2
44 // UNPACKED32-NEXT: 0x30368 R_ARM_ABS32 bar2
45 // UNPACKED32-NEXT: 0x30395 R_ARM_ABS32 bar2
46 // UNPACKED32-NEXT: 0x30399 R_ARM_ABS32 bar2
47 // UNPACKED32-NEXT: 0x3039D R_ARM_ABS32 bar2
48 // UNPACKED32-NEXT: 0x303A1 R_ARM_ABS32 bar2
49 // UNPACKED32-NEXT: 0x303A5 R_ARM_ABS32 bar2
50 // UNPACKED32-NEXT: 0x30364 R_ARM_ABS32 zed2
51 // UNPACKED32-NEXT: }
53 // RUN: ld.lld -pie --pack-dyn-relocs=android %t.a32.o %t.a32.so -o %t3.a32
54 // RUN: llvm-readobj -S --dynamic-table %t3.a32 | FileCheck --check-prefix=ANDROID32-HEADERS %s
55 // RUN: llvm-readobj -r %t3.a32 | FileCheck --check-prefix=ANDROID32 %s
57 // ANDROID32-HEADERS: Index: 1
58 // ANDROID32-HEADERS-NEXT: Name: .dynsym
60 // ANDROID32-HEADERS: Name: .rel.dyn
61 // ANDROID32-HEADERS-NEXT: Type: SHT_ANDROID_REL
62 // ANDROID32-HEADERS-NEXT: Flags [ (0x2)
63 // ANDROID32-HEADERS-NEXT: SHF_ALLOC (0x2)
64 // ANDROID32-HEADERS-NEXT: ]
65 // ANDROID32-HEADERS-NEXT: Address: [[ADDR:.*]]
66 // ANDROID32-HEADERS-NEXT: Offset: [[ADDR]]
67 // ANDROID32-HEADERS-NEXT: Size: [[SIZE:.*]]
68 // ANDROID32-HEADERS-NEXT: Link: 1
69 // ANDROID32-HEADERS-NEXT: Info: 0
70 // ANDROID32-HEADERS-NEXT: AddressAlignment: 4
71 // ANDROID32-HEADERS-NEXT: EntrySize: 1
73 // ANDROID32-HEADERS: 0x6000000F ANDROID_REL [[ADDR]]
74 // ANDROID32-HEADERS: 0x60000010 ANDROID_RELSZ [[SIZE]]
76 /// Packed should have the groups of non-relative relocations first, followed
77 /// by the larger groups of relative relocations (i.e. the 8 and 9 followed
78 /// by the 7.)
79 // ANDROID32: Section ({{.+}}) .rel.dyn {
80 // ANDROID32-NEXT: 0x3024C R_ARM_RELATIVE -
81 // ANDROID32-NEXT: 0x30250 R_ARM_RELATIVE -
82 // ANDROID32-NEXT: 0x30254 R_ARM_RELATIVE -
83 // ANDROID32-NEXT: 0x30258 R_ARM_RELATIVE -
84 // ANDROID32-NEXT: 0x3025C R_ARM_RELATIVE -
85 // ANDROID32-NEXT: 0x30260 R_ARM_RELATIVE -
86 // ANDROID32-NEXT: 0x30264 R_ARM_RELATIVE -
87 // ANDROID32-NEXT: 0x30268 R_ARM_RELATIVE -
89 // ANDROID32-NEXT: 0x30294 R_ARM_RELATIVE -
90 // ANDROID32-NEXT: 0x30298 R_ARM_RELATIVE -
91 // ANDROID32-NEXT: 0x3029C R_ARM_RELATIVE -
92 // ANDROID32-NEXT: 0x302A0 R_ARM_RELATIVE -
93 // ANDROID32-NEXT: 0x302A4 R_ARM_RELATIVE -
94 // ANDROID32-NEXT: 0x302A8 R_ARM_RELATIVE -
95 // ANDROID32-NEXT: 0x302AC R_ARM_RELATIVE -
96 // ANDROID32-NEXT: 0x302B0 R_ARM_RELATIVE -
97 // ANDROID32-NEXT: 0x302B4 R_ARM_RELATIVE -
99 // ANDROID32-NEXT: 0x30270 R_ARM_RELATIVE -
100 // ANDROID32-NEXT: 0x30274 R_ARM_RELATIVE -
101 // ANDROID32-NEXT: 0x30278 R_ARM_RELATIVE -
102 // ANDROID32-NEXT: 0x3027C R_ARM_RELATIVE -
103 // ANDROID32-NEXT: 0x30280 R_ARM_RELATIVE -
104 // ANDROID32-NEXT: 0x30284 R_ARM_RELATIVE -
105 // ANDROID32-NEXT: 0x30288 R_ARM_RELATIVE -
107 // ANDROID32-NEXT: 0x302B9 R_ARM_RELATIVE -
109 // ANDROID32-NEXT: 0x3026C R_ARM_ABS32 bar2
110 // ANDROID32-NEXT: 0x30290 R_ARM_ABS32 bar2
111 // ANDROID32-NEXT: 0x302BD R_ARM_ABS32 bar2
112 // ANDROID32-NEXT: 0x302C1 R_ARM_ABS32 bar2
113 // ANDROID32-NEXT: 0x302C5 R_ARM_ABS32 bar2
114 // ANDROID32-NEXT: 0x302C9 R_ARM_ABS32 bar2
115 // ANDROID32-NEXT: 0x302CD R_ARM_ABS32 bar2
116 // ANDROID32-NEXT: 0x3028C R_ARM_ABS32 zed2
117 // ANDROID32-NEXT: }
119 // RUN: ld.lld -pie --pack-dyn-relocs=relr %t.a32.o %t.a32.so -o %t4.a32
120 // RUN: llvm-readobj -S --dynamic-table %t4.a32 | FileCheck --check-prefix=RELR32-HEADERS %s
121 // RUN: llvm-readobj -r --raw-relr %t4.a32 | FileCheck --check-prefix=RAW-RELR32 %s
122 // RUN: llvm-readobj -r %t4.a32 | FileCheck --check-prefix=RELR32 %s
124 // RELR32-HEADERS: Index: 1
125 // RELR32-HEADERS-NEXT: Name: .dynsym
127 // RELR32-HEADERS: Name: .relr.dyn
128 // RELR32-HEADERS-NEXT: Type: SHT_RELR
129 // RELR32-HEADERS-NEXT: Flags [ (0x2)
130 // RELR32-HEADERS-NEXT: SHF_ALLOC (0x2)
131 // RELR32-HEADERS-NEXT: ]
132 // RELR32-HEADERS-NEXT: Address: [[ADDR:.*]]
133 // RELR32-HEADERS-NEXT: Offset: [[ADDR]]
134 // RELR32-HEADERS-NEXT: Size: 8
135 // RELR32-HEADERS-NEXT: Link: 0
136 // RELR32-HEADERS-NEXT: Info: 0
137 // RELR32-HEADERS-NEXT: AddressAlignment: 4
138 // RELR32-HEADERS-NEXT: EntrySize: 4
140 // RELR32-HEADERS: 0x00000024 RELR [[ADDR]]
141 // RELR32-HEADERS: 0x00000023 RELRSZ 8 (bytes)
142 // RELR32-HEADERS: 0x00000025 RELRENT 4 (bytes)
144 /// SHT_RELR section contains address/bitmap entries
145 /// encoding the offsets for relative relocation.
146 // RAW-RELR32: Section ({{.+}}) .relr.dyn {
147 // RAW-RELR32-NEXT: 0x30284
148 // RAW-RELR32-NEXT: 0x7FCFEFF
149 // RAW-RELR32-NEXT: }
151 /// Decoded SHT_RELR section is same as UNPACKED,
152 /// but contains only the relative relocations.
153 /// Any relative relocations with odd offset stay in SHT_REL.
154 // RELR32: Section ({{.+}}) .rel.dyn {
155 // RELR32-NEXT: 0x302F1 R_ARM_RELATIVE -
156 // RELR32-NEXT: 0x302A4 R_ARM_ABS32 bar2
157 // RELR32-NEXT: 0x302C8 R_ARM_ABS32 bar2
158 // RELR32-NEXT: 0x302F5 R_ARM_ABS32 bar2
159 // RELR32-NEXT: 0x302F9 R_ARM_ABS32 bar2
160 // RELR32-NEXT: 0x302FD R_ARM_ABS32 bar2
161 // RELR32-NEXT: 0x30301 R_ARM_ABS32 bar2
162 // RELR32-NEXT: 0x30305 R_ARM_ABS32 bar2
163 // RELR32-NEXT: 0x302C4 R_ARM_ABS32 zed2
164 // RELR32-NEXT: }
165 // RELR32-NEXT: Section ({{.+}}) .relr.dyn {
166 // RELR32-NEXT: 0x30284 R_ARM_RELATIVE -
167 // RELR32-NEXT: 0x30288 R_ARM_RELATIVE -
168 // RELR32-NEXT: 0x3028C R_ARM_RELATIVE -
169 // RELR32-NEXT: 0x30290 R_ARM_RELATIVE -
170 // RELR32-NEXT: 0x30294 R_ARM_RELATIVE -
171 // RELR32-NEXT: 0x30298 R_ARM_RELATIVE -
172 // RELR32-NEXT: 0x3029C R_ARM_RELATIVE -
173 // RELR32-NEXT: 0x302A0 R_ARM_RELATIVE -
175 // RELR32-NEXT: 0x302A8 R_ARM_RELATIVE -
176 // RELR32-NEXT: 0x302AC R_ARM_RELATIVE -
177 // RELR32-NEXT: 0x302B0 R_ARM_RELATIVE -
178 // RELR32-NEXT: 0x302B4 R_ARM_RELATIVE -
179 // RELR32-NEXT: 0x302B8 R_ARM_RELATIVE -
180 // RELR32-NEXT: 0x302BC R_ARM_RELATIVE -
181 // RELR32-NEXT: 0x302C0 R_ARM_RELATIVE -
183 // RELR32-NEXT: 0x302CC R_ARM_RELATIVE -
184 // RELR32-NEXT: 0x302D0 R_ARM_RELATIVE -
185 // RELR32-NEXT: 0x302D4 R_ARM_RELATIVE -
186 // RELR32-NEXT: 0x302D8 R_ARM_RELATIVE -
187 // RELR32-NEXT: 0x302DC R_ARM_RELATIVE -
188 // RELR32-NEXT: 0x302E0 R_ARM_RELATIVE -
189 // RELR32-NEXT: 0x302E4 R_ARM_RELATIVE -
190 // RELR32-NEXT: 0x302E8 R_ARM_RELATIVE -
191 // RELR32-NEXT: 0x302EC R_ARM_RELATIVE -
192 // RELR32-NEXT: }
194 // RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-linux %p/Inputs/shared2.s -o %t.a64.so.o
195 // RUN: ld.lld -shared %t.a64.so.o -soname=so -o %t.a64.so
196 // RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-linux %s -o %t.a64.o
197 // RUN: ld.lld -pie --pack-dyn-relocs=none %t.a64.o %t.a64.so -o %t2.a64
198 // RUN: llvm-readobj -r %t2.a64 | FileCheck --check-prefix=UNPACKED64 %s
200 // UNPACKED64: Section ({{.+}}) .rela.dyn {
201 // UNPACKED64-NEXT: 0x30690 R_AARCH64_RELATIVE - 0x1
202 // UNPACKED64-NEXT: 0x30698 R_AARCH64_RELATIVE - 0x2
203 // UNPACKED64-NEXT: 0x306A0 R_AARCH64_RELATIVE - 0x3
204 // UNPACKED64-NEXT: 0x306A8 R_AARCH64_RELATIVE - 0x4
205 // UNPACKED64-NEXT: 0x306B0 R_AARCH64_RELATIVE - 0x5
206 // UNPACKED64-NEXT: 0x306B8 R_AARCH64_RELATIVE - 0x6
207 // UNPACKED64-NEXT: 0x306C0 R_AARCH64_RELATIVE - 0x7
208 // UNPACKED64-NEXT: 0x306C8 R_AARCH64_RELATIVE - 0x8
210 // UNPACKED64-NEXT: 0x306D8 R_AARCH64_RELATIVE - 0x1
211 // UNPACKED64-NEXT: 0x306E0 R_AARCH64_RELATIVE - 0x2
212 // UNPACKED64-NEXT: 0x306E8 R_AARCH64_RELATIVE - 0x3
213 // UNPACKED64-NEXT: 0x306F0 R_AARCH64_RELATIVE - 0x4
214 // UNPACKED64-NEXT: 0x306F8 R_AARCH64_RELATIVE - 0x5
215 // UNPACKED64-NEXT: 0x30700 R_AARCH64_RELATIVE - 0x6
216 // UNPACKED64-NEXT: 0x30708 R_AARCH64_RELATIVE - 0x7
218 // UNPACKED64-NEXT: 0x30720 R_AARCH64_RELATIVE - 0x1
219 // UNPACKED64-NEXT: 0x30728 R_AARCH64_RELATIVE - 0x2
220 // UNPACKED64-NEXT: 0x30730 R_AARCH64_RELATIVE - 0x3
221 // UNPACKED64-NEXT: 0x30738 R_AARCH64_RELATIVE - 0x4
222 // UNPACKED64-NEXT: 0x30740 R_AARCH64_RELATIVE - 0x5
223 // UNPACKED64-NEXT: 0x30748 R_AARCH64_RELATIVE - 0x6
224 // UNPACKED64-NEXT: 0x30750 R_AARCH64_RELATIVE - 0x7
225 // UNPACKED64-NEXT: 0x30758 R_AARCH64_RELATIVE - 0x8
226 // UNPACKED64-NEXT: 0x30760 R_AARCH64_RELATIVE - 0x9
228 // UNPACKED64-NEXT: 0x30769 R_AARCH64_RELATIVE - 0xA
230 // UNPACKED64-NEXT: 0x306D0 R_AARCH64_ABS64 bar2 0x1
231 // UNPACKED64-NEXT: 0x30718 R_AARCH64_ABS64 bar2 0x0
232 // UNPACKED64-NEXT: 0x30771 R_AARCH64_ABS64 bar2 0x0
233 // UNPACKED64-NEXT: 0x30779 R_AARCH64_ABS64 bar2 0x0
234 // UNPACKED64-NEXT: 0x30781 R_AARCH64_ABS64 bar2 0x1
235 // UNPACKED64-NEXT: 0x30789 R_AARCH64_ABS64 bar2 0x1
236 // UNPACKED64-NEXT: 0x30791 R_AARCH64_ABS64 bar2 0x0
237 // UNPACKED64-NEXT: 0x30710 R_AARCH64_ABS64 zed2 0x0
238 // UNPACKED64-NEXT: }
240 // RUN: ld.lld -pie --pack-dyn-relocs=android %t.a64.o %t.a64.so -o %t3.a64
241 // RUN: llvm-readobj -S --dynamic-table %t3.a64 | FileCheck --check-prefix=ANDROID64-HEADERS %s
242 // RUN: llvm-readobj -r %t3.a64 | FileCheck --check-prefix=ANDROID64 %s
244 // ANDROID64-HEADERS: Index: 1
245 // ANDROID64-HEADERS-NEXT: Name: .dynsym
247 // ANDROID64-HEADERS: Name: .rela.dyn
248 // ANDROID64-HEADERS-NEXT: Type: SHT_ANDROID_RELA
249 // ANDROID64-HEADERS-NEXT: Flags [ (0x2)
250 // ANDROID64-HEADERS-NEXT: SHF_ALLOC (0x2)
251 // ANDROID64-HEADERS-NEXT: ]
252 // ANDROID64-HEADERS-NEXT: Address: [[ADDR:.*]]
253 // ANDROID64-HEADERS-NEXT: Offset: [[ADDR]]
254 // ANDROID64-HEADERS-NEXT: Size: [[SIZE:.*]]
255 // ANDROID64-HEADERS-NEXT: Link: 1
256 // ANDROID64-HEADERS-NEXT: Info: 0
257 // ANDROID64-HEADERS-NEXT: AddressAlignment: 8
258 // ANDROID64-HEADERS-NEXT: EntrySize: 1
260 // ANDROID64-HEADERS: 0x0000000060000011 ANDROID_RELA [[ADDR]]
261 // ANDROID64-HEADERS: 0x0000000060000012 ANDROID_RELASZ [[SIZE]]
263 // ANDROID64: Section ({{.+}}) .rela.dyn {
264 // ANDROID64-NEXT: 0x303E0 R_AARCH64_RELATIVE - 0x1
265 // ANDROID64-NEXT: 0x303E8 R_AARCH64_RELATIVE - 0x2
266 // ANDROID64-NEXT: 0x303F0 R_AARCH64_RELATIVE - 0x3
267 // ANDROID64-NEXT: 0x303F8 R_AARCH64_RELATIVE - 0x4
268 // ANDROID64-NEXT: 0x30400 R_AARCH64_RELATIVE - 0x5
269 // ANDROID64-NEXT: 0x30408 R_AARCH64_RELATIVE - 0x6
270 // ANDROID64-NEXT: 0x30410 R_AARCH64_RELATIVE - 0x7
271 // ANDROID64-NEXT: 0x30418 R_AARCH64_RELATIVE - 0x8
272 // ANDROID64-NEXT: 0x30470 R_AARCH64_RELATIVE - 0x1
273 // ANDROID64-NEXT: 0x30478 R_AARCH64_RELATIVE - 0x2
274 // ANDROID64-NEXT: 0x30480 R_AARCH64_RELATIVE - 0x3
275 // ANDROID64-NEXT: 0x30488 R_AARCH64_RELATIVE - 0x4
276 // ANDROID64-NEXT: 0x30490 R_AARCH64_RELATIVE - 0x5
277 // ANDROID64-NEXT: 0x30498 R_AARCH64_RELATIVE - 0x6
278 // ANDROID64-NEXT: 0x304A0 R_AARCH64_RELATIVE - 0x7
279 // ANDROID64-NEXT: 0x304A8 R_AARCH64_RELATIVE - 0x8
280 // ANDROID64-NEXT: 0x304B0 R_AARCH64_RELATIVE - 0x9
282 // ANDROID64-NEXT: 0x30428 R_AARCH64_RELATIVE - 0x1
283 // ANDROID64-NEXT: 0x30430 R_AARCH64_RELATIVE - 0x2
284 // ANDROID64-NEXT: 0x30438 R_AARCH64_RELATIVE - 0x3
285 // ANDROID64-NEXT: 0x30440 R_AARCH64_RELATIVE - 0x4
286 // ANDROID64-NEXT: 0x30448 R_AARCH64_RELATIVE - 0x5
287 // ANDROID64-NEXT: 0x30450 R_AARCH64_RELATIVE - 0x6
288 // ANDROID64-NEXT: 0x30458 R_AARCH64_RELATIVE - 0x7
290 // ANDROID64-NEXT: 0x304B9 R_AARCH64_RELATIVE - 0xA
292 // ANDROID64-NEXT: 0x30468 R_AARCH64_ABS64 bar2 0x0
293 // ANDROID64-NEXT: 0x304C1 R_AARCH64_ABS64 bar2 0x0
294 // ANDROID64-NEXT: 0x304C9 R_AARCH64_ABS64 bar2 0x0
295 // ANDROID64-NEXT: 0x304E1 R_AARCH64_ABS64 bar2 0x0
296 // ANDROID64-NEXT: 0x30420 R_AARCH64_ABS64 bar2 0x1
297 // ANDROID64-NEXT: 0x30460 R_AARCH64_ABS64 zed2 0x0
298 // ANDROID64-NEXT: 0x304D1 R_AARCH64_ABS64 bar2 0x1
299 // ANDROID64-NEXT: 0x304D9 R_AARCH64_ABS64 bar2 0x1
300 // ANDROID64-NEXT: }
302 // RUN: ld.lld -pie --pack-dyn-relocs=relr %t.a64.o %t.a64.so -o %t4.a64
303 // RUN: llvm-readobj -S --dynamic-table %t4.a64 | FileCheck --check-prefix=RELR64-HEADERS %s
304 // RUN: llvm-readobj -r --raw-relr %t4.a64 | FileCheck --check-prefix=RAW-RELR64 %s
305 // RUN: llvm-readobj -r %t4.a64 | FileCheck --check-prefix=RELR64 %s
307 // RELR64-HEADERS: Index: 1
308 // RELR64-HEADERS-NEXT: Name: .dynsym
310 // RELR64-HEADERS: Name: .relr.dyn
311 // RELR64-HEADERS-NEXT: Type: SHT_RELR
312 // RELR64-HEADERS-NEXT: Flags [ (0x2)
313 // RELR64-HEADERS-NEXT: SHF_ALLOC (0x2)
314 // RELR64-HEADERS-NEXT: ]
315 // RELR64-HEADERS-NEXT: Address: [[ADDR:.*]]
316 // RELR64-HEADERS-NEXT: Offset: [[ADDR]]
317 // RELR64-HEADERS-NEXT: Size: 16
318 // RELR64-HEADERS-NEXT: Link: 0
319 // RELR64-HEADERS-NEXT: Info: 0
320 // RELR64-HEADERS-NEXT: AddressAlignment: 8
321 // RELR64-HEADERS-NEXT: EntrySize: 8
323 // RELR64-HEADERS: 0x0000000000000024 RELR [[ADDR]]
324 // RELR64-HEADERS: 0x0000000000000023 RELRSZ 16 (bytes)
325 // RELR64-HEADERS: 0x0000000000000025 RELRENT 8 (bytes)
327 /// SHT_RELR section contains address/bitmap entries
328 /// encoding the offsets for relative relocation.
329 // RAW-RELR64: Section ({{.+}}) .relr.dyn {
330 // RAW-RELR64-NEXT: 0x30490
331 // RAW-RELR64-NEXT: 0x7FCFEFF
332 // RAW-RELR64-NEXT: }
334 /// Decoded SHT_RELR section is same as UNPACKED,
335 /// but contains only the relative relocations.
336 /// Any relative relocations with odd offset stay in SHT_RELA.
337 // RELR64: Section ({{.+}}) .rela.dyn {
338 // RELR64-NEXT: 0x30569 R_AARCH64_RELATIVE - 0xA
339 // RELR64-NEXT: 0x304D0 R_AARCH64_ABS64 bar2 0x1
340 // RELR64-NEXT: 0x30518 R_AARCH64_ABS64 bar2 0x0
341 // RELR64-NEXT: 0x30571 R_AARCH64_ABS64 bar2 0x0
342 // RELR64-NEXT: 0x30579 R_AARCH64_ABS64 bar2 0x0
343 // RELR64-NEXT: 0x30581 R_AARCH64_ABS64 bar2 0x1
344 // RELR64-NEXT: 0x30589 R_AARCH64_ABS64 bar2 0x1
345 // RELR64-NEXT: 0x30591 R_AARCH64_ABS64 bar2 0x0
346 // RELR64-NEXT: 0x30510 R_AARCH64_ABS64 zed2 0x0
347 // RELR64-NEXT: }
348 // RELR64-NEXT: Section ({{.+}}) .relr.dyn {
349 // RELR64-NEXT: 0x30490 R_AARCH64_RELATIVE -
350 // RELR64-NEXT: 0x30498 R_AARCH64_RELATIVE -
351 // RELR64-NEXT: 0x304A0 R_AARCH64_RELATIVE -
352 // RELR64-NEXT: 0x304A8 R_AARCH64_RELATIVE -
353 // RELR64-NEXT: 0x304B0 R_AARCH64_RELATIVE -
354 // RELR64-NEXT: 0x304B8 R_AARCH64_RELATIVE -
355 // RELR64-NEXT: 0x304C0 R_AARCH64_RELATIVE -
356 // RELR64-NEXT: 0x304C8 R_AARCH64_RELATIVE -
357 // RELR64-NEXT: 0x304D8 R_AARCH64_RELATIVE -
358 // RELR64-NEXT: 0x304E0 R_AARCH64_RELATIVE -
359 // RELR64-NEXT: 0x304E8 R_AARCH64_RELATIVE -
360 // RELR64-NEXT: 0x304F0 R_AARCH64_RELATIVE -
361 // RELR64-NEXT: 0x304F8 R_AARCH64_RELATIVE -
362 // RELR64-NEXT: 0x30500 R_AARCH64_RELATIVE -
363 // RELR64-NEXT: 0x30508 R_AARCH64_RELATIVE -
364 // RELR64-NEXT: 0x30520 R_AARCH64_RELATIVE -
365 // RELR64-NEXT: 0x30528 R_AARCH64_RELATIVE -
366 // RELR64-NEXT: 0x30530 R_AARCH64_RELATIVE -
367 // RELR64-NEXT: 0x30538 R_AARCH64_RELATIVE -
368 // RELR64-NEXT: 0x30540 R_AARCH64_RELATIVE -
369 // RELR64-NEXT: 0x30548 R_AARCH64_RELATIVE -
370 // RELR64-NEXT: 0x30550 R_AARCH64_RELATIVE -
371 // RELR64-NEXT: 0x30558 R_AARCH64_RELATIVE -
372 // RELR64-NEXT: 0x30560 R_AARCH64_RELATIVE -
373 // RELR64-NEXT: }
375 .data
376 .align 2
377 .dc.a __ehdr_start + 1
378 .dc.a __ehdr_start + 2
379 .dc.a __ehdr_start + 3
380 .dc.a __ehdr_start + 4
381 .dc.a __ehdr_start + 5
382 .dc.a __ehdr_start + 6
383 .dc.a __ehdr_start + 7
384 .dc.a __ehdr_start + 8
385 .dc.a bar2 + 1
387 .dc.a __ehdr_start + 1
388 .dc.a __ehdr_start + 2
389 .dc.a __ehdr_start + 3
390 .dc.a __ehdr_start + 4
391 .dc.a __ehdr_start + 5
392 .dc.a __ehdr_start + 6
393 .dc.a __ehdr_start + 7
394 .dc.a zed2
395 .dc.a bar2
397 .dc.a __ehdr_start + 1
398 .dc.a __ehdr_start + 2
399 .dc.a __ehdr_start + 3
400 .dc.a __ehdr_start + 4
401 .dc.a __ehdr_start + 5
402 .dc.a __ehdr_start + 6
403 .dc.a __ehdr_start + 7
404 .dc.a __ehdr_start + 8
405 .dc.a __ehdr_start + 9
406 .byte 00
407 .dc.a __ehdr_start + 10
408 .dc.a bar2
409 .dc.a bar2
410 .dc.a bar2 + 1
411 .dc.a bar2 + 1
412 .dc.a bar2