brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.2 KiB · 7a22efe Raw
274 lines · yaml
1## Check how obj2yaml produces YAML .llvm_bb_addr_map descriptions.2 3## Check that obj2yaml uses the "Entries" tag to describe an .llvm_bb_addr_map section.4 5# RUN: yaml2obj --docnum=1 %s -o %t16# RUN: obj2yaml %t1 | FileCheck %s --check-prefix=VALID7 8# VALID:      --- !ELF9# VALID-NEXT: FileHeader:10# VALID-NEXT:   Class: ELFCLASS6411# VALID-NEXT:   Data:  ELFDATA2LSB12# VALID-NEXT:   Type:  ET_EXEC13# VALID-NEXT: Sections:14# VALID-NEXT:   - Name: .llvm_bb_addr_map15# VALID-NEXT:     Type: SHT_LLVM_BB_ADDR_MAP16# VALID-NEXT:     Entries:17# VALID-NEXT:       - Version: 318# VALID-NEXT:         BBRanges:19## The 'BaseAddress' field is omitted when it's zero.20# VALID-NEXT:           - BBEntries:21# VALID-NEXT:             - ID:            022# VALID-NEXT:               AddressOffset: 0x123# VALID-NEXT:               Size:          0x224# VALID-NEXT:               Metadata:      0x325# VALID-NEXT:             - ID:            226# VALID-NEXT:               AddressOffset: 0x427# VALID-NEXT:               Size:          0x528# VALID-NEXT:               Metadata:      0x629# VALID-NEXT:             - ID:            430# VALID-NEXT:               AddressOffset: 0xFFFFFFFFFFFFFFF731# VALID-NEXT:               Size:          0xFFFFFFFFFFFFFFF832# VALID-NEXT:               Metadata:      0xFFFFFFFFFFFFFFF933# VALID-NEXT:       - Version: 334# VALID-NEXT:         Feature: 0x2835# VALID-NEXT:         BBRanges:36# VALID-NEXT:           - BaseAddress: 0xFFFFFFFFFFFFFF2037# VALID-NEXT:             BBEntries:38# VALID-NEXT:               - ID:              639# VALID-NEXT:                 AddressOffset:   0xA40# VALID-NEXT:                 Size:            0xB41# VALID-NEXT:                 Metadata:        0xC42# VALID-NEXT:                 CallsiteEndOffsets: [ 0x1, 0x2 ]43 44--- !ELF45FileHeader:46  Class: ELFCLASS6447  Data:  ELFDATA2LSB48  Type:  ET_EXEC49Sections:50  - Name:   .llvm_bb_addr_map51    Type:   SHT_LLVM_BB_ADDR_MAP52    ShSize: [[SIZE=<none>]]53    Entries:54      - Version: 355        Feature: 0x056        BBRanges:57          - BaseAddress: 0x058            BBEntries:59              - ID:            060                AddressOffset: 0x161                Size:          0x262                Metadata:      0x363              - ID:            264                AddressOffset: 0x465                Size:          0x566                Metadata:      0x667              - ID:            468                AddressOffset: 0xFFFFFFFFFFFFFFF769                Size:          0xFFFFFFFFFFFFFFF870                Metadata:      0xFFFFFFFFFFFFFFF971      - Version:   372        Feature:   0x2873        NumBBRanges: [[NUMBBRANGES=<none>]]74        BBRanges:75          - BaseAddress:   0xFFFFFFFFFFFFFF2076            NumBlocks: [[NUMBLOCKS=<none>]]77            BBEntries:78             - ID:              679               AddressOffset:   0xA80               Size:            0xB81               Metadata:        0xC82               CallsiteEndOffsets: [ 0x1, 0x2 ]83 84## Check obj2yaml can dump empty .llvm_bb_addr_map sections.85 86# RUN: yaml2obj --docnum=2 %s -o %t287# RUN: obj2yaml %t2 | FileCheck %s --check-prefix=EMPTY88 89# EMPTY:      --- !ELF90# EMPTY-NEXT: FileHeader:91# EMPTY-NEXT:   Class: ELFCLASS6492# EMPTY-NEXT:   Data:  ELFDATA2LSB93# EMPTY-NEXT:   Type:  ET_EXEC94# EMPTY-NEXT: Sections:95# EMPTY-NEXT:   - Name:    .llvm_bb_addr_map96# EMPTY-NEXT:     Type:    SHT_LLVM_BB_ADDR_MAP97# EMPTY-NOT:      Content:98 99--- !ELF100FileHeader:101  Class: ELFCLASS64102  Data:  ELFDATA2LSB103  Type:  ET_EXEC104Sections:105  - Name:    .llvm_bb_addr_map106    Type:    SHT_LLVM_BB_ADDR_MAP107    Content: ""108 109## Check obj2yaml can dump multiple .llvm_bb_addr_map sections.110 111# RUN: yaml2obj --docnum=3 %s -o %t3112# RUN: obj2yaml %t3 | FileCheck %s --check-prefix=MULTI113 114# MULTI:      --- !ELF115# MULTI-NEXT: FileHeader:116# MULTI-NEXT:   Class: ELFCLASS64117# MULTI-NEXT:   Data:  ELFDATA2LSB118# MULTI-NEXT:   Type:  ET_EXEC119# MULTI-NEXT: Sections:120# MULTI-NEXT:   - Name: .llvm_bb_addr_map121# MULTI-NEXT:     Type: SHT_LLVM_BB_ADDR_MAP122# MULTI-NEXT:     Entries:123## Fields 'BaseAddress' and 'Feature' are omitted when they are zero.124# MULTI-NEXT:       - Version: 0125# MULTI-NEXT:         BBRanges:126# MULTI-NEXT:           - BBEntries:127# MULTI-NEXT:              - ID:            0128# MULTI-NEXT:                AddressOffset: 0x1129# MULTI-NEXT:                Size:          0x2130# MULTI-NEXT:                Metadata:      0x3131# MULTI-NEXT:   - Name: '.llvm_bb_addr_map (1)'132# MULTI-NEXT:     Type: SHT_LLVM_BB_ADDR_MAP133# MULTI-NEXT:     Entries:134# MULTI-NEXT:       - Version:   0135# MULTI-NEXT:         BBRanges:136# MULTI-NEXT:           - BaseAddress:   0x20137# MULTI-NEXT:             BBEntries: []138 139--- !ELF140FileHeader:141  Class: ELFCLASS64142  Data:  ELFDATA2LSB143  Type:  ET_EXEC144Sections:145  - Name: .llvm_bb_addr_map146    Type: SHT_LLVM_BB_ADDR_MAP147    Entries:148## Check that obj2yaml does not emit the 'Address' and 'Feature' fields when149## they are zero.150      - Version: 0151        Feature: 0x0152        BBRanges:153          - BaseAddress: 0x0154            BBEntries:155              - AddressOffset: 0x1156                Size:          0x2157                Metadata:      0x3158  - Name: '.llvm_bb_addr_map (1)'159    Type:  SHT_LLVM_BB_ADDR_MAP160    Entries:161      - Version: 0162        BBRanges:163          - BaseAddress: 0x20164 165## Check that obj2yaml can dump basic block hash in the .llvm_bb_addr_map section.166 167# RUN: yaml2obj --docnum=4 %s -o %t4168# RUN: obj2yaml %t4 | FileCheck %s --check-prefix=BBHASH169 170# BBHASH:      --- !ELF171# BBHASH-NEXT: FileHeader:172# BBHASH-NEXT:   Class: ELFCLASS64173# BBHASH-NEXT:   Data:  ELFDATA2LSB174# BBHASH-NEXT:   Type:  ET_EXEC175# BBHASH-NEXT: Sections:176# BBHASH-NEXT:   - Name: .llvm_bb_addr_map177# BBHASH-NEXT:     Type: SHT_LLVM_BB_ADDR_MAP178# BBHASH-NEXT:     Entries:179# BBHASH-NEXT:       - Version: 4180# BBHASH-NEXT:         Feature: 0x40181# BBHASH-NEXT:         BBRanges:182# BBHASH-NEXT:           - BBEntries:183# BBHASH-NEXT:             - ID:            0184# BBHASH-NEXT:               AddressOffset: 0x1185# BBHASH-NEXT:               Size:          0x2186# BBHASH-NEXT:               Metadata:      0x3187# BBHASH-NEXT:               Hash:          0x1188# BBHASH-NEXT:             - ID:            2189# BBHASH-NEXT:               AddressOffset: 0x4190# BBHASH-NEXT:               Size:          0x5191# BBHASH-NEXT:               Metadata:      0x6192# BBHASH-NEXT:               Hash:          0x2193# BBHASH-NEXT:             - ID:            4194# BBHASH-NEXT:               AddressOffset: 0xFFFFFFFFFFFFFFF7195# BBHASH-NEXT:               Size:          0xFFFFFFFFFFFFFFF8196# BBHASH-NEXT:               Metadata:      0xFFFFFFFFFFFFFFF9197# BBHASH-NEXT:               Hash:          0x3198# BBHASH-NEXT:       - Version: 4199# BBHASH-NEXT:         Feature: 0x68200# BBHASH-NEXT:         BBRanges:201# BBHASH-NEXT:           - BaseAddress: 0xFFFFFFFFFFFFFF20202# BBHASH-NEXT:             BBEntries:203# BBHASH-NEXT:               - ID:              6204# BBHASH-NEXT:                 AddressOffset:   0xA205# BBHASH-NEXT:                 Size:            0xB206# BBHASH-NEXT:                 Metadata:        0xC207# BBHASH-NEXT:                 CallsiteEndOffsets: [ 0x1, 0x2 ]208# BBHASH-NEXT:                 Hash:          0x123209 210--- !ELF211FileHeader:212  Class: ELFCLASS64213  Data:  ELFDATA2LSB214  Type:  ET_EXEC215Sections:216  - Name:   .llvm_bb_addr_map217    Type:   SHT_LLVM_BB_ADDR_MAP218    Entries:219      - Version: 4220        Feature: 0x40221        BBRanges:222          - BaseAddress: 0x0223            BBEntries:224              - ID:            0225                AddressOffset: 0x1226                Size:          0x2227                Metadata:      0x3228                Hash:          0x1229              - ID:            2230                AddressOffset: 0x4231                Size:          0x5232                Metadata:      0x6233                Hash:          0x2234              - ID:            4235                AddressOffset: 0xFFFFFFFFFFFFFFF7236                Size:          0xFFFFFFFFFFFFFFF8237                Metadata:      0xFFFFFFFFFFFFFFF9238                Hash:          0x3239      - Version:   4240        Feature:   0x68241        BBRanges:242          - BaseAddress:   0xFFFFFFFFFFFFFF20243            BBEntries:244             - ID:              6245               AddressOffset:   0xA246               Size:            0xB247               Metadata:        0xC248               CallsiteEndOffsets: [ 0x1, 0x2 ]249               Hash:            0x123250 251## Check that obj2yaml uses the "Content" tag to describe an .llvm_bb_addr_map section252## when it can't extract the entries, for example, when the section is truncated, or253## when an invalid 'NumBlocks' or 'NumBBRanges` field is specified.254 255# RUN: yaml2obj --docnum=1 -DSIZE=0x8 %s -o %t4256# RUN: obj2yaml %t4 | FileCheck %s --check-prefixes=TRUNCATED,INVALID257 258# RUN: yaml2obj --docnum=1 -DNUMBLOCKS=2 %s -o %t5259# RUN: obj2yaml %t5 | FileCheck %s --check-prefixes=BADNUM,INVALID260 261# RUN: yaml2obj --docnum=1 -DNUMBBRANGES=2 %s -o %t6262# RUN: obj2yaml %t6 | FileCheck %s --check-prefixes=BADNUM,INVALID263 264# INVALID:           --- !ELF265# INVALID-NEXT:      FileHeader:266# INVALID-NEXT:        Class: ELFCLASS64267# INVALID-NEXT:        Data:  ELFDATA2LSB268# INVALID-NEXT:        Type:  ET_EXEC269# INVALID-NEXT:      Sections:270# INVALID-NEXT:        - Name:    .llvm_bb_addr_map271# INVALID-NEXT:          Type:    SHT_LLVM_BB_ADDR_MAP272# BADNUM-NEXT:           Content: {{([[:xdigit:]]+)}}{{$}}273# TRUNCATED-NEXT:        Content: '{{([[:xdigit:]]{16})}}'{{$}}274