[InstCombine] Signed saturation patterns
[llvm-core.git] / test / tools / yaml2obj / dynsymtab-implicit-sections-size-content.yaml
blobbd3d162953492240376bd00f4e8653d86d143205
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   Machine: EM_X86_64
23 Sections:
24   - Name: .dynsym
25     Type: SHT_DYNSYM
26 DynamicSymbols:
27   - Name:    foo
28     Binding: STB_GLOBAL
30 ## Specifying both `Size` and symbols at the same time is not allowed for .dynsym.
32 # RUN: not yaml2obj --docnum=2 %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   Machine: EM_X86_64
42 Sections:
43   - Name: .dynsym
44     Type: SHT_DYNSYM
45     Size: 0x100
46   - Name: .dynsym2
47     Type: SHT_DYNSYM
48     Size: 0x100
49 DynamicSymbols:
50   - Name:    foo
51     Binding: STB_GLOBAL
53 ## Specifying both `Content` and symbols at the same time is not allowed for .dynsym.
55 # RUN: not yaml2obj --docnum=3 %s 2>&1 | FileCheck %s --implicit-check-not=error --check-prefix=CASE3
57 # CASE3: yaml2obj: error: cannot specify both `Content` and `DynamicSymbols` for symbol table section '.dynsym'
59 --- !ELF
60 FileHeader:
61   Class:   ELFCLASS64
62   Data:    ELFDATA2LSB
63   Type:    ET_DYN
64   Machine: EM_X86_64
65 Sections:
66   - Name: .dynsym
67     Type: SHT_DYNSYM
68     Content: "00"
69   - Name: .dynsym2
70     Type: SHT_DYNSYM
71     Content: "00"
72 DynamicSymbols:
73   - Name:    foo
74     Binding: STB_GLOBAL
76 ## Check we can use just `Content` to emit custom data in the symbol table section.
77 # RUN: yaml2obj --docnum=4 %s -o %t4
78 # RUN: llvm-readobj --section-data -S %t4 | FileCheck %s --check-prefix=CASE4
80 # CASE4:      Name: .dynsym
81 # CASE4-NEXT: Type: SHT_DYNSYM
82 # CASE4-NEXT: Flags [
83 # CASE4-NEXT:   SHF_ALLOC
84 # CASE4-NEXT: ]
85 # CASE4-NEXT: Address: 0x0
86 # CASE4-NEXT: Offset: 0x40
87 # CASE4-NEXT: Size: 2
88 # CASE4-NEXT: Link: 0
89 # CASE4-NEXT: Info: 1
90 # CASE4-NEXT: AddressAlignment: 0
91 # CASE4-NEXT: EntrySize: 24
92 # CASE4-NEXT: SectionData (
93 # CASE4-NEXT:   0000: 0123
94 # CASE4-NEXT: )
96 --- !ELF
97 FileHeader:
98   Class:   ELFCLASS64
99   Data:    ELFDATA2LSB
100   Type:    ET_DYN
101   Machine: EM_X86_64
102 Sections:
103   - Name: .dynsym
104     Type: SHT_DYNSYM
105     Content: "0123"
107 ## Check we can use just `Size` to emit custom data filled with zeroes
108 ## in the symbol table section.
109 # RUN: yaml2obj --docnum=5 %s -o %t5
110 # RUN: llvm-readobj --section-data -S %t5 | FileCheck %s --check-prefix=CASE5
112 # CASE5:      Name: .dynsym
113 # CASE5-NEXT: Type: SHT_DYNSYM
114 # CASE5-NEXT: Flags [
115 # CASE5-NEXT:   SHF_ALLOC
116 # CASE5-NEXT: ]
117 # CASE5-NEXT: Address: 0x0
118 # CASE5-NEXT: Offset: 0x40
119 # CASE5-NEXT: Size: 5
120 # CASE5-NEXT: Link: 0
121 # CASE5-NEXT: Info: 1
122 # CASE5-NEXT: AddressAlignment: 0
123 # CASE5-NEXT: EntrySize: 24
124 # CASE5-NEXT: SectionData (
125 # CASE5-NEXT:   0000: 00000000 00
126 # CASE5-NEXT: )
128 --- !ELF
129 FileHeader:
130   Class:   ELFCLASS64
131   Data:    ELFDATA2LSB
132   Type:    ET_DYN
133   Machine: EM_X86_64
134 Sections:
135   - Name: .dynsym
136     Type: SHT_DYNSYM
137     Size: 5
139 ## Check we can specify both `Size` and `Content` when size is greater
140 ## than content size. In this case zeroes are added as padding
141 ## after after the specified content.
143 # RUN: yaml2obj --docnum=6 %s -o %t6
144 # RUN: llvm-readobj %t6 --section-data -S | FileCheck %s --check-prefix=CASE6
146 # CASE6:      Name: .dynsym
147 # CASE6-NEXT: Type: SHT_DYNSYM
148 # CASE6-NEXT: Flags [
149 # CASE6-NEXT:   SHF_ALLOC
150 # CASE6-NEXT: ]
151 # CASE6-NEXT: Address: 0x0
152 # CASE6-NEXT: Offset: 0x40
153 # CASE6-NEXT: Size: 4
154 # CASE6-NEXT: Link: 0
155 # CASE6-NEXT: Info: 1
156 # CASE6-NEXT: AddressAlignment: 0
157 # CASE6-NEXT: EntrySize: 24
158 # CASE6-NEXT: SectionData (
159 # CASE6-NEXT:   0000: 01230000
160 # CASE6-NEXT: )
162 --- !ELF
163 FileHeader:
164   Class:   ELFCLASS64
165   Data:    ELFDATA2LSB
166   Type:    ET_DYN
167   Machine: EM_X86_64
168 Sections:
169   - Name: .dynsym
170     Type: SHT_DYNSYM
171     Content: "0123"
172     Size: 4
174 ## Check we can specify both `Size` and `Content` when size is
175 ## equal to content size.
177 # RUN: yaml2obj --docnum=7 %s -o %t7
178 # RUN: llvm-readobj --section-data -S %t7 | FileCheck %s --check-prefix=CASE7
180 # CASE7:       Name: .dynsym
181 # CASE7-NEXT:  Type: SHT_DYNSYM
182 # CASE7-NEXT:  Flags [
183 # CASE7-NEXT:    SHF_ALLOC
184 # CASE7-NEXT:  ]
185 # CASE7-NEXT:  Address: 0x0
186 # CASE7-NEXT:  Offset: 0x40
187 # CASE7-NEXT:  Size: 2
188 # CASE7-NEXT:  Link: 0
189 # CASE7-NEXT:  Info: 1
190 # CASE7-NEXT:  AddressAlignment: 0
191 # CASE7-NEXT:  EntrySize: 24
192 # CASE7-NEXT:  SectionData (
193 # CASE7-NEXT:    0000: 0123
194 # CASE7-NEXT:  )
196 --- !ELF
197 FileHeader:
198   Class:   ELFCLASS64
199   Data:    ELFDATA2LSB
200   Type:    ET_DYN
201   Machine: EM_X86_64
202 Sections:
203   - Name: .dynsym
204     Type: SHT_DYNSYM
205     Content: "0123"
206     Size: 2