File: pack-dyn-relocs.s

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,998,520 kB
  • sloc: cpp: 6,951,680; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,009; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,167; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (334 lines) | stat: -rw-r--r-- 16,510 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
// REQUIRES: arm, aarch64

// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %p/Inputs/arm-shared.s -o %t.a32.so.o
// RUN: ld.lld -shared %t.a32.so.o -soname=so -o %t.a32.so
// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.a32.o
// RUN: ld.lld -pie --pack-dyn-relocs=none %t.a32.o %t.a32.so -o %t2.a32
// RUN: llvm-readobj -r %t2.a32 | FileCheck --check-prefix=UNPACKED32 %s

// RUN: not ld.lld --pack-dyn-relocs=invalid %t.a32.o %t.a32.so -o /dev/null 2>&1 | FileCheck %s --check-prefix=UNKNOWN

// UNKNOWN: unknown --pack-dyn-relocs format: invalid

/// Unpacked should have the relative relocations in their natural order.
/// UNPACKED32:          Section ({{.+}}) .rel.dyn {
// UNPACKED32-NEXT:     0x30324 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30328 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x3032C R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30330 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30334 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30338 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x3033C R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30340 R_ARM_RELATIVE -

// UNPACKED32-NEXT:     0x30348 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x3034C R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30350 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30354 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30358 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x3035C R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30360 R_ARM_RELATIVE -

// UNPACKED32-NEXT:     0x3036C R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30370 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30374 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30378 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x3037C R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30380 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30384 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30388 R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x3038C R_ARM_RELATIVE -
// UNPACKED32-NEXT:     0x30391 R_ARM_RELATIVE -

// UNPACKED32-NEXT:     0x30344 R_ARM_ABS32 bar2
// UNPACKED32-NEXT:     0x30368 R_ARM_ABS32 bar2
// UNPACKED32-NEXT:     0x30395 R_ARM_ABS32 bar2
// UNPACKED32-NEXT:     0x30399 R_ARM_ABS32 bar2
// UNPACKED32-NEXT:     0x3039D R_ARM_ABS32 bar2
// UNPACKED32-NEXT:     0x303A1 R_ARM_ABS32 bar2
// UNPACKED32-NEXT:     0x303A5 R_ARM_ABS32 bar2
// UNPACKED32-NEXT:     0x30364 R_ARM_ABS32 zed2
// UNPACKED32-NEXT:     }

// RUN: ld.lld -pie --pack-dyn-relocs=android %t.a32.o %t.a32.so -o %t3.a32
// RUN: llvm-readobj -S --dynamic-table %t3.a32 | FileCheck --check-prefix=ANDROID32-HEADERS %s
// RUN: llvm-readobj -r %t3.a32 | FileCheck --check-prefix=ANDROID32 %s

// ANDROID32-HEADERS:       Index: 1
// ANDROID32-HEADERS-NEXT:  Name: .dynsym

// ANDROID32-HEADERS:       Name: .rel.dyn
// ANDROID32-HEADERS-NEXT:  Type: SHT_ANDROID_REL
// ANDROID32-HEADERS-NEXT:  Flags [ (0x2)
// ANDROID32-HEADERS-NEXT:    SHF_ALLOC (0x2)
// ANDROID32-HEADERS-NEXT:  ]
// ANDROID32-HEADERS-NEXT:  Address: [[ADDR:.*]]
// ANDROID32-HEADERS-NEXT:  Offset: [[ADDR]]
// ANDROID32-HEADERS-NEXT:  Size: [[SIZE:.*]]
// ANDROID32-HEADERS-NEXT:  Link: 1
// ANDROID32-HEADERS-NEXT:  Info: 0
// ANDROID32-HEADERS-NEXT:  AddressAlignment: 4
// ANDROID32-HEADERS-NEXT:  EntrySize: 1

// ANDROID32-HEADERS: 0x6000000F ANDROID_REL          [[ADDR]]
// ANDROID32-HEADERS: 0x60000010 ANDROID_RELSZ        [[SIZE]]

/// Packed should have the groups of non-relative relocations first, followed
/// by the larger groups of relative relocations (i.e. the 8 and 9 followed
/// by the 7.)
// ANDROID32:          Section ({{.+}}) .rel.dyn {
// ANDROID32-NEXT:     0x3024C R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30250 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30254 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30258 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x3025C R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30260 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30264 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30268 R_ARM_RELATIVE -

// ANDROID32-NEXT:     0x30294 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30298 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x3029C R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x302A0 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x302A4 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x302A8 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x302AC R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x302B0 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x302B4 R_ARM_RELATIVE -

// ANDROID32-NEXT:     0x30270 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30274 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30278 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x3027C R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30280 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30284 R_ARM_RELATIVE -
// ANDROID32-NEXT:     0x30288 R_ARM_RELATIVE -

// ANDROID32-NEXT:     0x302B9 R_ARM_RELATIVE -

// ANDROID32-NEXT:     0x3026C R_ARM_ABS32 bar2
// ANDROID32-NEXT:     0x30290 R_ARM_ABS32 bar2
// ANDROID32-NEXT:     0x302BD R_ARM_ABS32 bar2
// ANDROID32-NEXT:     0x302C1 R_ARM_ABS32 bar2
// ANDROID32-NEXT:     0x302C5 R_ARM_ABS32 bar2
// ANDROID32-NEXT:     0x302C9 R_ARM_ABS32 bar2
// ANDROID32-NEXT:     0x302CD R_ARM_ABS32 bar2
// ANDROID32-NEXT:     0x3028C R_ARM_ABS32 zed2
// ANDROID32-NEXT:     }

// RUN: ld.lld -pie --pack-dyn-relocs=relr %t.a32.o %t.a32.so -o %t4.a32
// RUN: llvm-readelf -Sdr %t4.a32 | FileCheck --check-prefix=RELR32 %s

// RELR32:      Name              Type            Address          Off    Size   ES Flg Lk Inf Al
// RELR32:      .dynstr           STRTAB          {{.*}}                         00   A  0   0  1
// RELR32-NEXT: .rel.dyn          REL             {{.*}}                         08   A  1   0  4
// RELR32-NEXT: .relr.dyn         RELR            {{0*}}[[#%x,RELR:]] {{.*}}     04   A  0   0  4

// RELR32:      (RELCOUNT)   1
// RELR32:      (RELR)       0x[[#RELR]]
// RELR32-NEXT: (RELRSZ)     8 (bytes)
// RELR32-NEXT: (RELRENT)    4 (bytes)

// RELR32:      Relocation section '.relr.dyn' at offset {{.*}} contains 24 entries:
// RELR32-NEXT: Index: Entry    Address   Symbolic Address
// RELR32-NEXT: 0000:  00030284 {{.*}}
// RELR32-NEXT: 0001:  07fcfeff {{.*}}

// RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-linux %p/Inputs/shared2.s -o %t.a64.so.o
// RUN: ld.lld -shared %t.a64.so.o -soname=so -o %t.a64.so
// RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-linux %s -o %t.a64.o
// RUN: ld.lld -pie --pack-dyn-relocs=none %t.a64.o %t.a64.so -o %t2.a64
// RUN: llvm-readobj -r %t2.a64 | FileCheck --check-prefix=UNPACKED64 %s

// UNPACKED64:          Section ({{.+}}) .rela.dyn {
// UNPACKED64-NEXT:     0x30690 R_AARCH64_RELATIVE - 0x30690
// UNPACKED64-NEXT:     0x30698 R_AARCH64_RELATIVE - 0x30691
// UNPACKED64-NEXT:     0x306A0 R_AARCH64_RELATIVE - 0x2
// UNPACKED64-NEXT:     0x306A8 R_AARCH64_RELATIVE - 0xFFFFFFFFFFFFFFFF
// UNPACKED64-NEXT:     0x306B0 R_AARCH64_RELATIVE - 0x80000000
// UNPACKED64-NEXT:     0x306B8 R_AARCH64_RELATIVE - 0x6
// UNPACKED64-NEXT:     0x306C0 R_AARCH64_RELATIVE - 0x7
// UNPACKED64-NEXT:     0x306C8 R_AARCH64_RELATIVE - 0x30698

// UNPACKED64-NEXT:     0x306D8 R_AARCH64_RELATIVE - 0x30691
// UNPACKED64-NEXT:     0x306E0 R_AARCH64_RELATIVE - 0x2
// UNPACKED64-NEXT:     0x306E8 R_AARCH64_RELATIVE - 0x3
// UNPACKED64-NEXT:     0x306F0 R_AARCH64_RELATIVE - 0x4
// UNPACKED64-NEXT:     0x306F8 R_AARCH64_RELATIVE - 0x5
// UNPACKED64-NEXT:     0x30700 R_AARCH64_RELATIVE - 0x6
// UNPACKED64-NEXT:     0x30708 R_AARCH64_RELATIVE - 0x30697

// UNPACKED64-NEXT:     0x30720 R_AARCH64_RELATIVE - 0x30691
// UNPACKED64-NEXT:     0x30728 R_AARCH64_RELATIVE - 0x2
// UNPACKED64-NEXT:     0x30730 R_AARCH64_RELATIVE - 0x3
// UNPACKED64-NEXT:     0x30738 R_AARCH64_RELATIVE - 0x4
// UNPACKED64-NEXT:     0x30740 R_AARCH64_RELATIVE - 0x5
// UNPACKED64-NEXT:     0x30748 R_AARCH64_RELATIVE - 0x6
// UNPACKED64-NEXT:     0x30750 R_AARCH64_RELATIVE - 0x7
// UNPACKED64-NEXT:     0x30758 R_AARCH64_RELATIVE - 0x8
// UNPACKED64-NEXT:     0x30760 R_AARCH64_RELATIVE - 0x30699

// UNPACKED64-NEXT:     0x30769 R_AARCH64_RELATIVE - 0x3069A

// UNPACKED64-NEXT:     0x306D0 R_AARCH64_ABS64 bar2 0x1
// UNPACKED64-NEXT:     0x30718 R_AARCH64_ABS64 bar2 0x0
// UNPACKED64-NEXT:     0x30771 R_AARCH64_ABS64 bar2 0x0
// UNPACKED64-NEXT:     0x30779 R_AARCH64_ABS64 bar2 0x0
// UNPACKED64-NEXT:     0x30781 R_AARCH64_ABS64 bar2 0x1
// UNPACKED64-NEXT:     0x30789 R_AARCH64_ABS64 bar2 0x1
// UNPACKED64-NEXT:     0x30791 R_AARCH64_ABS64 bar2 0x0
// UNPACKED64-NEXT:     0x30710 R_AARCH64_ABS64 zed2 0x0
// UNPACKED64-NEXT:     }

// RUN: ld.lld -pie --pack-dyn-relocs=android %t.a64.o %t.a64.so -o %t3.a64
// RUN: llvm-readelf -S -d -r %t3.a64 | FileCheck --check-prefix=ANDROID64 %s

// ANDROID64:      Name              Type            Address          Off    Size   ES Flg Lk Inf Al
// ANDROID64:      .dynstr           STRTAB          {{.*}}                         00   A  0   0  1
// ANDROID64-NEXT: .rela.dyn         ANDROID_RELA    {{0*}}[[#%x,ANDROID:]] {{.*}}  01   A  1   0  8
// ANDROID64-NEXT: .text             PROGBITS        {{.*}}                         00  AX  0   0  4

// ANDROID64:      (DEBUG)           0x0
// ANDROID64-NEXT: (ANDROID_RELA)    0x[[#ANDROID]]
// ANDROID64-NEXT: (ANDROID_RELASZ)  136 (bytes)
// ANDROID64-NEXT: (RELAENT)         24 (bytes)

// ANDROID64-HEADERS: 0x0000000060000011 ANDROID_RELA          [[ADDR]]
// ANDROID64-HEADERS: 0x0000000060000012 ANDROID_RELASZ        [[SIZE]]

// ANDROID64:       Relocation section '.rela.dyn' at offset {{.*}} contains 33 entries:
// ANDROID64-NEXT:      Offset             Info             Type               Symbol's Value  Symbol's Name + Addend
// ANDROID64-NEXT:  00000000000303f0  0000000000000403 R_AARCH64_RELATIVE                303f0
// ANDROID64-NEXT:  00000000000303f8  0000000000000403 R_AARCH64_RELATIVE                303f1
// ANDROID64-NEXT:  0000000000030400  0000000000000403 R_AARCH64_RELATIVE                2
// ANDROID64-NEXT:  0000000000030408  0000000000000403 R_AARCH64_RELATIVE                ffffffffffffffff
// ANDROID64-NEXT:  0000000000030410  0000000000000403 R_AARCH64_RELATIVE                80000000
// ANDROID64-NEXT:  0000000000030418  0000000000000403 R_AARCH64_RELATIVE                6
// ANDROID64-NEXT:  0000000000030420  0000000000000403 R_AARCH64_RELATIVE                7
// ANDROID64-NEXT:  0000000000030428  0000000000000403 R_AARCH64_RELATIVE                303f8
// ANDROID64-NEXT:  0000000000030480  0000000000000403 R_AARCH64_RELATIVE                303f1
// ANDROID64-NEXT:  0000000000030488  0000000000000403 R_AARCH64_RELATIVE                2
// ANDROID64-NEXT:  0000000000030490  0000000000000403 R_AARCH64_RELATIVE                3
// ANDROID64-NEXT:  0000000000030498  0000000000000403 R_AARCH64_RELATIVE                4
// ANDROID64-NEXT:  00000000000304a0  0000000000000403 R_AARCH64_RELATIVE                5
// ANDROID64-NEXT:  00000000000304a8  0000000000000403 R_AARCH64_RELATIVE                6
// ANDROID64-NEXT:  00000000000304b0  0000000000000403 R_AARCH64_RELATIVE                7
// ANDROID64-NEXT:  00000000000304b8  0000000000000403 R_AARCH64_RELATIVE                8
// ANDROID64-NEXT:  00000000000304c0  0000000000000403 R_AARCH64_RELATIVE                303f9
// ANDROID64-NEXT:  0000000000030438  0000000000000403 R_AARCH64_RELATIVE                303f1
// ANDROID64-NEXT:  0000000000030440  0000000000000403 R_AARCH64_RELATIVE                2
// ANDROID64-NEXT:  0000000000030448  0000000000000403 R_AARCH64_RELATIVE                3
// ANDROID64-NEXT:  0000000000030450  0000000000000403 R_AARCH64_RELATIVE                4
// ANDROID64-NEXT:  0000000000030458  0000000000000403 R_AARCH64_RELATIVE                5
// ANDROID64-NEXT:  0000000000030460  0000000000000403 R_AARCH64_RELATIVE                6
// ANDROID64-NEXT:  0000000000030468  0000000000000403 R_AARCH64_RELATIVE                303f7
// ANDROID64-NEXT:  00000000000304c9  0000000000000403 R_AARCH64_RELATIVE                303fa
// ANDROID64-NEXT:  0000000000030478  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 0
// ANDROID64-NEXT:  00000000000304d1  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 0
// ANDROID64-NEXT:  00000000000304d9  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 0
// ANDROID64-NEXT:  00000000000304f1  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 0
// ANDROID64-NEXT:  0000000000030430  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 1
// ANDROID64-NEXT:  0000000000030470  0000000200000101 R_AARCH64_ABS64        0000000000000000 zed2 + 0
// ANDROID64-NEXT:  00000000000304e1  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 1
// ANDROID64-NEXT:  00000000000304e9  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 1
// ANDROID64-EMPTY:

// RUN: ld.lld -pie --pack-dyn-relocs=relr %t.a64.o %t.a64.so -o %t4.a64
// RUN: llvm-readelf -Sdr -x .data %t4.a64 | FileCheck --check-prefix=RELR64 %s

// RELR64:      Name              Type            Address          Off    Size   ES Flg Lk Inf Al
// RELR64:      .dynstr           STRTAB          {{.*}}                         00   A  0   0  1
// RELR64-NEXT: .rela.dyn         RELA            {{.*}}                         18   A  1   0  8
// RELR64-NEXT: .relr.dyn         RELR            {{0*}}[[#%x,RELR:]] {{.*}}     08   A  0   0  8
// RELR64-NEXT: .text             PROGBITS        0000000000010380 000380 000000 00  AX  0   0  4

// RELR64:      (RELACOUNT)   1
// RELR64:      (RELR)        0x[[#RELR]]
// RELR64-NEXT: (RELRSZ)      16 (bytes)
// RELR64-NEXT: (RELRENT)     8 (bytes)

/// Decoded SHT_RELR section is same as UNPACKED,
/// but contains only the relative relocations.
/// Any relative relocations with odd offset stay in SHT_RELA.
// RELR64:       Relocation section '.rela.dyn' at offset {{.*}} contains 9 entries:
// RELR64-NEXT:      Offset             Info             Type               Symbol's Value  Symbol's Name + Addend
// RELR64-NEXT:  0000000000030569  0000000000000403 R_AARCH64_RELATIVE                3049a
// RELR64-NEXT:  00000000000304d0  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 1
// RELR64-NEXT:  0000000000030518  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 0
// RELR64-NEXT:  0000000000030571  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 0
// RELR64-NEXT:  0000000000030579  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 0
// RELR64-NEXT:  0000000000030581  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 1
// RELR64-NEXT:  0000000000030589  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 1
// RELR64-NEXT:  0000000000030591  0000000100000101 R_AARCH64_ABS64        0000000000000000 bar2 + 0
// RELR64-NEXT:  0000000000030510  0000000200000101 R_AARCH64_ABS64        0000000000000000 zed2 + 0
// RELR64-EMPTY: 
// RELR64-NEXT:  Relocation section '.relr.dyn' at offset {{.*}} contains 24 entries:
// RELR64-NEXT:  Symbolic Address
// RELR64-NEXT:  $d{{$}}
// RELR64-NEXT:  $d + 0x8
// RELR64-NEXT:  $d + 0x10
// RELR64-NEXT:  $d + 0x18
// RELR64-NEXT:  $d + 0x20
// RELR64-NEXT:  $d + 0x28
// RELR64-NEXT:  $d + 0x30
// RELR64-NEXT:  $d + 0x38
// RELR64-NEXT:  $d + 0x48
// RELR64-NEXT:  $d + 0x50
// RELR64-NEXT:  $d + 0x58
// RELR64-NEXT:  $d + 0x60
// RELR64-NEXT:  $d + 0x68
// RELR64-NEXT:  $d + 0x70
// RELR64-NEXT:  $d + 0x78
// RELR64-NEXT:  $d + 0x90
// RELR64-NEXT:  $d + 0x98
// RELR64-NEXT:  $d + 0xa0
// RELR64-NEXT:  $d + 0xa8
// RELR64-NEXT:  $d + 0xb0
// RELR64-NEXT:  $d + 0xb8
// RELR64-NEXT:  $d + 0xc0
// RELR64-NEXT:  $d + 0xc8
// RELR64-NEXT:  $d + 0xd0
// RELR64-EMPTY:
// RELR64-NEXT: Hex dump of section '.data':
// RELR64-NEXT: 0x00030490 90040300 00000000 91040300 00000000 .
// RELR64-NEXT: 0x000304a0 02000000 00000000 ffffffff ffffffff .
// RELR64-NEXT: 0x000304b0 00000080 00000000 06000000 00000000 .

.data
.balign 2
.dc.a .data
.dc.a .data + 1
.dc.a __ehdr_start + 2
.dc.a __ehdr_start - 1
.dc.a __ehdr_start + 0x80000000
.dc.a __ehdr_start + 6
.dc.a __ehdr_start + 7
.dc.a .data + 8
.dc.a bar2 + 1

.dc.a .data + 1
.dc.a __ehdr_start + 2
.dc.a __ehdr_start + 3
.dc.a __ehdr_start + 4
.dc.a __ehdr_start + 5
.dc.a __ehdr_start + 6
.dc.a .data + 7
.dc.a zed2
.dc.a bar2

.dc.a .data + 1
.dc.a __ehdr_start + 2
.dc.a __ehdr_start + 3
.dc.a __ehdr_start + 4
.dc.a __ehdr_start + 5
.dc.a __ehdr_start + 6
.dc.a __ehdr_start + 7
.dc.a __ehdr_start + 8
.dc.a .data + 9
.byte 00
.dc.a .data + 10
.dc.a bar2
.dc.a bar2
.dc.a bar2 + 1
.dc.a bar2 + 1
.dc.a bar2