[InstCombine] Signed saturation patterns
[llvm-core.git] / test / tools / yaml2obj / elf-hash-section.yaml
blob4aad9c11fd592d1332e3ddc77341a5ea70e4591e
1 ## Check how yaml2obj produces SHT_HASH sections.
3 ## Check we can describe a SHT_HASH section using the "Content" tag.
5 # RUN: yaml2obj --docnum=1 %s -o %t1
6 # RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s --check-prefix=CONTENT
8 # CONTENT:      Name: .hash
9 # CONTENT-NEXT: Type: SHT_HASH
10 # CONTENT-NEXT: Flags [
11 # CONTENT-NEXT: ]
12 # CONTENT-NEXT: Address: 0x0
13 # CONTENT-NEXT: Offset: 0x44
14 # CONTENT-NEXT: Size: 20
15 # CONTENT-NEXT: Link: 1
16 # CONTENT-NEXT: Info: 0
17 # CONTENT-NEXT: AddressAlignment: 0
18 # CONTENT-NEXT: EntrySize: 0
19 # CONTENT-NEXT: SectionData (
20 # CONTENT-NEXT:   0000: 01000000 02000000 03000000 04000000
21 # CONTENT-NEXT:   0010: 05000000
22 # CONTENT-NEXT: )
24 --- !ELF
25 FileHeader:
26   Class:   ELFCLASS32
27   Data:    ELFDATA2LSB
28   Type:    ET_DYN
29   Machine: EM_386
30 Sections:
31 ## SHT_HASH is linked to dynamic symbol table by default.
32   - Name: .dynsym
33     Type: SHT_DYNSYM
34   - Name:    .hash
35     Type:    SHT_HASH
36     Content: '0100000002000000030000000400000005000000'
38 ## Check we can describe a SHT_HASH section using "Bucket" and "Chain" tags.
40 # RUN: yaml2obj --docnum=2 %s -o %t2
41 # RUN: llvm-readobj --sections --section-data %t2 | FileCheck %s --check-prefix=BUCKET-CHAIN
43 # BUCKET-CHAIN:      Name: .hash
44 # BUCKET-CHAIN:      Size:
45 # BUCKET-CHAIN-SAME: 28
46 # BUCKET-CHAIN:      Link:
47 # BUCKET-CHAIN-SAME: 0
48 # BUCKET-CHAIN:      SectionData (
49 # BUCKET-CHAIN-NEXT:   0000: 02000000 03000000 01000000 02000000  |
50 # BUCKET-CHAIN-NEXT:   0010: 03000000 04000000 05000000           |
51 # BUCKET-CHAIN-NEXT: )
53 --- !ELF
54 FileHeader:
55   Class:   ELFCLASS32
56   Data:    ELFDATA2LSB
57   Type:    ET_DYN
58   Machine: EM_386
59 Sections:
60   - Name:   .hash
61     Type:   SHT_HASH
62     Bucket: [ 1, 2 ]
63     Chain:  [ 3, 4, 5 ]
65 ## Check we can't use "Content" and "Bucket" tags together.
67 # RUN: not yaml2obj --docnum=3 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-BUCKET
69 # CONTENT-BUCKET: "Bucket" cannot be used with "Content" or "Size"
71 --- !ELF
72 FileHeader:
73   Class:   ELFCLASS32
74   Data:    ELFDATA2LSB
75   Type:    ET_DYN
76   Machine: EM_386
77 Sections:
78   - Name:   .hash
79     Type:   SHT_HASH
80     Bucket: [ 1 ]
81     Content: '00'
83 ## Check we can't use "Content" and "Chain" tags together.
85 # RUN: not yaml2obj --docnum=4 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-CHAIN
87 # CONTENT-CHAIN: "Chain" cannot be used with "Content" or "Size"
89 --- !ELF
90 FileHeader:
91   Class:   ELFCLASS32
92   Data:    ELFDATA2LSB
93   Type:    ET_DYN
94   Machine: EM_386
95 Sections:
96   - Name:   .hash
97     Type:   SHT_HASH
98     Chain:  [ 1 ]
99     Content: '00'
101 ## Check we can't use "Bucket" without "Chain".
103 # RUN: not yaml2obj --docnum=5 %s 2>&1 | FileCheck %s --check-prefix=NO-BUCKET-OR-CHAIN
105 # NO-BUCKET-OR-CHAIN: error: "Bucket" and "Chain" must be used together
107 --- !ELF
108 FileHeader:
109   Class:   ELFCLASS32
110   Data:    ELFDATA2LSB
111   Type:    ET_DYN
112   Machine: EM_386
113 Sections:
114   - Name:   .hash
115     Type:   SHT_HASH
116     Bucket: [ 1 ]
118 ## Check we can't use "Chain" without "Bucket".
120 # RUN: not yaml2obj --docnum=6 %s 2>&1 | FileCheck %s --check-prefix=NO-BUCKET-OR-CHAIN
122 --- !ELF
123 FileHeader:
124   Class:   ELFCLASS32
125   Data:    ELFDATA2LSB
126   Type:    ET_DYN
127   Machine: EM_386
128 Sections:
129   - Name:  .hash
130     Type:  SHT_HASH
131     Chain: [ 1 ]
133 ## Check we report an error if neither "Bucket", "Chain" nor "Content" were set.
135 # RUN: not yaml2obj --docnum=7 %s 2>&1 | FileCheck %s --check-prefix=NO-TAGS
137 # NO-TAGS: error: one of "Content", "Size", "Bucket" or "Chain" must be specified
139 --- !ELF
140 FileHeader:
141   Class:   ELFCLASS32
142   Data:    ELFDATA2LSB
143   Type:    ET_DYN
144   Machine: EM_386
145 Sections:
146   - Name:  .hash
147     Type:  SHT_HASH
149 ## Check we can set any sh_link value with use of the "Link" tag.
151 # RUN: yaml2obj --docnum=8 %s -o %t8
152 # RUN: llvm-readobj --sections %t8 | FileCheck %s --check-prefix=LINK
154 # LINK:      Name: .hash1
155 # LINK:      Link:
156 # LINK-SAME: 123
158 # LINK:      Name: .hash2
159 # LINK:      Link:
160 # LINK-SAME: 1
162 --- !ELF
163 FileHeader:
164   Class:   ELFCLASS32
165   Data:    ELFDATA2LSB
166   Type:    ET_DYN
167   Machine: EM_386
168 Sections:
169   - Name: .hash1
170     Type: SHT_HASH
171     Content: ""
172     Link: 123
173   - Name: .hash2
174     Type: SHT_HASH
175     Content: ""
176     Link: .hash1
177 ## SHT_HASH is linked to dynamic symbol table by default if it exists.
178   - Name: .dynsym
179     Type: SHT_DYNSYM
181 ## Check we can use only "Size" to create a SHT_HASH section.
183 # RUN: yaml2obj --docnum=9 %s -o %t9
184 # RUN: llvm-readobj --sections --section-data %t9 | FileCheck %s --check-prefix=SIZE
186 # SIZE:      Name: .hash
187 # SIZE:      Size:
188 # SIZE-SAME: 17
189 # SIZE:      SectionData (
190 # SIZE-NEXT:  0000: 00000000 00000000 00000000 00000000  |
191 # SIZE-NEXT:  0010: 00                                   |
192 # SIZE-NEXT: )
194 --- !ELF
195 FileHeader:
196   Class:   ELFCLASS64
197   Data:    ELFDATA2LSB
198   Type:    ET_EXEC
199   Machine: EM_X86_64
200 Sections:
201   - Name: .hash
202     Type: SHT_HASH
203     Size: 0x11
205 ## Check we can use "Size" and "Content" together to create a SHT_HASH section.
207 # RUN: yaml2obj --docnum=10 %s -o %t10
208 # RUN: llvm-readobj --sections --section-data %t10 | FileCheck %s --check-prefix=SIZE-CONTENT
210 # SIZE-CONTENT:      Name: .hash
211 # SIZE-CONTENT:      Size:
212 # SIZE-CONTENT-SAME: 5
213 # SIZE-CONTENT:      SectionData (
214 # SIZE-CONTENT-NEXT:  0000: 11223300 00 |
215 # SIZE-CONTENT-NEXT: )
217 --- !ELF
218 FileHeader:
219   Class:   ELFCLASS64
220   Data:    ELFDATA2LSB
221   Type:    ET_EXEC
222   Machine: EM_X86_64
223 Sections:
224   - Name: .hash
225     Type: SHT_HASH
226     Size: 0x5
227     Content: "112233"
229 ## Check that when "Size" and "Content" are used together, the size
230 ## must be greater than or equal to the content size.
232 # RUN: not yaml2obj --docnum=11 %s 2>&1 | FileCheck %s --check-prefix=SIZE-CONTENT-ERR
234 # SIZE-CONTENT-ERR: error: "Size" must be greater than or equal to the content size
236 --- !ELF
237 FileHeader:
238   Class:   ELFCLASS64
239   Data:    ELFDATA2LSB
240   Type:    ET_EXEC
241   Machine: EM_X86_64
242 Sections:
243   - Name: .hash
244     Type: SHT_HASH
245     Size: 0x1
246     Content: "1122"
248 ## Check we can't use "Size" and "Bucket" tags together.
250 # RUN: not yaml2obj --docnum=12 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-BUCKET
252 --- !ELF
253 FileHeader:
254   Class:   ELFCLASS64
255   Data:    ELFDATA2LSB
256   Type:    ET_EXEC
257   Machine: EM_X86_64
258 Sections:
259   - Name: .hash
260     Type: SHT_HASH
261     Size: 0x1
262     Bucket: [ 1 ]
264 ## Check we can't use "Size" and "Chain" tags together.
266 # RUN: not yaml2obj --docnum=13 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-CHAIN
268 --- !ELF
269 FileHeader:
270   Class:   ELFCLASS64
271   Data:    ELFDATA2LSB
272   Type:    ET_EXEC
273   Machine: EM_X86_64
274 Sections:
275   - Name: .hash
276     Type: SHT_HASH
277     Size: 0x1
278     Chain: [ 1 ]