brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.9 KiB · a1ac4d9 Raw
150 lines · yaml
1## Test how we dump SHT_LLVM_CALL_GRAPH_PROFILE sections for 32 and 64-bit targets.2 3## Test we use the "Entries" property when it is possible to dump values correctly.4 5# RUN: yaml2obj -D BITS=64 -D ENCODE=LSB %s -o %t.le646# RUN: obj2yaml %t.le64 | FileCheck %s --check-prefix=BASIC7# RUN: yaml2obj -D BITS=64 -D ENCODE=MSB %s -o %t.be648# RUN: obj2yaml %t.be64 | FileCheck %s --check-prefix=BASIC9# RUN: yaml2obj -D BITS=32 -D ENCODE=LSB %s -o %t.le3210# RUN: obj2yaml %t.le32 | FileCheck %s --check-prefix=BASIC11# RUN: yaml2obj -D BITS=32 -D ENCODE=MSB %s -o %t.be3212# RUN: obj2yaml %t.be32 | FileCheck %s --check-prefix=BASIC13 14# BASIC:      Sections:15# BASIC-NEXT:   - Name: .llvm.call-graph-profile16# BASIC-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE17# BASIC-NEXT:     Link: .symtab18# BASIC-NEXT:     Entries:19# BASIC-NEXT:       - Weight: 8920# BASIC-NEXT:       - Weight: 9821# BASIC-NEXT: Symbols:22 23--- !ELF24FileHeader:25  Class: ELFCLASS[[BITS]]26  Data:  ELFDATA2[[ENCODE]]27  Type:  ET_DYN28Sections:29  - Name: .llvm.call-graph-profile30    Type: SHT_LLVM_CALL_GRAPH_PROFILE31    Entries:32      - Weight: 8933      - Weight: 9834Symbols:35  - Name: foo36  - Name: bar37 38## Check how we handle broken cases.39 40# RUN: yaml2obj --docnum=2 %s -o %t.invalid41# RUN: obj2yaml %t.invalid | FileCheck %s --check-prefix=INVALID42 43# INVALID:      --- !ELF44# INVALID-NEXT: FileHeader:45# INVALID-NEXT:   Class: ELFCLASS3246# INVALID-NEXT:   Data:  ELFDATA2MSB47# INVALID-NEXT:   Type:  ET_DYN48# INVALID-NEXT: Sections:49# INVALID-NEXT:   - Name: .empty50# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE51# INVALID-NEXT:     Link: .symtab52# INVALID-NEXT:   - Name: .multiple.8.valid53# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE54# INVALID-NEXT:     Link: .symtab55# INVALID-NEXT:     Entries:56# INVALID-NEXT:         Weight: 357# INVALID-NEXT:   - Name: .non.multiple.858# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE59# INVALID-NEXT:     Link: .symtab60# INVALID-NEXT:     Content: '000000000000000300'61# INVALID-NEXT:   - Name: .multiple.8.invalid62# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE63# INVALID-NEXT:     Link: .symtab64# INVALID-NEXT:     Content: 008899AABBCCDDEEFF65# INVALID-NEXT:   - Name: .link.to.symtable66# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE67# INVALID-NEXT:     Link: .symtab68# INVALID-NEXT:     Entries:69# INVALID-NEXT:       - Weight: 070# INVALID-NEXT:   - Name: .link.to.non.symtable.171# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE72# INVALID-NEXT:     Entries:73# INVALID-NEXT:           - Weight: 074# INVALID-NEXT:   - Name: .link.to.non.symtable.275# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE76# INVALID-NEXT:     Link: .empty77# INVALID-NEXT:     Entries:78# INVALID-NEXT:      - Weight: 079# INVALID-NEXT:   - Name:    .zero.entry.size80# INVALID-NEXT:     Type:    SHT_LLVM_CALL_GRAPH_PROFILE81# INVALID-NEXT:     Link:    .symtab82# INVALID-NEXT:     EntSize: 0x083# INVALID-NEXT:     Entries:84# INVALID-NEXT:       - Weight: 085# INVALID-NEXT:   - Name: .invalid.entry.size86# INVALID-NEXT:     Type: SHT_LLVM_CALL_GRAPH_PROFILE87# INVALID-NEXT:     Link: .symtab88# INVALID-NEXT:     EntSize: 0x189# INVALID-NEXT:     Entries:90# INVALID-NEXT:       - Weight: 091# INVALID-NEXT: Symbols:92# INVALID-NEXT:   - Name: foo93# INVALID-NEXT:   - Name: bar94 95--- !ELF96FileHeader:97  Class: ELFCLASS3298  Data:  ELFDATA2MSB99  Type:  ET_DYN100Sections:101## Case 1: Content is empty.102  - Name: .empty103    Type: SHT_LLVM_CALL_GRAPH_PROFILE104## Case 2: Check that we use the "Entries" property to dump the data when it105##         has a size that is a multiple of 16 and is valid (it is possible to match106##         symbol indexes to symbols), but fallback to dumping the whole section107##         using the "Content" property otherwise.108## TODO: Teach yaml2obj to accept 'Size' key for SHT_LLVM_CALL_GRAPH_PROFILE109##       sections and use Entries for cases below.110  - Name: .multiple.8.valid111    Type: SHT_LLVM_CALL_GRAPH_PROFILE112    Content: "0000000000000003"113  - Name: .non.multiple.8114    Type: SHT_LLVM_CALL_GRAPH_PROFILE115    Content: "000000000000000300"116  - Name: .multiple.8.invalid117    Type: SHT_LLVM_CALL_GRAPH_PROFILE118    Content: "008899AABBCCDDEEFF"119## Case 4: Check we use the "Content" property when a linked section120##         is not a symbol table.121  - Name: .link.to.symtable122    Type: SHT_LLVM_CALL_GRAPH_PROFILE123    Entries:124      - Weight: 0125  - Name: .link.to.non.symtable.1126    Type: SHT_LLVM_CALL_GRAPH_PROFILE127    Link: 0128    Entries:129      - Weight: 0130  - Name: .link.to.non.symtable.2131    Type: SHT_LLVM_CALL_GRAPH_PROFILE132    Link: 1133    Entries:134      - Weight: 0135## Case 5: Check we can dump a section that has a sh_entsize that is not a multiple of 16.136##         Check that in these cases we print the "EntSize" key.137  - Name: .zero.entry.size138    Type: SHT_LLVM_CALL_GRAPH_PROFILE139    EntSize: 0140    Entries:141      - Weight: 0142  - Name: .invalid.entry.size143    Type: SHT_LLVM_CALL_GRAPH_PROFILE144    EntSize: 1145    Entries:146      - Weight: 0147Symbols:148  - Name: foo149  - Name: bar150