brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.7 KiB · d6dae9c Raw
264 lines · yaml
1## Check how yaml2obj produces SHT_LLVM_ADDRSIG sections.2 3## Check we can describe SHT_LLVM_ADDRSIG using the "Symbols" tag. We can define4## symbols either using names or indexes.5 6# RUN: yaml2obj --docnum=1 %s -o %t17# RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s --check-prefix=SYMBOLS8 9# SYMBOLS:      Section {10# SYMBOLS:        Index: 111# SYMBOLS-NEXT:   Name: .llvm_addrsig12# SYMBOLS-NEXT:   Type: SHT_LLVM_ADDRSIG13# SYMBOLS-NEXT:   Flags [14# SYMBOLS-NEXT:   ]15# SYMBOLS-NEXT:   Address: 0x016# SYMBOLS-NEXT:   Offset: 0x4017# SYMBOLS-NEXT:   Size: 418# SYMBOLS-NEXT:   Link: 219# SYMBOLS-NEXT:   Info: 020# SYMBOLS-NEXT:   AddressAlignment: 021# SYMBOLS-NEXT:   EntrySize: 022# SYMBOLS-NEXT:   SectionData (23# SYMBOLS-NEXT:     0000: 0102010224# SYMBOLS-NEXT:   )25# SYMBOLS-NEXT: }26 27--- !ELF28FileHeader:29  Class: ELFCLASS6430  Data:  ELFDATA2LSB31  Type:  ET_DYN32Sections:33  - Name: .llvm_addrsig34    Type: SHT_LLVM_ADDRSIG35    Symbols: [ foo, bar, 1, 2 ]36Symbols:37  - Name:    foo38    Type:    STT_FUNC39    Binding: STB_GLOBAL40  - Name:    bar41    Type:    STT_FUNC42    Binding: STB_GLOBAL43 44## Check we report an error if an unknown symbol is referenced in the45## SHT_LLVM_ADDRSIG section description.46 47# RUN: not yaml2obj --docnum=2 %s 2>&1 | FileCheck %s --check-prefix=SYMBOL-UNKNOWN48 49# SYMBOL-UNKNOWN: error: unknown symbol referenced: 'foo' by YAML section '.llvm_addrsig'50# SYMBOL-UNKNOWN: error: unknown symbol referenced: 'bar' by YAML section '.llvm_addrsig'51 52--- !ELF53FileHeader:54  Class: ELFCLASS6455  Data:  ELFDATA2LSB56  Type:  ET_DYN57Sections:58  - Name: .llvm_addrsig59    Type: SHT_LLVM_ADDRSIG60    Symbols: [ foo, bar ]61 62## Check we can specify any arbitrary symbol indices.63 64# RUN: yaml2obj --docnum=3 %s -o %t365# RUN: llvm-readobj --sections --section-data %t3 | FileCheck %s --check-prefix=SYMBOL-INDEX66 67# SYMBOL-INDEX:      Type: SHT_LLVM_ADDRSIG68# SYMBOL-INDEX:      SectionData (69# SYMBOL-INDEX-NEXT:   0000: 00FF01C4 E6888901 FFFFFFFF 0F70# SYMBOL-INDEX-NEXT: )71 72--- !ELF73FileHeader:74  Class: ELFCLASS6475  Data:  ELFDATA2LSB76  Type:  ET_DYN77Sections:78  - Name: .llvm_addrsig79    Type: SHT_LLVM_ADDRSIG80## 0xFFFFFFFF is a maximum allowed index value.81    Symbols: [ 0, 255, 0x11223344, 0xFFFFFFFF ]82 83## Check that the maximum symbol index size is 32 bits.84 85# RUN: not yaml2obj --docnum=4 %s 2>&1 | FileCheck %s --check-prefix=SYMBOL-INDEX-OVERFLOW86 87# SYMBOL-INDEX-OVERFLOW: error: unknown symbol referenced: '0x1122334455' by YAML section '.llvm_addrsig'88 89--- !ELF90FileHeader:91  Class: ELFCLASS6492  Data:  ELFDATA2LSB93  Type:  ET_DYN94Sections:95  - Name: .llvm_addrsig96    Type: SHT_LLVM_ADDRSIG97    Symbols: [ 0x1122334455 ]98 99## Check we can use the "Content" tag to specify any data for SHT_LLVM_ADDRSIG sections.100 101# RUN: yaml2obj --docnum=5 %s -o %t5102# RUN: llvm-readobj --sections --section-data %t5 | FileCheck %s --check-prefix=CONTENT103 104# CONTENT:      Type: SHT_LLVM_ADDRSIG105# CONTENT:      Size:106# CONTENT-SAME: 5107# CONTENT:      SectionData (108# CONTENT-NEXT:   0000: 11223344 55109# CONTENT-NEXT: )110 111--- !ELF112FileHeader:113  Class: ELFCLASS64114  Data:  ELFDATA2LSB115  Type:  ET_DYN116Sections:117  - Name: .llvm_addrsig118    Type: SHT_LLVM_ADDRSIG119    Content: "1122334455"120 121## Check we emit an empty section if neither "Content", "Size" nor "Symbols" were set.122 123# RUN: yaml2obj --docnum=6 %s -o %t6124# RUN: llvm-readelf --sections %t6 | FileCheck %s --check-prefix=NO-TAGS125 126# NO-TAGS: [Nr] Name          Type         Address          Off    Size127# NO-TAGS: [ 1] .llvm_addrsig LLVM_ADDRSIG 0000000000000000 000040 000000128 129--- !ELF130FileHeader:131  Class: ELFCLASS64132  Data:  ELFDATA2LSB133  Type:  ET_DYN134Sections:135  - Name: .llvm_addrsig136    Type: SHT_LLVM_ADDRSIG137 138## "Content" and "Symbols" cannot be used together to describe the SHT_LLVM_ADDRSIG section.139 140# RUN: not yaml2obj --docnum=7 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-SYMBOLS141 142# CONTENT-SYMBOLS: "Symbols" cannot be used with "Content" or "Size"143 144--- !ELF145FileHeader:146  Class: ELFCLASS64147  Data:  ELFDATA2LSB148  Type:  ET_DYN149Sections:150  - Name: .llvm_addrsig151    Type: SHT_LLVM_ADDRSIG152    Content: ""153    Symbols:154 155## Check we can set an arbitrary sh_link value for SHT_LLVM_ADDRSIG sections.156 157# RUN: yaml2obj --docnum=8 %s -o %t8158# RUN: llvm-readobj --sections %t8 | FileCheck %s --check-prefix=LINK159 160# LINK:      Name: .llvm_addrsig161# LINK:      Link:162# LINK-SAME:       123{{$}}163 164--- !ELF165FileHeader:166  Class: ELFCLASS64167  Data:  ELFDATA2LSB168  Type:  ET_DYN169Sections:170  - Name: .llvm_addrsig171    Type: SHT_LLVM_ADDRSIG172    Link: 123173    Content: ""174 175## Check we can use only "Size" to create a SHT_LLVM_ADDRSIG section.176 177# RUN: yaml2obj --docnum=9 %s -o %t9178# RUN: llvm-readobj --sections --section-data %t9 | FileCheck %s --check-prefix=SIZE179 180# SIZE:      Name: .llvm_addrsig181# SIZE:      Size:182# SIZE-SAME: 17183# SIZE:      SectionData (184# SIZE-NEXT:  0000: 00000000 00000000 00000000 00000000  |185# SIZE-NEXT:  0010: 00                                   |186# SIZE-NEXT: )187 188--- !ELF189FileHeader:190  Class: ELFCLASS64191  Data:  ELFDATA2LSB192  Type:  ET_EXEC193Sections:194  - Name: .llvm_addrsig195    Type: SHT_LLVM_ADDRSIG196    Size: 0x11197 198## Check we can use "Size" and "Content" together to create a SHT_LLVM_ADDRSIG section.199 200# RUN: yaml2obj --docnum=10 %s -o %t10201# RUN: llvm-readobj --sections --section-data %t10 | FileCheck %s --check-prefix=SIZE-CONTENT202 203# SIZE-CONTENT:      Name: .llvm_addrsig_sizegr204# SIZE-CONTENT:      Size:205# SIZE-CONTENT-SAME: 5206# SIZE-CONTENT:      SectionData (207# SIZE-CONTENT-NEXT:  0000: 11223300 00 |208# SIZE-CONTENT-NEXT: )209 210# SIZE-CONTENT:      Name: .llvm_addrsig_sizeeq211# SIZE-CONTENT:      Size:212# SIZE-CONTENT-SAME: 3213# SIZE-CONTENT:      SectionData (214# SIZE-CONTENT-NEXT:  0000: 112233 |215# SIZE-CONTENT-NEXT: )216 217--- !ELF218FileHeader:219  Class: ELFCLASS64220  Data:  ELFDATA2LSB221  Type:  ET_EXEC222Sections:223  - Name: .llvm_addrsig_sizegr224    Type: SHT_LLVM_ADDRSIG225    Size: 0x5226    Content: "112233"227  - Name: .llvm_addrsig_sizeeq228    Type: SHT_LLVM_ADDRSIG229    Size: 0x3230    Content: "112233"231 232## Check that when "Size" and "Content" are used together, the size233## must be greater than or equal to the content size.234 235# RUN: not yaml2obj --docnum=11 %s 2>&1 | FileCheck %s --check-prefix=SIZE-CONTENT-ERR236 237# SIZE-CONTENT-ERR: error: Section size must be greater than or equal to the content size238 239--- !ELF240FileHeader:241  Class: ELFCLASS64242  Data:  ELFDATA2LSB243  Type:  ET_EXEC244Sections:245  - Name: .llvm_addrsig246    Type: SHT_LLVM_ADDRSIG247    Size: 0x1248    Content: "1122"249 250## Check we can't use "Size" and "Symbols" tags together.251 252# RUN: not yaml2obj --docnum=12 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-SYMBOLS253 254--- !ELF255FileHeader:256  Class: ELFCLASS64257  Data:  ELFDATA2LSB258  Type:  ET_EXEC259Sections:260  - Name: .llvm_addrsig261    Type: SHT_LLVM_ADDRSIG262    Size: 0x1263    Symbols: [ ]264