Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / tools / yaml2obj / ELF / symtab-implicit-sections-size-content.yaml
blob4f18423314d4952828af5cae24bf65113afdeaa5
1 ## For implicit symbol table sections, `Size` and/or `Content` fields can also
2 ## be specified in YAML. Here we test the behavior in different cases.
4 ## When no `Size` or `Content` is specified for a symbol table section,
5 ## yaml2obj writes the default content.
7 # RUN: yaml2obj --docnum=1 %s -o %t1
8 # RUN: llvm-readelf %t1 -s | FileCheck %s --check-prefix=CASE1
10 # CASE1:      Symbol table '.symtab' contains 2 entries:
11 # CASE1-NEXT:    Num:    Value          Size Type    Bind   Vis      Ndx Name
12 # CASE1-NEXT:      0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
13 # CASE1-NEXT:      1: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND foo
14 # CASE1-EMPTY:
16 --- !ELF
17 FileHeader:
18   Class: ELFCLASS64
19   Data:  ELFDATA2LSB
20   Type:  ET_DYN
21 Sections:
22   - Name: .symtab
23     Type: SHT_SYMTAB
24 Symbols:
25   - Name: foo
27 ## Specifying both `Size` and symbols at the same time is not allowed.
28 # RUN: not yaml2obj --docnum=2 %s -o %t2 2>&1 | FileCheck %s --check-prefix=CASE2
29 # RUN: not yaml2obj --docnum=3 %s -o %t2 2>&1 | FileCheck %s --check-prefix=CASE2
31 # CASE2: error: cannot specify both `Size` and `Symbols` for symbol table section '.symtab'
33 --- !ELF
34 FileHeader:
35   Class: ELFCLASS64
36   Data:  ELFDATA2LSB
37   Type:  ET_DYN
38 Sections:
39   - Name: .symtab
40     Type: SHT_SYMTAB
41     Size: 0x100
42 Symbols:
43   - Name: foo
45 --- !ELF
46 FileHeader:
47   Class: ELFCLASS64
48   Data:  ELFDATA2LSB
49   Type:  ET_DYN
50 Sections:
51   - Name: .symtab
52     Type: SHT_SYMTAB
53     Size: 0x100
54 Symbols: []
56 ## Specifying both `Content` and symbols at the same time is not allowed.
57 # RUN: not yaml2obj --docnum=4 %s -o %t3 2>&1 | FileCheck %s --check-prefix=CASE3
58 # RUN: not yaml2obj --docnum=5 %s -o %t3 2>&1 | FileCheck %s --check-prefix=CASE3
60 # CASE3: error: cannot specify both `Content` and `Symbols` for symbol table section '.symtab'
62 --- !ELF
63 FileHeader:
64   Class: ELFCLASS64
65   Data:  ELFDATA2LSB
66   Type:  ET_DYN
67 Sections:
68   - Name:    .symtab
69     Type:    SHT_SYMTAB
70     Content: "00"
71 Symbols:
72   - Name: foo
74 --- !ELF
75 FileHeader:
76   Class: ELFCLASS64
77   Data:  ELFDATA2LSB
78   Type:  ET_DYN
79 Sections:
80   - Name:    .symtab
81     Type:    SHT_SYMTAB
82     Content: "00"
83 Symbols: []
85 ## Check we can use just `Content` to emit custom data in the symbol table section.
86 # RUN: yaml2obj --docnum=6 %s -o %t4
87 # RUN: llvm-readobj --section-data -S %t4 | FileCheck %s --check-prefix=CASE4
89 # CASE4:      Name: .symtab
90 # CASE4-NEXT: Type: SHT_SYMTAB
91 # CASE4-NEXT: Flags [ (0x0)
92 # CASE4-NEXT: ]
93 # CASE4-NEXT: Address: 0x0
94 # CASE4-NEXT: Offset: 0x40
95 # CASE4-NEXT: Size: 2
96 # CASE4-NEXT: Link: 2
97 # CASE4-NEXT: Info: 1
98 # CASE4-NEXT: AddressAlignment: 0
99 # CASE4-NEXT: EntrySize: 24
100 # CASE4-NEXT: SectionData (
101 # CASE4-NEXT:   0000: 0123
102 # CASE4-NEXT: )
104 --- !ELF
105 FileHeader:
106   Class: ELFCLASS64
107   Data:  ELFDATA2LSB
108   Type:  ET_DYN
109 Sections:
110   - Name: .symtab
111     Type: SHT_SYMTAB
112     Content: "0123"
114 ## Check we can use just `Size` to emit custom data filled with zeroes
115 ## in the symbol table section.
116 # RUN: yaml2obj --docnum=7 %s -o %t5
117 # RUN: llvm-readobj --section-data -S %t5 | FileCheck %s --check-prefix=CASE5
119 # CASE5:      Name: .symtab (19)
120 # CASE5-NEXT: Type: SHT_SYMTAB (0x2)
121 # CASE5-NEXT: Flags [ (0x0)
122 # CASE5-NEXT: ]
123 # CASE5-NEXT: Address: 0x0
124 # CASE5-NEXT: Offset: 0x40
125 # CASE5-NEXT: Size: 5
126 # CASE5-NEXT: Link: 2
127 # CASE5-NEXT: Info: 1
128 # CASE5-NEXT: AddressAlignment: 0
129 # CASE5-NEXT: EntrySize: 24
130 # CASE5-NEXT: SectionData (
131 # CASE5-NEXT:   0000: 00000000 00
132 # CASE5-NEXT: )
134 --- !ELF
135 FileHeader:
136   Class: ELFCLASS64
137   Data:  ELFDATA2LSB
138   Type:  ET_DYN
139 Sections:
140   - Name: .symtab
141     Type: SHT_SYMTAB
142     Size: 5
144 ## Check we can specify both `Size` and `Content` when size is greater
145 ## than content size. In this case zeroes are added as padding
146 ## after the specified content.
148 # RUN: yaml2obj --docnum=8 %s -o %t6
149 # RUN: llvm-readobj %t6 --section-data -S | FileCheck %s --check-prefix=CASE6
151 # CASE6:      Name: .symtab
152 # CASE6-NEXT: Type: SHT_SYMTAB
153 # CASE6-NEXT: Flags [
154 # CASE6-NEXT: ]
155 # CASE6-NEXT: Address: 0x0
156 # CASE6-NEXT: Offset: 0x40
157 # CASE6-NEXT: Size: 4
158 # CASE6-NEXT: Link: 2
159 # CASE6-NEXT: Info: 1
160 # CASE6-NEXT: AddressAlignment: 0
161 # CASE6-NEXT: EntrySize: 24
162 # CASE6-NEXT: SectionData (
163 # CASE6-NEXT:   0000: 01230000
164 # CASE6-NEXT: )
166 --- !ELF
167 FileHeader:
168   Class: ELFCLASS64
169   Data:  ELFDATA2LSB
170   Type:  ET_DYN
171 Sections:
172   - Name: .symtab
173     Type: SHT_SYMTAB
174     Content: "0123"
175     Size: 4
177 ## Check we can specify both `Size` and `Content` when size is
178 ## equal to content size.
180 # RUN: yaml2obj --docnum=9 %s -o %t7
181 # RUN: llvm-readobj --section-data -S %t7 | FileCheck %s --check-prefix=CASE7
183 # CASE7:       Name: .symtab
184 # CASE7-NEXT:  Type: SHT_SYMTAB
185 # CASE7-NEXT:  Flags [
186 # CASE7-NEXT:  ]
187 # CASE7-NEXT:  Address: 0x0
188 # CASE7-NEXT:  Offset: 0x40
189 # CASE7-NEXT:  Size: 2
190 # CASE7-NEXT:  Link: 2
191 # CASE7-NEXT:  Info: 1
192 # CASE7-NEXT:  AddressAlignment: 0
193 # CASE7-NEXT:  EntrySize: 24
194 # CASE7-NEXT:  SectionData (
195 # CASE7-NEXT:    0000: 0123
196 # CASE7-NEXT:  )
198 --- !ELF
199 FileHeader:
200   Class: ELFCLASS64
201   Data:  ELFDATA2LSB
202   Type:  ET_DYN
203 Sections:
204   - Name: .symtab
205     Type: SHT_SYMTAB
206     Content: "0123"
207     Size: 2