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