xref: /llvm-project/llvm/test/tools/llvm-objdump/ELF/dynamic-section-machine-specific.test (revision f0c0116c4896fe50a77ca72942b05d06f14841c7)
1## In this test we test how machine-specific dynamic tags are dumped.
2
3## Case 1: Test that hexagon machine-specific tags can be dumped.
4# RUN: yaml2obj --docnum=1 -o %t.hex %s
5# RUN: llvm-objdump -p %t.hex | FileCheck %s --check-prefix=HEXAGON
6
7# HEXAGON:      Dynamic Section:
8# HEXAGON-NEXT:  HEXAGON_SYMSZ 0x0000000000000010
9# HEXAGON-NEXT:  HEXAGON_VER   0x0000000000001000
10# HEXAGON-NEXT:  HEXAGON_PLT   0x0000000000001000
11
12--- !ELF
13FileHeader:
14  Class:   ELFCLASS64
15  Data:    ELFDATA2LSB
16  Type:    ET_EXEC
17  Machine: EM_HEXAGON
18Sections:
19  - Name: .dynamic
20    Type: SHT_DYNAMIC
21    Entries:
22      - Tag:   DT_HEXAGON_SYMSZ
23        Value: 0x10
24      - Tag:   DT_HEXAGON_VER
25        Value: 0x1000
26      - Tag:   DT_HEXAGON_PLT
27        Value: 0x1000
28      - Tag:   DT_NULL
29        Value: 0
30ProgramHeaders:
31  - Type:     PT_LOAD
32    FirstSec: .dynamic
33    LastSec:  .dynamic
34  - Type:     PT_DYNAMIC
35    FirstSec: .dynamic
36    LastSec:  .dynamic
37
38## Case 2: Test that MIPS machine-specific tags can be dumped.
39##         MIPS has a few long tag names. Show that we indent columns properly.
40# RUN: yaml2obj --docnum=2 -o %t.mips %s
41# RUN: llvm-objdump -p %t.mips | FileCheck %s  --strict-whitespace --match-full-lines --check-prefix=MIPS
42
43#      MIPS:Dynamic Section:
44# MIPS-NEXT:  MIPS_RLD_VERSION           0x0000000012345678
45# MIPS-NEXT:  MIPS_TIME_STAMP            0x0000000011223344
46# MIPS-NEXT:  MIPS_ICHECKSUM             0x0000000011112222
47# MIPS-NEXT:  MIPS_IVERSION              0x0000000000000001
48# MIPS-NEXT:  MIPS_FLAGS                 0x0000000011111111
49# MIPS-NEXT:  MIPS_BASE_ADDRESS          0x0000000087654321
50# MIPS-NEXT:  MIPS_MSYM                  0x0000000000001000
51# MIPS-NEXT:  MIPS_CONFLICT              0x0000000000001000
52# MIPS-NEXT:  MIPS_LIBLIST               0x0000000000001000
53# MIPS-NEXT:  MIPS_LOCAL_GOTNO           0x0000000000000001
54# MIPS-NEXT:  MIPS_CONFLICTNO            0x0000000000000001
55# MIPS-NEXT:  MIPS_LIBLISTNO             0x0000000000000001
56# MIPS-NEXT:  MIPS_SYMTABNO              0x0000000000000001
57# MIPS-NEXT:  MIPS_UNREFEXTNO            0x0000000000000000
58# MIPS-NEXT:  MIPS_GOTSYM                0x0000000000000000
59# MIPS-NEXT:  MIPS_HIPAGENO              0x0000000088776655
60# MIPS-NEXT:  MIPS_RLD_MAP               0x0000000000001000
61# MIPS-NEXT:  MIPS_DELTA_CLASS           0x0000000000001000
62# MIPS-NEXT:  MIPS_DELTA_CLASS_NO        0x0000000000000001
63# MIPS-NEXT:  MIPS_DELTA_INSTANCE        0x0000000000001000
64# MIPS-NEXT:  MIPS_DELTA_INSTANCE_NO     0x0000000000000001
65# MIPS-NEXT:  MIPS_DELTA_RELOC           0x0000000000001000
66# MIPS-NEXT:  MIPS_DELTA_RELOC_NO        0x0000000000000001
67# MIPS-NEXT:  MIPS_DELTA_SYM             0x0000000000001000
68# MIPS-NEXT:  MIPS_DELTA_SYM_NO          0x0000000000000001
69# MIPS-NEXT:  MIPS_DELTA_CLASSSYM        0x0000000000001000
70# MIPS-NEXT:  MIPS_DELTA_CLASSSYM_NO     0x0000000000000001
71# MIPS-NEXT:  MIPS_CXX_FLAGS             0x0000000088887777
72# MIPS-NEXT:  MIPS_PIXIE_INIT            0x0000000000001000
73# MIPS-NEXT:  MIPS_LOCALPAGE_GOTIDX      0x0000000000000001
74# MIPS-NEXT:  MIPS_LOCAL_GOTIDX          0x0000000000000001
75# MIPS-NEXT:  MIPS_HIDDEN_GOTIDX         0x0000000000000001
76# MIPS-NEXT:  MIPS_PROTECTED_GOTIDX      0x0000000000000001
77# MIPS-NEXT:  MIPS_OPTIONS               0x0000000000001000
78# MIPS-NEXT:  MIPS_INTERFACE             0x0000000000001000
79# MIPS-NEXT:  MIPS_DYNSTR_ALIGN          0x0000000088888888
80# MIPS-NEXT:  MIPS_INTERFACE_SIZE        0x0000000000000010
81# MIPS-NEXT:  MIPS_RLD_TEXT_RESOLVE_ADDR 0x0000000000000008
82# MIPS-NEXT:  MIPS_PERF_SUFFIX           0x0000000000000000
83# MIPS-NEXT:  MIPS_COMPACT_SIZE          0x0000000000000010
84# MIPS-NEXT:  MIPS_GP_VALUE              0x0000000000000001
85# MIPS-NEXT:  MIPS_AUX_DYNAMIC           0x0000000000001000
86# MIPS-NEXT:  MIPS_PLTGOT                0x0000000000001000
87# MIPS-NEXT:  MIPS_RWPLT                 0x0000000000001000
88# MIPS-NEXT:  MIPS_RLD_MAP_REL           0x0000000000001000
89# MIPS-NEXT:  MIPS_XHASH                 0x0000000000002000
90
91--- !ELF
92FileHeader:
93  Class:   ELFCLASS64
94  Data:    ELFDATA2LSB
95  Type:    ET_EXEC
96  Machine: EM_MIPS
97Sections:
98  - Name: .dynamic
99    Type: SHT_DYNAMIC
100    Entries:
101      - Tag:   DT_MIPS_RLD_VERSION
102        Value: 0x12345678
103      - Tag:   DT_MIPS_TIME_STAMP
104        Value: 0x11223344
105      - Tag:   DT_MIPS_ICHECKSUM
106        Value: 0x11112222
107      - Tag:   DT_MIPS_IVERSION
108        Value: 0x1
109      - Tag:   DT_MIPS_FLAGS
110        Value: 0x11111111
111      - Tag:   DT_MIPS_BASE_ADDRESS
112        Value: 0x87654321
113      - Tag:   DT_MIPS_MSYM
114        Value: 0x1000
115      - Tag:   DT_MIPS_CONFLICT
116        Value: 0x1000
117      - Tag:   DT_MIPS_LIBLIST
118        Value: 0x1000
119      - Tag:   DT_MIPS_LOCAL_GOTNO
120        Value: 0x1
121      - Tag:   DT_MIPS_CONFLICTNO
122        Value: 0x1
123      - Tag:   DT_MIPS_LIBLISTNO
124        Value: 0x1
125      - Tag:   DT_MIPS_SYMTABNO
126        Value: 0x1
127      - Tag:   DT_MIPS_UNREFEXTNO
128        Value: 0x0
129      - Tag:   DT_MIPS_GOTSYM
130        Value: 0x0
131      - Tag:   DT_MIPS_HIPAGENO
132        Value: 0x88776655
133      - Tag:   DT_MIPS_RLD_MAP
134        Value: 0x1000
135      - Tag:   DT_MIPS_DELTA_CLASS
136        Value: 0x1000
137      - Tag:   DT_MIPS_DELTA_CLASS_NO
138        Value: 0x1
139      - Tag:   DT_MIPS_DELTA_INSTANCE
140        Value: 0x1000
141      - Tag:   DT_MIPS_DELTA_INSTANCE_NO
142        Value: 0x1
143      - Tag:   DT_MIPS_DELTA_RELOC
144        Value: 0x1000
145      - Tag:   DT_MIPS_DELTA_RELOC_NO
146        Value: 0x1
147      - Tag:   DT_MIPS_DELTA_SYM
148        Value: 0x1000
149      - Tag:   DT_MIPS_DELTA_SYM_NO
150        Value: 0x1
151      - Tag:   DT_MIPS_DELTA_CLASSSYM
152        Value: 0x1000
153      - Tag:   DT_MIPS_DELTA_CLASSSYM_NO
154        Value: 0x1
155      - Tag:   DT_MIPS_CXX_FLAGS
156        Value: 0x88887777
157      - Tag:   DT_MIPS_PIXIE_INIT
158        Value: 0x1000
159      - Tag:   DT_MIPS_LOCALPAGE_GOTIDX
160        Value: 0x1
161      - Tag:   DT_MIPS_LOCAL_GOTIDX
162        Value: 0x1
163      - Tag:   DT_MIPS_HIDDEN_GOTIDX
164        Value: 0x1
165      - Tag:   DT_MIPS_PROTECTED_GOTIDX
166        Value: 0x1
167      - Tag:   DT_MIPS_OPTIONS
168        Value: 0x1000
169      - Tag:   DT_MIPS_INTERFACE
170        Value: 0x1000
171      - Tag:   DT_MIPS_DYNSTR_ALIGN
172        Value: 0x88888888
173      - Tag:   DT_MIPS_INTERFACE_SIZE
174        Value: 0x10
175      - Tag:   DT_MIPS_RLD_TEXT_RESOLVE_ADDR
176        Value: 0x8
177      - Tag:   DT_MIPS_PERF_SUFFIX
178        Value: 0x0
179      - Tag:   DT_MIPS_COMPACT_SIZE
180        Value: 0x10
181      - Tag:   DT_MIPS_GP_VALUE
182        Value: 0x1
183      - Tag:   DT_MIPS_AUX_DYNAMIC
184        Value: 0x1000
185      - Tag:   DT_MIPS_PLTGOT
186        Value: 0x1000
187      - Tag:   DT_MIPS_RWPLT
188        Value: 0x1000
189      - Tag:   DT_MIPS_RLD_MAP_REL
190        Value: 0x1000
191      - Tag:   DT_MIPS_XHASH
192        Value: 0x2000
193      - Tag:   DT_NULL
194        Value: 0
195ProgramHeaders:
196  - Type:     PT_LOAD
197    FirstSec: .dynamic
198    LastSec:  .dynamic
199  - Type:     PT_DYNAMIC
200    FirstSec: .dynamic
201    LastSec:  .dynamic
202
203## Case 3: Test that PPC machine-specific tags can be dumped.
204# RUN: yaml2obj --docnum=3 -o %t.ppc %s
205# RUN: llvm-objdump -p %t.ppc | FileCheck %s --check-prefix=PPC
206
207# PPC:      Dynamic Section:
208# PPC-NEXT:  PPC_GOT 0x000200c0
209# PPC-NEXT:  PPC_OPT 0x00000001
210
211--- !ELF
212FileHeader:
213  Class:   ELFCLASS32
214  Data:    ELFDATA2MSB
215  Type:    ET_EXEC
216  Machine: EM_PPC
217Sections:
218  - Name: .dynamic
219    Type: SHT_DYNAMIC
220    Entries:
221      - Tag:   DT_PPC_GOT
222        Value: 0x200c0
223      - Tag:   DT_PPC_OPT
224        Value: 1
225      - Tag:   DT_NULL
226        Value: 0
227ProgramHeaders:
228  - Type:     PT_LOAD
229    FirstSec: .dynamic
230    LastSec:  .dynamic
231  - Type:     PT_DYNAMIC
232    FirstSec: .dynamic
233    LastSec:  .dynamic
234
235## Case 4: Test that PPC64 machine-specific tags can be dumped.
236# RUN: yaml2obj --docnum=4 -o %t.ppc64 %s
237# RUN: llvm-objdump -p %t.ppc64 | FileCheck %s --check-prefix=PPC64
238
239# PPC64:      Dynamic Section:
240# PPC64-NEXT:  PPC64_GLINK 0x0000000000001000
241
242--- !ELF
243FileHeader:
244  Class:   ELFCLASS64
245  Data:    ELFDATA2LSB
246  Type:    ET_EXEC
247  Machine: EM_PPC64
248Sections:
249  - Name: .dynamic
250    Type: SHT_DYNAMIC
251    Entries:
252      - Tag:   DT_PPC64_GLINK
253        Value: 0x1000
254      - Tag:   DT_NULL
255        Value: 0
256ProgramHeaders:
257  - Type:     PT_LOAD
258    FirstSec: .dynamic
259    LastSec:  .dynamic
260  - Type:      PT_DYNAMIC
261    FirstSec: .dynamic
262    LastSec:  .dynamic
263
264## Case 5: Test that AARCH64 machine-specific tags can be dumped.
265# RUN: yaml2obj --docnum=5 -o %t.aarch64 %s
266# RUN: llvm-objdump -p %t.aarch64 | FileCheck %s --check-prefix=AARCH64
267
268# AARCH64:      Dynamic Section:
269# AARCH64-NEXT:  AARCH64_BTI_PLT      0x0000000000000001
270# AARCH64-NEXT:  AARCH64_PAC_PLT      0x0000000000000002
271# AARCH64-NEXT:  AARCH64_AUTH_RELR    0x0000000000000003
272# AARCH64-NEXT:  AARCH64_AUTH_RELRSZ  0x0000000000000004
273# AARCH64-NEXT:  AARCH64_AUTH_RELRENT 0x0000000000000005
274
275--- !ELF
276FileHeader:
277  Class:   ELFCLASS64
278  Data:    ELFDATA2LSB
279  Type:    ET_EXEC
280  Machine: EM_AARCH64
281Sections:
282  - Name: .dynamic
283    Type: SHT_DYNAMIC
284    Entries:
285      - Tag:   DT_AARCH64_BTI_PLT
286        Value: 1
287      - Tag:   DT_AARCH64_PAC_PLT
288        Value: 2
289      - Tag:   DT_AARCH64_AUTH_RELR
290        Value: 3
291      - Tag:   DT_AARCH64_AUTH_RELRSZ
292        Value: 4
293      - Tag:   DT_AARCH64_AUTH_RELRENT
294        Value: 5
295      - Tag:   DT_NULL
296        Value: 0
297ProgramHeaders:
298  - Type:     PT_LOAD
299    FirstSec: .dynamic
300    LastSec:  .dynamic
301  - Type:     PT_DYNAMIC
302    FirstSec: .dynamic
303    LastSec:  .dynamic
304
305## Case 6: Test that RISC-V machine-specific tags can be dumped.
306# RUN: yaml2obj --docnum=6 %s -o %t.rv
307# RUN: llvm-objdump -p %t.rv | FileCheck %s --check-prefix=RISCV
308
309# RISCV:      Dynamic Section:
310# RISCV-NEXT:  RISCV_VARIANT_CC     0x0000000000000001
311
312--- !ELF
313FileHeader:
314  Class:   ELFCLASS64
315  Data:    ELFDATA2LSB
316  Type:    ET_EXEC
317  Machine: EM_RISCV
318Sections:
319  - Name: .dynamic
320    Type: SHT_DYNAMIC
321    Entries:
322      - Tag:   DT_RISCV_VARIANT_CC
323        Value: 1
324      - Tag:   DT_NULL
325        Value: 0
326ProgramHeaders:
327  - Type:     PT_LOAD
328    FirstSec: .dynamic
329    LastSec:  .dynamic
330  - Type:     PT_DYNAMIC
331    FirstSec: .dynamic
332    LastSec:  .dynamic
333