brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.9 KiB · 0fc8f81 Raw
291 lines · yaml
1## Check how yaml2obj produces .stack_sizes sections.2 3## Test the following cases when the .stack_sizes Content field is specified:4## 1) We can produce a .stack_sizes section from a description with5##    a valid section content.6## 2) We can produce an incorrect .stack_sizes section from a description with7##    a broken (truncated) section content.8## 3) We can produce an empty .stack_sizes section from a description with9##    empty section content.10 11# RUN: yaml2obj --docnum=1 %s -o %t112# RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s13 14## Case 1: valid content.15# CHECK:      Section {16# CHECK:        Index: 117# CHECK-NEXT:   Name: .stack_sizes (1)18# CHECK-NEXT:   Type: SHT_PROGBITS (0x1)19# CHECK-NEXT:   Flags [ (0x0)20# CHECK-NEXT:   ]21# CHECK-NEXT:   Address: 0x022# CHECK-NEXT:   Offset: 0x4023# CHECK-NEXT:   Size: 924# CHECK-NEXT:   Link: 025# CHECK-NEXT:   Info: 026# CHECK-NEXT:   AddressAlignment: 027# CHECK-NEXT:   EntrySize: 028# CHECK-NEXT:   SectionData (29# CHECK-NEXT:     0000: 10000000 00000000 2030# CHECK-NEXT:   )31# CHECK-NEXT: }32 33## Case 2: truncated content.34# CHECK:      Name: .stack_sizes35# CHECK:      Size:36# CHECK-SAME: 837# CHECK:      SectionData (38# CHECK-NEXT:  0000: 10000000 0000000039 40## Case 3: empty content.41# CHECK:      Name: .stack_sizes42# CHECK:      Size:43# CHECK-SAME: 044 45--- !ELF46FileHeader:47  Class: ELFCLASS6448  Data:  ELFDATA2LSB49  Type:  ET_EXEC50Sections:51## Valid.52  - Name:    '.stack_sizes (1)'53    Type:    SHT_PROGBITS54    Content: "100000000000000020"55## Truncated.56  - Name:    '.stack_sizes (2)'57    Type:    SHT_PROGBITS58    Content: "1000000000000000"59## Empty.60  - Name:    '.stack_sizes (3)'61    Type:    SHT_PROGBITS62    Content: ""63 64## Check we can describe .stack_sizes section using <address, size> pairs.65 66# RUN: yaml2obj --docnum=2 -D BITS=64 -D ENCODE=LSB %s -o %t2.le6467# RUN: llvm-readobj --sections --section-data %t2.le64 | FileCheck %s --check-prefix=ENTRIES-LE64-BOTH68# RUN: yaml2obj --docnum=2 -D BITS=64 -D ENCODE=MSB %s -o %t2.be6469# RUN: llvm-readobj --sections --section-data %t2.be64 | FileCheck %s --check-prefix=ENTRIES-BE64-BOTH70# RUN: yaml2obj --docnum=2 -D BITS=32 -D ENCODE=LSB %s -o %t2.le3271# RUN: llvm-readobj --sections --section-data %t2.le32 | FileCheck %s --check-prefix=ENTRIES-LE32-BOTH72# RUN: yaml2obj --docnum=2 -D BITS=32 -D ENCODE=MSB %s -o %t2.be3273# RUN: llvm-readobj --sections --section-data %t2.be32 | FileCheck %s --check-prefix=ENTRIES-BE32-BOTH74 75# ENTRIES-LE64-BOTH:      Name: .stack_sizes76# ENTRIES-LE64-BOTH:      SectionData (77# ENTRIES-LE64-BOTH-NEXT:  0000: 10000000 00000000 20300000 00000000 |78# ENTRIES-LE64-BOTH-NEXT:  0010: 0040                                |79 80# ENTRIES-BE64-BOTH:      Name: .stack_sizes81# ENTRIES-BE64-BOTH:      SectionData (82# ENTRIES-BE64-BOTH-NEXT:  0000: 00000000 00000010 20000000 00000000 |83# ENTRIES-BE64-BOTH-NEXT:  0010: 304084 85# ENTRIES-LE32-BOTH:      Name: .stack_sizes86# ENTRIES-LE32-BOTH:      SectionData (87# ENTRIES-LE32-BOTH-NEXT:  0000: 10000000 20300000 0040 |88 89# ENTRIES-BE32-BOTH:      Name: .stack_sizes90# ENTRIES-BE32-BOTH:      SectionData (91# ENTRIES-BE32-BOTH-NEXT:  0000: 00000010 20000000 3040 |92 93--- !ELF94FileHeader:95  Class: ELFCLASS[[BITS]]96  Data:  ELFDATA2[[ENCODE]]97  Type:  ET_EXEC98Sections:99  - Name:    .stack_sizes100    Type:    SHT_PROGBITS101    Entries:102      - Address: 0x10103        Size:    0x20104      - Address: 0x30105        Size:    0x40106 107## Check we can omit the "Address" tag. In this case the address will be zero.108 109# RUN: yaml2obj --docnum=3 %s -o %t3110# RUN: llvm-readobj --sections --section-data %t3 | FileCheck %s --check-prefix=ENTRIES-NOADDR111 112# ENTRIES-NOADDR:      Name: .stack_sizes113# ENTRIES-NOADDR:      SectionData (114# ENTRIES-NOADDR-NEXT:  0000: 00000000 00000000 10000000 00000000 |115# ENTRIES-NOADDR-NEXT:  0010: 0020                                |116 117--- !ELF118FileHeader:119  Class: ELFCLASS64120  Data:  ELFDATA2LSB121  Type:  ET_EXEC122Sections:123  - Name:    .stack_sizes124    Type:    SHT_PROGBITS125    Entries:126       - Size: 0x10127       - Size: 0x20128 129## Check that "Size" tag is mandatory when we describe .stack_sizes using "Entries".130 131# RUN: not yaml2obj --docnum=4 %s 2>&1 | FileCheck %s --check-prefix=ENTRIES-NOSIZE132 133# ENTRIES-NOSIZE: error: missing required key 'Size'134 135--- !ELF136FileHeader:137  Class: ELFCLASS64138  Data:  ELFDATA2LSB139  Type:  ET_EXEC140Sections:141  - Name:    .stack_sizes142    Type:    SHT_PROGBITS143    Entries:144       - Address: 0x10145 146## Check we can't use both "Content" and "Entries" tags at the same time.147 148# RUN: not yaml2obj --docnum=5 %s 2>&1 | FileCheck %s --check-prefix=ENTRIES-AND-CONTENT149 150# ENTRIES-AND-CONTENT: error: "Entries" cannot be used with "Content" or "Size"151 152--- !ELF153FileHeader:154  Class: ELFCLASS64155  Data:  ELFDATA2LSB156  Type:  ET_EXEC157Sections:158  - Name:    .stack_sizes159    Type:    SHT_PROGBITS160    Content: "00"161    Entries:162      - Address: 0x10163        Size:    0x20164 165## Check we emit an empty section if neither "Content", "Size" nor "Entries" were set.166 167# RUN: yaml2obj --docnum=6 %s -o %t6168# RUN: llvm-readelf --sections %t6 | FileCheck %s --check-prefix=NO-TAGS169 170# NO-TAGS: [Nr] Name         Type     Address          Off    Size171# NO-TAGS: [ 1] .stack_sizes PROGBITS 0000000000000000 000040 000000172 173--- !ELF174FileHeader:175  Class: ELFCLASS64176  Data:  ELFDATA2LSB177  Type:  ET_EXEC178Sections:179  - Name: .stack_sizes180    Type: SHT_PROGBITS181 182## Check we can't use both "Size" and "Entries" tags at the same time.183 184# RUN: not yaml2obj --docnum=7 %s 2>&1 | FileCheck %s --check-prefix=ENTRIES-AND-SIZE185 186# ENTRIES-AND-SIZE: error: "Entries" cannot be used with "Content" or "Size"187 188--- !ELF189FileHeader:190  Class: ELFCLASS64191  Data:  ELFDATA2LSB192  Type:  ET_EXEC193Sections:194  - Name: .stack_sizes195    Type: SHT_PROGBITS196    Size: 0x1197    Entries:198      - Address: 0x10199        Size:    0x20200 201## Check we can use only "Size" to create .stack_sizes section.202 203# RUN: yaml2obj --docnum=8 %s -o %t8204# RUN: llvm-readobj --sections --section-data %t8 | FileCheck %s --check-prefix=SIZE205 206# SIZE:      Name: .stack_sizes207# SIZE:      Size:208# SIZE-SAME: 17209# SIZE:      SectionData (210# SIZE-NEXT:  0000: 00000000 00000000 00000000 00000000  |211# SIZE-NEXT:  0010: 00                                   |212# SIZE-NEXT: )213 214--- !ELF215FileHeader:216  Class: ELFCLASS64217  Data:  ELFDATA2LSB218  Type:  ET_EXEC219Sections:220  - Name: .stack_sizes221    Type: SHT_PROGBITS222    Size: 0x11223 224## Check we can use "Size" and "Content" together to create .stack_sizes section.225 226# RUN: yaml2obj --docnum=9 %s -o %t9227# RUN: llvm-readobj --sections --section-data %t9 | FileCheck %s --check-prefix=SIZE-CONTENT228 229# SIZE-CONTENT:      Name: .stack_sizes230# SIZE-CONTENT:      Size:231# SIZE-CONTENT-SAME: 5232# SIZE-CONTENT:      SectionData (233# SIZE-CONTENT-NEXT:  0000: 11223300 00 |234# SIZE-CONTENT-NEXT: )235 236--- !ELF237FileHeader:238  Class: ELFCLASS64239  Data:  ELFDATA2LSB240  Type:  ET_EXEC241Sections:242  - Name: .stack_sizes243    Type: SHT_PROGBITS244    Size: 0x5245    Content: "112233"246 247# RUN: not yaml2obj --docnum=10 %s 2>&1 | FileCheck %s --check-prefix=SIZE-CONTENT-ERR248 249# SIZE-CONTENT-ERR: error: Section size must be greater than or equal to the content size250 251--- !ELF252FileHeader:253  Class: ELFCLASS64254  Data:  ELFDATA2LSB255  Type:  ET_EXEC256Sections:257  - Name: .stack_sizes258    Type: SHT_PROGBITS259    Size: 0x1260    Content: "1122"261 262## Check we can describe multiple .stack_sizes sections using unique suffixes.263 264# RUN: yaml2obj --docnum=11 %s -o %t11265# RUN: llvm-readobj --sections --section-data %t11 | FileCheck %s --check-prefix=UNIQUE266 267# UNIQUE:      Name: .stack_sizes268# UNIQUE:      SectionData (269# UNIQUE-NEXT:   0000: 10000000 00000000 20 |270 271# UNIQUE:      Name: .stack_sizes272# UNIQUE:      SectionData (273# UNIQUE-NEXT:   0000: 30000000 00000000 40 |274 275--- !ELF276FileHeader:277  Class: ELFCLASS64278  Data:  ELFDATA2LSB279  Type:  ET_EXEC280Sections:281  - Name:    '.stack_sizes (1)'282    Type:    SHT_PROGBITS283    Entries:284      - Address: 0x10285        Size:    0x20286  - Name:    '.stack_sizes (2)'287    Type:    SHT_PROGBITS288    Entries:289      - Address: 0x30290        Size:    0x40291