Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / tools / yaml2obj / ELF / dynsymtab-implicit-sections-size-content.yaml
blob8de229c81115ee0951eed3580a969c498883708f
1 ## For implicit dynamic symbol table sections, `Size` and/or `Content`
2 ## fields can also be specified in YAML. Here we test the behavior in
3 ## different cases.
5 ## When no `Size` or `Content` is specified for a dynamic symbol table section,
6 ## yaml2obj writes the default content.
8 # RUN: yaml2obj --docnum=1 %s -o %t1
9 # RUN: llvm-readelf %t1 --dyn-symbols | FileCheck %s --check-prefix=CASE1
11 # CASE1:      Symbol table '.dynsym' contains 2 entries:
12 # CASE1-NEXT:    Num:    Value          Size Type    Bind   Vis      Ndx Name
13 # CASE1-NEXT:      0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
14 # CASE1-NEXT:      1: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND foo
15 # CASE1-EMPTY:
17 --- !ELF
18 FileHeader:
19   Class: ELFCLASS64
20   Data:  ELFDATA2LSB
21   Type:  ET_DYN
22 Sections:
23   - Name: .dynsym
24     Type: SHT_DYNSYM
25 DynamicSymbols:
26   - Name:    foo
27     Binding: STB_GLOBAL
29 ## Specifying both `Size` and symbols at the same time is not allowed for .dynsym.
31 # RUN: not yaml2obj --docnum=2 %s 2>&1 | FileCheck %s --implicit-check-not=error --check-prefix=CASE2
32 # RUN: not yaml2obj --docnum=3 %s 2>&1 | FileCheck %s --implicit-check-not=error --check-prefix=CASE2
34 # CASE2: yaml2obj: error: cannot specify both `Size` and `DynamicSymbols` for symbol table section '.dynsym'
36 --- !ELF
37 FileHeader:
38   Class: ELFCLASS64
39   Data:  ELFDATA2LSB
40   Type:  ET_DYN
41 Sections:
42   - Name: .dynsym
43     Type: SHT_DYNSYM
44     Size: 0x100
45   - Name: .dynsym2
46     Type: SHT_DYNSYM
47     Size: 0x100
48 DynamicSymbols:
49   - Name:    foo
50     Binding: STB_GLOBAL
52 --- !ELF
53 FileHeader:
54   Class: ELFCLASS64
55   Data:  ELFDATA2LSB
56   Type:  ET_DYN
57 Sections:
58   - Name: .dynsym
59     Type: SHT_DYNSYM
60     Size: 0x100
61   - Name: .dynsym2
62     Type: SHT_DYNSYM
63     Size: 0x100
64 DynamicSymbols: []
66 ## Specifying both `Content` and symbols at the same time is not allowed for .dynsym.
68 # RUN: not yaml2obj --docnum=4 %s 2>&1 | FileCheck %s --implicit-check-not=error --check-prefix=CASE3
69 # RUN: not yaml2obj --docnum=5 %s 2>&1 | FileCheck %s --implicit-check-not=error --check-prefix=CASE3
71 # CASE3: yaml2obj: error: cannot specify both `Content` and `DynamicSymbols` for symbol table section '.dynsym'
73 --- !ELF
74 FileHeader:
75   Class: ELFCLASS64
76   Data:  ELFDATA2LSB
77   Type:  ET_DYN
78 Sections:
79   - Name:    .dynsym
80     Type:    SHT_DYNSYM
81     Content: "00"
82   - Name:    .dynsym2
83     Type:    SHT_DYNSYM
84     Content: "00"
85 DynamicSymbols:
86   - Name:    foo
87     Binding: STB_GLOBAL
89 --- !ELF
90 FileHeader:
91   Class: ELFCLASS64
92   Data:  ELFDATA2LSB
93   Type:  ET_DYN
94 Sections:
95   - Name:    .dynsym
96     Type:    SHT_DYNSYM
97     Content: "00"
98   - Name:    .dynsym2
99     Type:    SHT_DYNSYM
100     Content: "00"
101 DynamicSymbols: []
103 ## Check we can use just `Content` to emit custom data in the symbol table section.
104 # RUN: yaml2obj --docnum=6 %s -o %t4
105 # RUN: llvm-readobj --section-data -S %t4 | FileCheck %s --check-prefix=CASE4
107 # CASE4:      Name: .dynsym
108 # CASE4-NEXT: Type: SHT_DYNSYM
109 # CASE4-NEXT: Flags [
110 # CASE4-NEXT:   SHF_ALLOC
111 # CASE4-NEXT: ]
112 # CASE4-NEXT: Address: 0x0
113 # CASE4-NEXT: Offset: 0x40
114 # CASE4-NEXT: Size: 2
115 # CASE4-NEXT: Link: 0
116 # CASE4-NEXT: Info: 1
117 # CASE4-NEXT: AddressAlignment: 0
118 # CASE4-NEXT: EntrySize: 24
119 # CASE4-NEXT: SectionData (
120 # CASE4-NEXT:   0000: 0123
121 # CASE4-NEXT: )
123 --- !ELF
124 FileHeader:
125   Class: ELFCLASS64
126   Data:  ELFDATA2LSB
127   Type:  ET_DYN
128 Sections:
129   - Name: .dynsym
130     Type: SHT_DYNSYM
131     Content: "0123"
133 ## Check we can use just `Size` to emit custom data filled with zeroes
134 ## in the symbol table section.
135 # RUN: yaml2obj --docnum=7 %s -o %t5
136 # RUN: llvm-readobj --section-data -S %t5 | FileCheck %s --check-prefix=CASE5
138 # CASE5:      Name: .dynsym
139 # CASE5-NEXT: Type: SHT_DYNSYM
140 # CASE5-NEXT: Flags [
141 # CASE5-NEXT:   SHF_ALLOC
142 # CASE5-NEXT: ]
143 # CASE5-NEXT: Address: 0x0
144 # CASE5-NEXT: Offset: 0x40
145 # CASE5-NEXT: Size: 5
146 # CASE5-NEXT: Link: 0
147 # CASE5-NEXT: Info: 1
148 # CASE5-NEXT: AddressAlignment: 0
149 # CASE5-NEXT: EntrySize: 24
150 # CASE5-NEXT: SectionData (
151 # CASE5-NEXT:   0000: 00000000 00
152 # CASE5-NEXT: )
154 --- !ELF
155 FileHeader:
156   Class: ELFCLASS64
157   Data:  ELFDATA2LSB
158   Type:  ET_DYN
159 Sections:
160   - Name: .dynsym
161     Type: SHT_DYNSYM
162     Size: 5
164 ## Check we can specify both `Size` and `Content` when size is greater
165 ## than content size. In this case zeroes are added as padding
166 ## after after the specified content.
168 # RUN: yaml2obj --docnum=8 %s -o %t6
169 # RUN: llvm-readobj %t6 --section-data -S | FileCheck %s --check-prefix=CASE6
171 # CASE6:      Name: .dynsym
172 # CASE6-NEXT: Type: SHT_DYNSYM
173 # CASE6-NEXT: Flags [
174 # CASE6-NEXT:   SHF_ALLOC
175 # CASE6-NEXT: ]
176 # CASE6-NEXT: Address: 0x0
177 # CASE6-NEXT: Offset: 0x40
178 # CASE6-NEXT: Size: 4
179 # CASE6-NEXT: Link: 0
180 # CASE6-NEXT: Info: 1
181 # CASE6-NEXT: AddressAlignment: 0
182 # CASE6-NEXT: EntrySize: 24
183 # CASE6-NEXT: SectionData (
184 # CASE6-NEXT:   0000: 01230000
185 # CASE6-NEXT: )
187 --- !ELF
188 FileHeader:
189   Class: ELFCLASS64
190   Data:  ELFDATA2LSB
191   Type:  ET_DYN
192 Sections:
193   - Name: .dynsym
194     Type: SHT_DYNSYM
195     Content: "0123"
196     Size: 4
198 ## Check we can specify both `Size` and `Content` when size is
199 ## equal to content size.
201 # RUN: yaml2obj --docnum=9 %s -o %t7
202 # RUN: llvm-readobj --section-data -S %t7 | FileCheck %s --check-prefix=CASE7
204 # CASE7:       Name: .dynsym
205 # CASE7-NEXT:  Type: SHT_DYNSYM
206 # CASE7-NEXT:  Flags [
207 # CASE7-NEXT:    SHF_ALLOC
208 # CASE7-NEXT:  ]
209 # CASE7-NEXT:  Address: 0x0
210 # CASE7-NEXT:  Offset: 0x40
211 # CASE7-NEXT:  Size: 2
212 # CASE7-NEXT:  Link: 0
213 # CASE7-NEXT:  Info: 1
214 # CASE7-NEXT:  AddressAlignment: 0
215 # CASE7-NEXT:  EntrySize: 24
216 # CASE7-NEXT:  SectionData (
217 # CASE7-NEXT:    0000: 0123
218 # CASE7-NEXT:  )
220 --- !ELF
221 FileHeader:
222   Class: ELFCLASS64
223   Data:  ELFDATA2LSB
224   Type:  ET_DYN
225 Sections:
226   - Name: .dynsym
227     Type: SHT_DYNSYM
228     Content: "0123"
229     Size: 2