[lit] Add argument check: --timeout must be non-negative integer
[llvm-core.git] / test / tools / yaml2obj / symtab-implicit-sections-size-content.yaml
blob81758bd88e211de7946d306d6b07628b0b663f3f
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   Machine: EM_X86_64
22 Sections:
23   - Name: .symtab
24     Type: SHT_SYMTAB
25 Symbols:
26   - Name: foo
28 ## Specifying both `Size` and symbols at the same time is not allowed.
29 # RUN: not yaml2obj --docnum=2 %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   Machine: EM_X86_64
39 Sections:
40   - Name: .symtab
41     Type: SHT_SYMTAB
42     Size: 0x100
43 Symbols:
44   - Name: foo
46 ## Specifying both `Content` and symbols at the same time is not allowed.
47 # RUN: not yaml2obj --docnum=3 %s -o %t3 2>&1 | FileCheck %s --check-prefix=CASE3
49 # CASE3: error: cannot specify both `Content` and `Symbols` for symbol table section '.symtab'
51 --- !ELF
52 FileHeader:
53   Class:   ELFCLASS64
54   Data:    ELFDATA2LSB
55   Type:    ET_DYN
56   Machine: EM_X86_64
57 Sections:
58   - Name: .symtab
59     Type: SHT_SYMTAB
60     Content: "00"
61 Symbols:
62   - Name: foo
64 ## Check we can use just `Content` to emit custom data in the symbol table section.
65 # RUN: yaml2obj --docnum=4 %s -o %t4
66 # RUN: llvm-readobj --section-data -S %t4 | FileCheck %s --check-prefix=CASE4
68 # CASE4:      Name: .symtab
69 # CASE4-NEXT: Type: SHT_SYMTAB
70 # CASE4-NEXT: Flags [ (0x0)
71 # CASE4-NEXT: ]
72 # CASE4-NEXT: Address: 0x0
73 # CASE4-NEXT: Offset: 0x40
74 # CASE4-NEXT: Size: 2
75 # CASE4-NEXT: Link: 2
76 # CASE4-NEXT: Info: 1
77 # CASE4-NEXT: AddressAlignment: 0
78 # CASE4-NEXT: EntrySize: 24
79 # CASE4-NEXT: SectionData (
80 # CASE4-NEXT:   0000: 0123
81 # CASE4-NEXT: )
83 --- !ELF
84 FileHeader:
85   Class:   ELFCLASS64
86   Data:    ELFDATA2LSB
87   Type:    ET_DYN
88   Machine: EM_X86_64
89 Sections:
90   - Name: .symtab
91     Type: SHT_SYMTAB
92     Content: "0123"
94 ## Check we can use just `Size` to emit custom data filled with zeroes
95 ## in the symbol table section.
96 # RUN: yaml2obj --docnum=5 %s -o %t5
97 # RUN: llvm-readobj --section-data -S %t5 | FileCheck %s --check-prefix=CASE5
99 # CASE5:      Name: .symtab (19)
100 # CASE5-NEXT: Type: SHT_SYMTAB (0x2)
101 # CASE5-NEXT: Flags [ (0x0)
102 # CASE5-NEXT: ]
103 # CASE5-NEXT: Address: 0x0
104 # CASE5-NEXT: Offset: 0x40
105 # CASE5-NEXT: Size: 5
106 # CASE5-NEXT: Link: 2
107 # CASE5-NEXT: Info: 1
108 # CASE5-NEXT: AddressAlignment: 0
109 # CASE5-NEXT: EntrySize: 24
110 # CASE5-NEXT: SectionData (
111 # CASE5-NEXT:   0000: 00000000 00
112 # CASE5-NEXT: )
114 --- !ELF
115 FileHeader:
116   Class:   ELFCLASS64
117   Data:    ELFDATA2LSB
118   Type:    ET_DYN
119   Machine: EM_X86_64
120 Sections:
121   - Name: .symtab
122     Type: SHT_SYMTAB
123     Size: 5
125 ## Check we can specify both `Size` and `Content` when size is greater
126 ## than content size. In this case zeroes are added as padding
127 ## after the specified content.
129 # RUN: yaml2obj --docnum=6 %s -o %t6
130 # RUN: llvm-readobj %t6 --section-data -S | FileCheck %s --check-prefix=CASE6
132 # CASE6:      Name: .symtab
133 # CASE6-NEXT: Type: SHT_SYMTAB
134 # CASE6-NEXT: Flags [
135 # CASE6-NEXT: ]
136 # CASE6-NEXT: Address: 0x0
137 # CASE6-NEXT: Offset: 0x40
138 # CASE6-NEXT: Size: 4
139 # CASE6-NEXT: Link: 2
140 # CASE6-NEXT: Info: 1
141 # CASE6-NEXT: AddressAlignment: 0
142 # CASE6-NEXT: EntrySize: 24
143 # CASE6-NEXT: SectionData (
144 # CASE6-NEXT:   0000: 01230000
145 # CASE6-NEXT: )
147 --- !ELF
148 FileHeader:
149   Class:   ELFCLASS64
150   Data:    ELFDATA2LSB
151   Type:    ET_DYN
152   Machine: EM_X86_64
153 Sections:
154   - Name: .symtab
155     Type: SHT_SYMTAB
156     Content: "0123"
157     Size: 4
159 ## Check we can specify both `Size` and `Content` when size is
160 ## equal to content size.
162 # RUN: yaml2obj --docnum=7 %s -o %t7
163 # RUN: llvm-readobj --section-data -S %t7 | FileCheck %s --check-prefix=CASE7
165 # CASE7:       Name: .symtab
166 # CASE7-NEXT:  Type: SHT_SYMTAB
167 # CASE7-NEXT:  Flags [
168 # CASE7-NEXT:  ]
169 # CASE7-NEXT:  Address: 0x0
170 # CASE7-NEXT:  Offset: 0x40
171 # CASE7-NEXT:  Size: 2
172 # CASE7-NEXT:  Link: 2
173 # CASE7-NEXT:  Info: 1
174 # CASE7-NEXT:  AddressAlignment: 0
175 # CASE7-NEXT:  EntrySize: 24
176 # CASE7-NEXT:  SectionData (
177 # CASE7-NEXT:    0000: 0123
178 # CASE7-NEXT:  )
180 --- !ELF
181 FileHeader:
182   Class:   ELFCLASS64
183   Data:    ELFDATA2LSB
184   Type:    ET_DYN
185   Machine: EM_X86_64
186 Sections:
187   - Name: .symtab
188     Type: SHT_SYMTAB
189     Content: "0123"
190     Size: 2