brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 8de229c Raw
230 lines · yaml
1## For implicit dynamic symbol table sections, `Size` and/or `Content`2## fields can also be specified in YAML. Here we test the behavior in3## different cases.4 5## When no `Size` or `Content` is specified for a dynamic symbol table section,6## yaml2obj writes the default content.7 8# RUN: yaml2obj --docnum=1 %s -o %t19# RUN: llvm-readelf %t1 --dyn-symbols | FileCheck %s --check-prefix=CASE110 11# CASE1:      Symbol table '.dynsym' contains 2 entries:12# CASE1-NEXT:    Num:    Value          Size Type    Bind   Vis      Ndx Name13# CASE1-NEXT:      0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND14# CASE1-NEXT:      1: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND foo15# CASE1-EMPTY:16 17--- !ELF18FileHeader:19  Class: ELFCLASS6420  Data:  ELFDATA2LSB21  Type:  ET_DYN22Sections:23  - Name: .dynsym24    Type: SHT_DYNSYM25DynamicSymbols:26  - Name:    foo27    Binding: STB_GLOBAL28 29## Specifying both `Size` and symbols at the same time is not allowed for .dynsym.30 31# RUN: not yaml2obj --docnum=2 %s 2>&1 | FileCheck %s --implicit-check-not=error --check-prefix=CASE232# RUN: not yaml2obj --docnum=3 %s 2>&1 | FileCheck %s --implicit-check-not=error --check-prefix=CASE233 34# CASE2: yaml2obj: error: cannot specify both `Size` and `DynamicSymbols` for symbol table section '.dynsym'35 36--- !ELF37FileHeader:38  Class: ELFCLASS6439  Data:  ELFDATA2LSB40  Type:  ET_DYN41Sections:42  - Name: .dynsym43    Type: SHT_DYNSYM44    Size: 0x10045  - Name: .dynsym246    Type: SHT_DYNSYM47    Size: 0x10048DynamicSymbols:49  - Name:    foo50    Binding: STB_GLOBAL51 52--- !ELF53FileHeader:54  Class: ELFCLASS6455  Data:  ELFDATA2LSB56  Type:  ET_DYN57Sections:58  - Name: .dynsym59    Type: SHT_DYNSYM60    Size: 0x10061  - Name: .dynsym262    Type: SHT_DYNSYM63    Size: 0x10064DynamicSymbols: []65 66## Specifying both `Content` and symbols at the same time is not allowed for .dynsym.67 68# RUN: not yaml2obj --docnum=4 %s 2>&1 | FileCheck %s --implicit-check-not=error --check-prefix=CASE369# RUN: not yaml2obj --docnum=5 %s 2>&1 | FileCheck %s --implicit-check-not=error --check-prefix=CASE370 71# CASE3: yaml2obj: error: cannot specify both `Content` and `DynamicSymbols` for symbol table section '.dynsym'72 73--- !ELF74FileHeader:75  Class: ELFCLASS6476  Data:  ELFDATA2LSB77  Type:  ET_DYN78Sections:79  - Name:    .dynsym80    Type:    SHT_DYNSYM81    Content: "00"82  - Name:    .dynsym283    Type:    SHT_DYNSYM84    Content: "00"85DynamicSymbols:86  - Name:    foo87    Binding: STB_GLOBAL88 89--- !ELF90FileHeader:91  Class: ELFCLASS6492  Data:  ELFDATA2LSB93  Type:  ET_DYN94Sections:95  - Name:    .dynsym96    Type:    SHT_DYNSYM97    Content: "00"98  - Name:    .dynsym299    Type:    SHT_DYNSYM100    Content: "00"101DynamicSymbols: []102 103## Check we can use just `Content` to emit custom data in the symbol table section.104# RUN: yaml2obj --docnum=6 %s -o %t4105# RUN: llvm-readobj --section-data -S %t4 | FileCheck %s --check-prefix=CASE4106 107# CASE4:      Name: .dynsym108# CASE4-NEXT: Type: SHT_DYNSYM109# CASE4-NEXT: Flags [110# CASE4-NEXT:   SHF_ALLOC111# CASE4-NEXT: ]112# CASE4-NEXT: Address: 0x0113# CASE4-NEXT: Offset: 0x40114# CASE4-NEXT: Size: 2115# CASE4-NEXT: Link: 0116# CASE4-NEXT: Info: 1117# CASE4-NEXT: AddressAlignment: 0118# CASE4-NEXT: EntrySize: 24119# CASE4-NEXT: SectionData (120# CASE4-NEXT:   0000: 0123121# CASE4-NEXT: )122 123--- !ELF124FileHeader:125  Class: ELFCLASS64126  Data:  ELFDATA2LSB127  Type:  ET_DYN128Sections:129  - Name: .dynsym130    Type: SHT_DYNSYM131    Content: "0123"132 133## Check we can use just `Size` to emit custom data filled with zeroes134## in the symbol table section.135# RUN: yaml2obj --docnum=7 %s -o %t5136# RUN: llvm-readobj --section-data -S %t5 | FileCheck %s --check-prefix=CASE5137 138# CASE5:      Name: .dynsym139# CASE5-NEXT: Type: SHT_DYNSYM140# CASE5-NEXT: Flags [141# CASE5-NEXT:   SHF_ALLOC142# CASE5-NEXT: ]143# CASE5-NEXT: Address: 0x0144# CASE5-NEXT: Offset: 0x40145# CASE5-NEXT: Size: 5146# CASE5-NEXT: Link: 0147# CASE5-NEXT: Info: 1148# CASE5-NEXT: AddressAlignment: 0149# CASE5-NEXT: EntrySize: 24150# CASE5-NEXT: SectionData (151# CASE5-NEXT:   0000: 00000000 00152# CASE5-NEXT: )153 154--- !ELF155FileHeader:156  Class: ELFCLASS64157  Data:  ELFDATA2LSB158  Type:  ET_DYN159Sections:160  - Name: .dynsym161    Type: SHT_DYNSYM162    Size: 5163 164## Check we can specify both `Size` and `Content` when size is greater165## than content size. In this case zeroes are added as padding166## after after the specified content.167 168# RUN: yaml2obj --docnum=8 %s -o %t6169# RUN: llvm-readobj %t6 --section-data -S | FileCheck %s --check-prefix=CASE6170 171# CASE6:      Name: .dynsym172# CASE6-NEXT: Type: SHT_DYNSYM173# CASE6-NEXT: Flags [174# CASE6-NEXT:   SHF_ALLOC175# CASE6-NEXT: ]176# CASE6-NEXT: Address: 0x0177# CASE6-NEXT: Offset: 0x40178# CASE6-NEXT: Size: 4179# CASE6-NEXT: Link: 0180# CASE6-NEXT: Info: 1181# CASE6-NEXT: AddressAlignment: 0182# CASE6-NEXT: EntrySize: 24183# CASE6-NEXT: SectionData (184# CASE6-NEXT:   0000: 01230000185# CASE6-NEXT: )186 187--- !ELF188FileHeader:189  Class: ELFCLASS64190  Data:  ELFDATA2LSB191  Type:  ET_DYN192Sections:193  - Name: .dynsym194    Type: SHT_DYNSYM195    Content: "0123"196    Size: 4197 198## Check we can specify both `Size` and `Content` when size is199## equal to content size.200 201# RUN: yaml2obj --docnum=9 %s -o %t7202# RUN: llvm-readobj --section-data -S %t7 | FileCheck %s --check-prefix=CASE7203 204# CASE7:       Name: .dynsym205# CASE7-NEXT:  Type: SHT_DYNSYM206# CASE7-NEXT:  Flags [207# CASE7-NEXT:    SHF_ALLOC208# CASE7-NEXT:  ]209# CASE7-NEXT:  Address: 0x0210# CASE7-NEXT:  Offset: 0x40211# CASE7-NEXT:  Size: 2212# CASE7-NEXT:  Link: 0213# CASE7-NEXT:  Info: 1214# CASE7-NEXT:  AddressAlignment: 0215# CASE7-NEXT:  EntrySize: 24216# CASE7-NEXT:  SectionData (217# CASE7-NEXT:    0000: 0123218# CASE7-NEXT:  )219 220--- !ELF221FileHeader:222  Class: ELFCLASS64223  Data:  ELFDATA2LSB224  Type:  ET_DYN225Sections:226  - Name: .dynsym227    Type: SHT_DYNSYM228    Content: "0123"229    Size: 2230