brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · 4f18423 Raw
208 lines · yaml
1## For implicit symbol table sections, `Size` and/or `Content` fields can also2## be specified in YAML. Here we test the behavior in different cases.3 4## When no `Size` or `Content` is specified for a symbol table section,5## yaml2obj writes the default content.6 7# RUN: yaml2obj --docnum=1 %s -o %t18# RUN: llvm-readelf %t1 -s | FileCheck %s --check-prefix=CASE19 10# CASE1:      Symbol table '.symtab' contains 2 entries:11# CASE1-NEXT:    Num:    Value          Size Type    Bind   Vis      Ndx Name12# CASE1-NEXT:      0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND13# CASE1-NEXT:      1: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND foo14# CASE1-EMPTY:15 16--- !ELF17FileHeader:18  Class: ELFCLASS6419  Data:  ELFDATA2LSB20  Type:  ET_DYN21Sections:22  - Name: .symtab23    Type: SHT_SYMTAB24Symbols:25  - Name: foo26 27## Specifying both `Size` and symbols at the same time is not allowed.28# RUN: not yaml2obj --docnum=2 %s -o %t2 2>&1 | FileCheck %s --check-prefix=CASE229# RUN: not yaml2obj --docnum=3 %s -o %t2 2>&1 | FileCheck %s --check-prefix=CASE230 31# CASE2: error: cannot specify both `Size` and `Symbols` for symbol table section '.symtab'32 33--- !ELF34FileHeader:35  Class: ELFCLASS6436  Data:  ELFDATA2LSB37  Type:  ET_DYN38Sections:39  - Name: .symtab40    Type: SHT_SYMTAB41    Size: 0x10042Symbols:43  - Name: foo44 45--- !ELF46FileHeader:47  Class: ELFCLASS6448  Data:  ELFDATA2LSB49  Type:  ET_DYN50Sections:51  - Name: .symtab52    Type: SHT_SYMTAB53    Size: 0x10054Symbols: []55 56## Specifying both `Content` and symbols at the same time is not allowed.57# RUN: not yaml2obj --docnum=4 %s -o %t3 2>&1 | FileCheck %s --check-prefix=CASE358# RUN: not yaml2obj --docnum=5 %s -o %t3 2>&1 | FileCheck %s --check-prefix=CASE359 60# CASE3: error: cannot specify both `Content` and `Symbols` for symbol table section '.symtab'61 62--- !ELF63FileHeader:64  Class: ELFCLASS6465  Data:  ELFDATA2LSB66  Type:  ET_DYN67Sections:68  - Name:    .symtab69    Type:    SHT_SYMTAB70    Content: "00"71Symbols:72  - Name: foo73 74--- !ELF75FileHeader:76  Class: ELFCLASS6477  Data:  ELFDATA2LSB78  Type:  ET_DYN79Sections:80  - Name:    .symtab81    Type:    SHT_SYMTAB82    Content: "00"83Symbols: []84 85## Check we can use just `Content` to emit custom data in the symbol table section.86# RUN: yaml2obj --docnum=6 %s -o %t487# RUN: llvm-readobj --section-data -S %t4 | FileCheck %s --check-prefix=CASE488 89# CASE4:      Name: .symtab90# CASE4-NEXT: Type: SHT_SYMTAB91# CASE4-NEXT: Flags [ (0x0)92# CASE4-NEXT: ]93# CASE4-NEXT: Address: 0x094# CASE4-NEXT: Offset: 0x4095# CASE4-NEXT: Size: 296# CASE4-NEXT: Link: 297# CASE4-NEXT: Info: 198# CASE4-NEXT: AddressAlignment: 099# CASE4-NEXT: EntrySize: 24100# CASE4-NEXT: SectionData (101# CASE4-NEXT:   0000: 0123102# CASE4-NEXT: )103 104--- !ELF105FileHeader:106  Class: ELFCLASS64107  Data:  ELFDATA2LSB108  Type:  ET_DYN109Sections:110  - Name: .symtab111    Type: SHT_SYMTAB112    Content: "0123"113 114## Check we can use just `Size` to emit custom data filled with zeroes115## in the symbol table section.116# RUN: yaml2obj --docnum=7 %s -o %t5117# RUN: llvm-readobj --section-data -S %t5 | FileCheck %s --check-prefix=CASE5118 119# CASE5:      Name: .symtab (19)120# CASE5-NEXT: Type: SHT_SYMTAB (0x2)121# CASE5-NEXT: Flags [ (0x0)122# CASE5-NEXT: ]123# CASE5-NEXT: Address: 0x0124# CASE5-NEXT: Offset: 0x40125# CASE5-NEXT: Size: 5126# CASE5-NEXT: Link: 2127# CASE5-NEXT: Info: 1128# CASE5-NEXT: AddressAlignment: 0129# CASE5-NEXT: EntrySize: 24130# CASE5-NEXT: SectionData (131# CASE5-NEXT:   0000: 00000000 00132# CASE5-NEXT: )133 134--- !ELF135FileHeader:136  Class: ELFCLASS64137  Data:  ELFDATA2LSB138  Type:  ET_DYN139Sections:140  - Name: .symtab141    Type: SHT_SYMTAB142    Size: 5143 144## Check we can specify both `Size` and `Content` when size is greater145## than content size. In this case zeroes are added as padding146## after the specified content.147 148# RUN: yaml2obj --docnum=8 %s -o %t6149# RUN: llvm-readobj %t6 --section-data -S | FileCheck %s --check-prefix=CASE6150 151# CASE6:      Name: .symtab152# CASE6-NEXT: Type: SHT_SYMTAB153# CASE6-NEXT: Flags [154# CASE6-NEXT: ]155# CASE6-NEXT: Address: 0x0156# CASE6-NEXT: Offset: 0x40157# CASE6-NEXT: Size: 4158# CASE6-NEXT: Link: 2159# CASE6-NEXT: Info: 1160# CASE6-NEXT: AddressAlignment: 0161# CASE6-NEXT: EntrySize: 24162# CASE6-NEXT: SectionData (163# CASE6-NEXT:   0000: 01230000164# CASE6-NEXT: )165 166--- !ELF167FileHeader:168  Class: ELFCLASS64169  Data:  ELFDATA2LSB170  Type:  ET_DYN171Sections:172  - Name: .symtab173    Type: SHT_SYMTAB174    Content: "0123"175    Size: 4176 177## Check we can specify both `Size` and `Content` when size is178## equal to content size.179 180# RUN: yaml2obj --docnum=9 %s -o %t7181# RUN: llvm-readobj --section-data -S %t7 | FileCheck %s --check-prefix=CASE7182 183# CASE7:       Name: .symtab184# CASE7-NEXT:  Type: SHT_SYMTAB185# CASE7-NEXT:  Flags [186# CASE7-NEXT:  ]187# CASE7-NEXT:  Address: 0x0188# CASE7-NEXT:  Offset: 0x40189# CASE7-NEXT:  Size: 2190# CASE7-NEXT:  Link: 2191# CASE7-NEXT:  Info: 1192# CASE7-NEXT:  AddressAlignment: 0193# CASE7-NEXT:  EntrySize: 24194# CASE7-NEXT:  SectionData (195# CASE7-NEXT:    0000: 0123196# CASE7-NEXT:  )197 198--- !ELF199FileHeader:200  Class: ELFCLASS64201  Data:  ELFDATA2LSB202  Type:  ET_DYN203Sections:204  - Name: .symtab205    Type: SHT_SYMTAB206    Content: "0123"207    Size: 2208