[lit] Add argument check: --timeout must be non-negative integer
[llvm-core.git] / test / tools / yaml2obj / elf-custom-null-section.yaml
blob90cc6f03f996aab146ccf842d5e126d21d3a86ea
1 ## In this test we check that can redefine the null section in the YAML.
3 ## Test the default output first.
5 # RUN: yaml2obj --docnum=1 %s -o %t1
6 # RUN: llvm-readelf --sections %t1 | FileCheck %s --check-prefix=DEFAULT
8 # DEFAULT:      Section Headers:
9 # DEFAULT-NEXT:  [Nr] Name      Type   Address          Off    Size   ES Flg Lk Inf Al
10 # DEFAULT-NEXT:  [ 0]           NULL   0000000000000000 000000 000000 00 0   0  0
11 # DEFAULT-NEXT:  [ 1] .symtab   SYMTAB 0000000000000000 000040 000018 18 2   1  8
12 # DEFAULT-NEXT:  [ 2] .strtab   STRTAB 0000000000000000 000058 000001 00 0   0  1
13 # DEFAULT-NEXT:  [ 3] .shstrtab STRTAB 0000000000000000 000059 00001b 00 0   0  1
15 --- !ELF
16 FileHeader:
17   Class:   ELFCLASS64
18   Data:    ELFDATA2LSB
19   Type:    ET_REL
20   Machine: EM_X86_64
22 ## Now define a SHT_NULL section with fields all zeroed.
23 ## In this case it is equal to the section created by default.
25 # RUN: yaml2obj --docnum=2 %s -o %t2
26 # RUN: llvm-readelf --sections %t2 | FileCheck %s --check-prefix=DEFAULT
28 --- !ELF
29 FileHeader:
30   Class:   ELFCLASS64
31   Data:    ELFDATA2LSB
32   Type:    ET_REL
33   Machine: EM_X86_64
34 Sections:
35   - Type:         SHT_NULL
36     Name:         ''
37     Flags:        [ ]
38     AddressAlign: 0x0
39     Size:         0x0
40     EntSize:      0x0
41     Link:         0
42     Info:         0
43     Address:      0x0
45 ## Check we can redefine fields of the first SHT_NULL section.
47 # RUN: yaml2obj --docnum=3 %s -o %t3
48 # RUN: llvm-readelf --sections %t3 | FileCheck %s --check-prefix=REDEFINE
50 # REDEFINE:      Section Headers:
51 # REDEFINE-NEXT:  [Nr] Name Type Address          Off    Size   ES Flg Lk Inf Al
52 # REDEFINE-NEXT:  [ 0] .foo NULL 0000000000000006 000000 000002 03   A 4   5  1
54 --- !ELF
55 FileHeader:
56   Class:   ELFCLASS64
57   Data:    ELFDATA2LSB
58   Type:    ET_REL
59   Machine: EM_X86_64
60 Sections:
61   - Type:         SHT_NULL
62     Name:         .foo
63     Flags:        [ SHF_ALLOC ]
64     AddressAlign: 0x1
65     Size:         0x2
66     EntSize:      0x3
67     Link:         4
68     Info:         5
69     Address:      0x6
71 ## Check that file size does not change if we redefine the Size
72 ## of the first SHT_NULL section.
74 # RUN: yaml2obj --docnum=4 %s -o %t4
75 # RUN: ls -l %t3 | tr -s ' ' | cut -d ' ' -f 5 > %t.txt
76 # RUN: ls -l %t4 | tr -s ' ' | cut -d ' ' -f 5 >> %t.txt
77 # RUN: FileCheck %s --input-file=%t.txt --check-prefix=SIZE
79 # SIZE: [[FILESIZE:.*]]
80 # SIZE: [[FILESIZE]]
82 --- !ELF
83 FileHeader:
84   Class:   ELFCLASS64
85   Data:    ELFDATA2LSB
86   Type:    ET_REL
87   Machine: EM_X86_64
88 Sections:
89   - Type:         SHT_NULL
90     Name:         .foo
91     Flags:        [ SHF_ALLOC ]
92     AddressAlign: 0x1
93     Size:         0xFFFF
94     EntSize:      0x3
95     Link:         4
96     Info:         5
97     Address:      0x6
99 ## Check we are still able to describe other sections too.
101 # RUN: yaml2obj --docnum=5 %s -o %t5
102 # RUN: llvm-readelf --sections %t5 | FileCheck %s --check-prefix=OTHER-SECTION
104 # OTHER-SECTION:      Section Headers:
105 # OTHER-SECTION-NEXT:   [Nr] Name      Type     Address          Off    Size   ES Flg Lk Inf Al
106 # OTHER-SECTION-NEXT:   [ 0]           NULL     0000000000000000 000000 000000 00 0   0  0
107 # OTHER-SECTION-NEXT:   [ 1] foo       PROGBITS 0000000000000000 000040 000000 00 0   0  0
108 # OTHER-SECTION-NEXT:   [ 2] .symtab   SYMTAB   0000000000000000 000040 000018 18 3   1  8
109 # OTHER-SECTION-NEXT:   [ 3] .strtab   STRTAB   0000000000000000 000058 000001 00 0   0  1
110 # OTHER-SECTION-NEXT:   [ 4] .shstrtab STRTAB   0000000000000000 000059 00001f 00 0   0  1
112 --- !ELF
113 FileHeader:
114   Class:   ELFCLASS64
115   Data:    ELFDATA2LSB
116   Type:    ET_REL
117   Machine: EM_X86_64
118 Sections:
119   - Type:         SHT_NULL
120     Name:         ''
121     Flags:        [ ]
122     AddressAlign: 0x0
123     Size:         0x0
124     EntSize:      0x0
125     Link:         0
126   - Type: SHT_PROGBITS
127     Name: 'foo'
129 ## Check we report an error if null section sh_link field refers to an unknown section.
131 # RUN: not yaml2obj --docnum=6 %s -o %t6 2>&1 | FileCheck %s --check-prefix=CASE4
133 # CASE4: error: unknown section referenced: '.foo' by YAML section ''
135 --- !ELF
136 FileHeader:
137   Class:   ELFCLASS64
138   Data:    ELFDATA2LSB
139   Type:    ET_REL
140   Machine: EM_X86_64
141 Sections:
142   - Type: SHT_NULL
143     Link: .foo
145 ## Check that null section fields are set to zero, if they are unspecified.
147 # RUN: yaml2obj --docnum=7 %s -o %t7
148 # RUN: llvm-readelf --sections %t7 | FileCheck %s --check-prefix=DEFAULT
150 --- !ELF
151 FileHeader:
152   Class:   ELFCLASS64
153   Data:    ELFDATA2LSB
154   Type:    ET_REL
155   Machine: EM_X86_64
156 Sections:
157   - Type: SHT_NULL
159 ## Check we do not crash if we have more than one SHT_NULL section.
161 # RUN: yaml2obj --docnum=8 %s -o %t8
162 # RUN: llvm-readelf --sections %t8 | FileCheck %s --check-prefix=MULTIPLE
164 # MULTIPLE:      Section Headers:
165 # MULTIPLE-NEXT:  [Nr] Name Type Address          Off    Size   ES Flg Lk Inf Al
166 # MULTIPLE-NEXT:  [ 0]      NULL 0000000000000000 000000 000000 00 0   0  0
167 # MULTIPLE-NEXT:  [ 1] .foo NULL 0000000000000123 000040 000020 10 A   1  2   0
169 --- !ELF
170 FileHeader:
171   Class:   ELFCLASS64
172   Data:    ELFDATA2LSB
173   Type:    ET_REL
174   Machine: EM_X86_64
175 Sections:
176   - Type: SHT_NULL
177   - Type:    SHT_NULL
178     Name:    .foo
179     Flags:   [ SHF_ALLOC ]
180     Size:    0x20
181     EntSize: 0x10
182     Link:    1
183     Info:    2
184     Address: 0x123
186 ## Check we can override the sh_offset/sh_size fields of the first SHT_NULL section if requested.
188 # RUN: yaml2obj --docnum=9 %s -o %t9
189 # RUN: llvm-readelf --sections %t9 | FileCheck %s --check-prefix=OVERRIDE
191 # OVERRIDE:      Section Headers:
192 # OVERRIDE-NEXT:  [Nr] Name Type Address          Off    Size   ES Flg Lk Inf Al
193 # OVERRIDE-NEXT:  [ 0]      NULL 0000000000000000 000007 000008 00   0 0  0
195 --- !ELF
196 FileHeader:
197   Class:   ELFCLASS64
198   Data:    ELFDATA2LSB
199   Type:    ET_REL
200   Machine: EM_X86_64
201 Sections:
202   - Type:     SHT_NULL
203     Size:     0x2
204     ShOffset: 0x7
205     ShSize:   0x8