[InstCombine] Signed saturation patterns
[llvm-core.git] / test / tools / yaml2obj / elf-custom-null-section.yaml
blobe8cbb4edb630f947e5e35bda13a4e24884c79cb6
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] .strtab   STRTAB 0000000000000000 000040 000001 00 0   0  1
12 # DEFAULT-NEXT:  [ 2] .shstrtab STRTAB 0000000000000000 000041 000013 00 0   0  1
14 --- !ELF
15 FileHeader:
16   Class:   ELFCLASS64
17   Data:    ELFDATA2LSB
18   Type:    ET_REL
19   Machine: EM_X86_64
21 ## Now define a SHT_NULL section with fields all zeroed.
22 ## In this case it is equal to the section created by default.
24 # RUN: yaml2obj --docnum=2 %s -o %t2
25 # RUN: llvm-readelf --sections %t2 | FileCheck %s --check-prefix=DEFAULT
27 --- !ELF
28 FileHeader:
29   Class:   ELFCLASS64
30   Data:    ELFDATA2LSB
31   Type:    ET_REL
32   Machine: EM_X86_64
33 Sections:
34   - Type:         SHT_NULL
35     Name:         ''
36     Flags:        [ ]
37     AddressAlign: 0x0
38     Size:         0x0
39     EntSize:      0x0
40     Link:         0
41     Info:         0
42     Address:      0x0
44 ## Check we can redefine fields of the first SHT_NULL section.
46 # RUN: yaml2obj --docnum=3 %s -o %t3
47 # RUN: llvm-readelf --sections %t3 | FileCheck %s --check-prefix=REDEFINE
49 # REDEFINE:      Section Headers:
50 # REDEFINE-NEXT:  [Nr] Name Type Address          Off    Size   ES Flg Lk Inf Al
51 # REDEFINE-NEXT:  [ 0] .foo NULL 0000000000000006 000000 000002 03   A 4   5  1
53 --- !ELF
54 FileHeader:
55   Class:   ELFCLASS64
56   Data:    ELFDATA2LSB
57   Type:    ET_REL
58   Machine: EM_X86_64
59 Sections:
60   - Type:         SHT_NULL
61     Name:         .foo
62     Flags:        [ SHF_ALLOC ]
63     AddressAlign: 0x1
64     Size:         0x2
65     EntSize:      0x3
66     Link:         4
67     Info:         5
68     Address:      0x6
70 ## Check that file size does not change if we redefine the Size
71 ## of the first SHT_NULL section.
73 # RUN: yaml2obj --docnum=4 %s -o %t4
74 # RUN: ls -l %t3 | tr -s ' ' | cut -d ' ' -f 5 > %t.txt
75 # RUN: ls -l %t4 | tr -s ' ' | cut -d ' ' -f 5 >> %t.txt
76 # RUN: FileCheck %s --input-file=%t.txt --check-prefix=SIZE
78 # SIZE: [[FILESIZE:.*]]
79 # SIZE: [[FILESIZE]]
81 --- !ELF
82 FileHeader:
83   Class:   ELFCLASS64
84   Data:    ELFDATA2LSB
85   Type:    ET_REL
86   Machine: EM_X86_64
87 Sections:
88   - Type:         SHT_NULL
89     Name:         .foo
90     Flags:        [ SHF_ALLOC ]
91     AddressAlign: 0x1
92     Size:         0xFFFF
93     EntSize:      0x3
94     Link:         4
95     Info:         5
96     Address:      0x6
98 ## Check we are still able to describe other sections too.
100 # RUN: yaml2obj --docnum=5 %s -o %t5
101 # RUN: llvm-readelf --sections %t5 | FileCheck %s --check-prefix=OTHER-SECTION
103 # OTHER-SECTION:      Section Headers:
104 # OTHER-SECTION-NEXT:   [Nr] Name      Type     Address          Off    Size   ES Flg Lk Inf Al
105 # OTHER-SECTION-NEXT:   [ 0]           NULL     0000000000000000 000000 000000 00 0   0  0
106 # OTHER-SECTION-NEXT:   [ 1] foo       PROGBITS 0000000000000000 000040 000000 00 0   0  0
107 # OTHER-SECTION-NEXT:   [ 2] .strtab   STRTAB   0000000000000000 000040 000001 00 0   0  1
108 # OTHER-SECTION-NEXT:   [ 3] .shstrtab STRTAB   0000000000000000 000041 000017 00 0   0  1
110 --- !ELF
111 FileHeader:
112   Class:   ELFCLASS64
113   Data:    ELFDATA2LSB
114   Type:    ET_REL
115   Machine: EM_X86_64
116 Sections:
117   - Type:         SHT_NULL
118     Name:         ''
119     Flags:        [ ]
120     AddressAlign: 0x0
121     Size:         0x0
122     EntSize:      0x0
123     Link:         0
124   - Type: SHT_PROGBITS
125     Name: 'foo'
127 ## Check we report an error if null section sh_link field refers to an unknown section.
129 # RUN: not yaml2obj --docnum=6 %s -o %t6 2>&1 | FileCheck %s --check-prefix=CASE4
131 # CASE4: error: unknown section referenced: '.foo' by YAML section ''
133 --- !ELF
134 FileHeader:
135   Class:   ELFCLASS64
136   Data:    ELFDATA2LSB
137   Type:    ET_REL
138   Machine: EM_X86_64
139 Sections:
140   - Type: SHT_NULL
141     Link: .foo
143 ## Check that null section fields are set to zero, if they are unspecified.
145 # RUN: yaml2obj --docnum=7 %s -o %t7
146 # RUN: llvm-readelf --sections %t7 | FileCheck %s --check-prefix=DEFAULT
148 --- !ELF
149 FileHeader:
150   Class:   ELFCLASS64
151   Data:    ELFDATA2LSB
152   Type:    ET_REL
153   Machine: EM_X86_64
154 Sections:
155   - Type: SHT_NULL
157 ## Check we do not crash if we have more than one SHT_NULL section.
159 # RUN: yaml2obj --docnum=8 %s -o %t8
160 # RUN: llvm-readelf --sections %t8 | FileCheck %s --check-prefix=MULTIPLE
162 # MULTIPLE:      Section Headers:
163 # MULTIPLE-NEXT:  [Nr] Name Type Address          Off    Size   ES Flg Lk Inf Al
164 # MULTIPLE-NEXT:  [ 0]      NULL 0000000000000000 000000 000000 00 0   0  0
165 # MULTIPLE-NEXT:  [ 1] .foo NULL 0000000000000123 000040 000020 10 A   1  2   0
167 --- !ELF
168 FileHeader:
169   Class:   ELFCLASS64
170   Data:    ELFDATA2LSB
171   Type:    ET_REL
172   Machine: EM_X86_64
173 Sections:
174   - Type: SHT_NULL
175   - Type:    SHT_NULL
176     Name:    .foo
177     Flags:   [ SHF_ALLOC ]
178     Size:    0x20
179     EntSize: 0x10
180     Link:    1
181     Info:    2
182     Address: 0x123
184 ## Check we can override the sh_offset/sh_size fields of the first SHT_NULL section if requested.
186 # RUN: yaml2obj --docnum=9 %s -o %t9
187 # RUN: llvm-readelf --sections %t9 | FileCheck %s --check-prefix=OVERRIDE
189 # OVERRIDE:      Section Headers:
190 # OVERRIDE-NEXT:  [Nr] Name Type Address          Off    Size   ES Flg Lk Inf Al
191 # OVERRIDE-NEXT:  [ 0]      NULL 0000000000000000 000007 000008 00   0 0  0
193 --- !ELF
194 FileHeader:
195   Class:   ELFCLASS64
196   Data:    ELFDATA2LSB
197   Type:    ET_REL
198   Machine: EM_X86_64
199 Sections:
200   - Type:     SHT_NULL
201     Size:     0x2
202     ShOffset: 0x7
203     ShSize:   0x8