[yaml2obj][obj2yaml] - Do not create a symbol table by default.
[llvm-complete.git] / test / tools / yaml2obj / elf-llvm-addrsig-section.yaml
blob1433d6dbc13e7e9174bfc900a85c645c96eab634
1 ## Check how yaml2obj produces SHT_LLVM_ADDRSIG sections.
3 ## Check we can describe SHT_LLVM_ADDRSIG using the "Symbols" tag. We can define
4 ## symbols either using names or indexes.
6 # RUN: yaml2obj --docnum=1 %s -o %t1
7 # RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s --check-prefix=SYMBOLS
9 # SYMBOLS:      Section {
10 # SYMBOLS:        Index: 1
11 # SYMBOLS-NEXT:   Name: .llvm_addrsig
12 # SYMBOLS-NEXT:   Type: SHT_LLVM_ADDRSIG
13 # SYMBOLS-NEXT:   Flags [
14 # SYMBOLS-NEXT:   ]
15 # SYMBOLS-NEXT:   Address: 0x0
16 # SYMBOLS-NEXT:   Offset: 0x40
17 # SYMBOLS-NEXT:   Size: 4
18 # SYMBOLS-NEXT:   Link: 2
19 # SYMBOLS-NEXT:   Info: 0
20 # SYMBOLS-NEXT:   AddressAlignment: 0
21 # SYMBOLS-NEXT:   EntrySize: 0
22 # SYMBOLS-NEXT:   SectionData (
23 # SYMBOLS-NEXT:     0000: 01020102
24 # SYMBOLS-NEXT:   )
25 # SYMBOLS-NEXT: }
27 --- !ELF
28 FileHeader:
29   Class:   ELFCLASS64
30   Data:    ELFDATA2LSB
31   Type:    ET_DYN
32   Machine: EM_X86_64
33 Sections:
34   - Name: .llvm_addrsig
35     Type: SHT_LLVM_ADDRSIG
36     Symbols:
37       - Name: foo
38       - Name: bar
39       - Index: 1
40       - Index: 2
41 Symbols:
42   - Name:    foo
43     Type:    STT_FUNC
44     Binding: STB_GLOBAL
45   - Name:    bar
46     Type:    STT_FUNC
47     Binding: STB_GLOBAL
49 ## We can't specify both "Index" and "Name" when defining a symbol.
51 # RUN: not yaml2obj --docnum=2 %s 2>&1 | FileCheck %s --check-prefix=INDEX-NAME
53 # INDEX-NAME: error: "Index" and "Name" cannot be used together when defining a symbol
55 --- !ELF
56 FileHeader:
57   Class:   ELFCLASS64
58   Data:    ELFDATA2LSB
59   Type:    ET_DYN
60   Machine: EM_X86_64
61 Sections:
62   - Name: .llvm_addrsig
63     Type: SHT_LLVM_ADDRSIG
64     Symbols:
65       - Name: foo
66         Index: 1
67 Symbols:
68   - Name:    foo
69     Type:    STT_FUNC
70     Binding: STB_GLOBAL
72 ## Check we report an error if an unknown symbol is referenced in the
73 ## SHT_LLVM_ADDRSIG section description.
75 # RUN: not yaml2obj --docnum=3 %s 2>&1 | FileCheck %s --check-prefix=SYMBOL-UNKNOWN
77 # SYMBOL-UNKNOWN: error: unknown symbol referenced: 'foo' by YAML section '.llvm_addrsig'
78 # SYMBOL-UNKNOWN: error: unknown symbol referenced: 'bar' by YAML section '.llvm_addrsig'
80 --- !ELF
81 FileHeader:
82   Class:   ELFCLASS64
83   Data:    ELFDATA2LSB
84   Type:    ET_DYN
85   Machine: EM_X86_64
86 Sections:
87   - Name: .llvm_addrsig
88     Type: SHT_LLVM_ADDRSIG
89     Symbols:
90       - Name: foo
91       - Name: bar
93 ## Check we can specify any arbitrary symbol indices.
95 # RUN: yaml2obj --docnum=4 %s -o %t4
96 # RUN: llvm-readobj --sections --section-data %t4 | FileCheck %s --check-prefix=SYMBOL-INDEX
98 # SYMBOL-INDEX:      Type: SHT_LLVM_ADDRSIG
99 # SYMBOL-INDEX:      SectionData (
100 # SYMBOL-INDEX-NEXT:   0000: 00FF01C4 E6888901 FFFFFFFF 0F
101 # SYMBOL-INDEX-NEXT: )
103 --- !ELF
104 FileHeader:
105   Class:   ELFCLASS64
106   Data:    ELFDATA2LSB
107   Type:    ET_DYN
108   Machine: EM_X86_64
109 Sections:
110   - Name: .llvm_addrsig
111     Type: SHT_LLVM_ADDRSIG
112     Symbols:
113       - Index: 0
114       - Index: 255
115       - Index: 0x11223344
116 ## 0xFFFFFFFF is a maximum allowed index value.
117       - Index: 0xFFFFFFFF
119 ## Check that the maximum symbol index size is 32 bits.
121 # RUN: not yaml2obj --docnum=5 %s 2>&1 | FileCheck %s --check-prefix=SYMBOL-INDEX-OVERFLOW
123 # SYMBOL-INDEX-OVERFLOW: error: out of range hex32 number
125 --- !ELF
126 FileHeader:
127   Class:   ELFCLASS64
128   Data:    ELFDATA2LSB
129   Type:    ET_DYN
130   Machine: EM_X86_64
131 Sections:
132   - Name: .llvm_addrsig
133     Type: SHT_LLVM_ADDRSIG
134     Symbols:
135       - Index: 0x1122334455
137 ## Check we can use the "Content" tag to specify any data for SHT_LLVM_ADDRSIG sections.
139 # RUN: yaml2obj --docnum=6 %s -o %t6
140 # RUN: llvm-readobj --sections --section-data %t6 | FileCheck %s --check-prefix=CONTENT
142 # CONTENT:      Type: SHT_LLVM_ADDRSIG
143 # CONTENT:      Size:
144 # CONTENT-SAME: 5
145 # CONTENT:      SectionData (
146 # CONTENT-NEXT:   0000: 11223344 55
147 # CONTENT-NEXT: )
149 --- !ELF
150 FileHeader:
151   Class:   ELFCLASS64
152   Data:    ELFDATA2LSB
153   Type:    ET_DYN
154   Machine: EM_X86_64
155 Sections:
156   - Name: .llvm_addrsig
157     Type: SHT_LLVM_ADDRSIG
158     Content: "1122334455"
160 ## Either "Content" or "Symbols" must be specifed for SHT_LLVM_ADDRSIG sections.
162 # RUN: not yaml2obj --docnum=7 %s 2>&1 | FileCheck %s --check-prefix=NO-TAGS
164 # NO-TAGS: error: one of "Content", "Size" or "Symbols" must be specified
166 --- !ELF
167 FileHeader:
168   Class:   ELFCLASS64
169   Data:    ELFDATA2LSB
170   Type:    ET_DYN
171   Machine: EM_X86_64
172 Sections:
173   - Name: .llvm_addrsig
174     Type: SHT_LLVM_ADDRSIG
176 ## "Content" and "Symbols" cannot be used together to describe the SHT_LLVM_ADDRSIG section.
178 # RUN: not yaml2obj --docnum=8 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-SYMBOLS
180 # CONTENT-SYMBOLS: "Symbols" cannot be used with "Content" or "Size"
182 --- !ELF
183 FileHeader:
184   Class:   ELFCLASS64
185   Data:    ELFDATA2LSB
186   Type:    ET_DYN
187   Machine: EM_X86_64
188 Sections:
189   - Name: .llvm_addrsig
190     Type: SHT_LLVM_ADDRSIG
191     Content: ""
192     Symbols:
194 ## Check we can set an arbitrary sh_link value for SHT_LLVM_ADDRSIG sections.
196 # RUN: yaml2obj --docnum=9 %s -o %t9
197 # RUN: llvm-readobj --sections %t9 | FileCheck %s --check-prefix=LINK
199 # LINK:      Name: .llvm_addrsig
200 # LINK:      Link:
201 # LINK-SAME:       123{{$}}
203 --- !ELF
204 FileHeader:
205   Class:   ELFCLASS64
206   Data:    ELFDATA2LSB
207   Type:    ET_DYN
208   Machine: EM_X86_64
209 Sections:
210   - Name: .llvm_addrsig
211     Type: SHT_LLVM_ADDRSIG
212     Link: 123
213     Content: ""
215 ## Check we can use only "Size" to create a SHT_LLVM_ADDRSIG section.
217 # RUN: yaml2obj --docnum=10 %s -o %t10
218 # RUN: llvm-readobj --sections --section-data %t10 | FileCheck %s --check-prefix=SIZE
220 # SIZE:      Name: .llvm_addrsig
221 # SIZE:      Size:
222 # SIZE-SAME: 17
223 # SIZE:      SectionData (
224 # SIZE-NEXT:  0000: 00000000 00000000 00000000 00000000  |
225 # SIZE-NEXT:  0010: 00                                   |
226 # SIZE-NEXT: )
228 --- !ELF
229 FileHeader:
230   Class:   ELFCLASS64
231   Data:    ELFDATA2LSB
232   Type:    ET_EXEC
233   Machine: EM_X86_64
234 Sections:
235   - Name: .llvm_addrsig
236     Type: SHT_LLVM_ADDRSIG
237     Size: 0x11
239 ## Check we can use "Size" and "Content" together to create a SHT_LLVM_ADDRSIG section.
241 # RUN: yaml2obj --docnum=11 %s -o %t11
242 # RUN: llvm-readobj --sections --section-data %t11 | FileCheck %s --check-prefix=SIZE-CONTENT
244 # SIZE-CONTENT:      Name: .llvm_addrsig_sizegr
245 # SIZE-CONTENT:      Size:
246 # SIZE-CONTENT-SAME: 5
247 # SIZE-CONTENT:      SectionData (
248 # SIZE-CONTENT-NEXT:  0000: 11223300 00 |
249 # SIZE-CONTENT-NEXT: )
251 # SIZE-CONTENT:      Name: .llvm_addrsig_sizeeq
252 # SIZE-CONTENT:      Size:
253 # SIZE-CONTENT-SAME: 3
254 # SIZE-CONTENT:      SectionData (
255 # SIZE-CONTENT-NEXT:  0000: 112233 |
256 # SIZE-CONTENT-NEXT: )
258 --- !ELF
259 FileHeader:
260   Class:   ELFCLASS64
261   Data:    ELFDATA2LSB
262   Type:    ET_EXEC
263   Machine: EM_X86_64
264 Sections:
265   - Name: .llvm_addrsig_sizegr
266     Type: SHT_LLVM_ADDRSIG
267     Size: 0x5
268     Content: "112233"
269   - Name: .llvm_addrsig_sizeeq
270     Type: SHT_LLVM_ADDRSIG
271     Size: 0x3
272     Content: "112233"
274 ## Check that when "Size" and "Content" are used together, the size
275 ## must be greater than or equal to the content size.
277 # RUN: not yaml2obj --docnum=12 %s 2>&1 | FileCheck %s --check-prefix=SIZE-CONTENT-ERR
279 # SIZE-CONTENT-ERR: error: "Size" must be greater than or equal to the content size
281 --- !ELF
282 FileHeader:
283   Class:   ELFCLASS64
284   Data:    ELFDATA2LSB
285   Type:    ET_EXEC
286   Machine: EM_X86_64
287 Sections:
288   - Name: .llvm_addrsig
289     Type: SHT_LLVM_ADDRSIG
290     Size: 0x1
291     Content: "1122"
293 ## Check we can't use "Size" and "Symbols" tags together.
295 # RUN: not yaml2obj --docnum=13 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-SYMBOLS
297 --- !ELF
298 FileHeader:
299   Class:   ELFCLASS64
300   Data:    ELFDATA2LSB
301   Type:    ET_EXEC
302   Machine: EM_X86_64
303 Sections:
304   - Name: .llvm_addrsig
305     Type: SHT_LLVM_ADDRSIG
306     Size: 0x1
307     Symbols: [ ]