246 lines · plain
1## This test checks how llvm-readobj prints the PGO Analysis Map with the2## --bb-addr-map option.3 4## Check 64-bit:5# RUN: yaml2obj %s -DBITS=64 -DADDR=0x999999999 -o %t1.x64.o6# RUN: llvm-readobj %t1.x64.o --bb-addr-map 2>&1 | FileCheck --match-full-lines %s -DADDR=0x999999999 -DFILE=%t1.x64.o --check-prefixes=CHECK,RAW7# RUN: llvm-readobj %t1.x64.o --bb-addr-map --pretty-pgo-analysis-map 2>&1 | FileCheck --match-full-lines %s -DADDR=0x999999999 -DFILE=%t1.x64.o --check-prefixes=CHECK,PRETTY8# RUN: llvm-readelf %t1.x64.o --bb-addr-map | FileCheck %s --check-prefix=GNU9# RUN: llvm-readobj %t1.x64.o --pretty-pgo-analysis-map 2>&1 | FileCheck %s --check-prefix=PRETTY-NO-BAM10 11## Check 32-bit:12# RUN: yaml2obj %s -DBITS=32 -o %t1.x32.o13# RUN: llvm-readobj %t1.x32.o --bb-addr-map 2>&1 | FileCheck --match-full-lines -DADDR=0x11111 %s -DFILE=%t1.x32.o --check-prefixes=CHECK,RAW14# RUN: llvm-readelf %t1.x32.o --bb-addr-map | FileCheck %s --check-prefix=GNU15 16## Check that a malformed section can be handled.17# RUN: yaml2obj %s -DBITS=32 -DSIZE=24 -o %t2.o18# RUN: llvm-readobj %t2.o --bb-addr-map 2>&1 | FileCheck --match-full-lines %s -DOFFSET=0x00000015 -DFILE=%t2.o --check-prefix=TRUNCATED19 20## Check that missing features can be handled.21# RUN: yaml2obj %s -DBITS=32 -DFEATURE=0x2 -o %t3.o22# RUN: llvm-readobj %t3.o --bb-addr-map 2>&1 | FileCheck %s -DFILE=%t3.o --check-prefix=INVALIDFT23 24# CHECK: BBAddrMap [25# CHECK-NEXT: Function {26# CHECK-NEXT: At: [[ADDR]]27# CHECK-NEXT: {{.*}}: warning: '[[FILE]]': could not identify function symbol for address ([[ADDR]]) in SHT_LLVM_BB_ADDR_MAP section with index 328# CHECK-NEXT: Name: <?>29# CHECK-NEXT: BB Ranges [30# CHECK-NEXT: {31# CHECK-NEXT: Base Address: [[ADDR]]32# CHECK-NEXT: BB Entries [33# CHECK-NEXT: {34# CHECK-NEXT: ID: 035# CHECK-NEXT: Offset: 0x036# CHECK-NEXT: Size: 0x137# CHECK-NEXT: HasReturn: No38# CHECK-NEXT: HasTailCall: Yes39# CHECK-NEXT: IsEHPad: No40# CHECK-NEXT: CanFallThrough: No41# CHECK-NEXT: HasIndirectBranch: No42# CHECK-NEXT: }43# CHECK-NEXT: {44# CHECK-NEXT: ID: 245# CHECK-NEXT: Offset: 0x446# CHECK-NEXT: Size: 0x447# CHECK-NEXT: HasReturn: Yes48# CHECK-NEXT: HasTailCall: No49# CHECK-NEXT: IsEHPad: Yes50# CHECK-NEXT: CanFallThrough: No51# CHECK-NEXT: HasIndirectBranch: Yes52# CHECK-NEXT: }53# CHECK-NEXT: ]54# CHECK-NEXT: }55# CHECK-NEXT: ]56# CHECK-NEXT: PGO analyses {57# CHECK-NEXT: FuncEntryCount: 10058# CHECK-NEXT: PGO BB entries [59# CHECK-NEXT: {60# RAW-NEXT: Frequency: 10061# PRETTY-NEXT: Frequency: 1.062# CHECK-NEXT: PostLink Frequency: 1063# CHECK-NEXT: Successors [64# CHECK-NEXT: {65# CHECK-NEXT: ID: 266# RAW-NEXT: Probability: 0x8000000067# PRETTY-NEXT: Probability: 0x80000000 / 0x80000000 = 100.00%68# CHECK-NEXT: PostLink Probability: 769# CHECK-NEXT: }70# CHECK-NEXT: ]71# CHECK-NEXT: }72# CHECK-NEXT: {73# RAW-NEXT: Frequency: 10074# PRETTY-NEXT: Frequency: 1.075# CHECK-NEXT: PostLink Frequency: 076# CHECK-NEXT: Successors [77# CHECK-NEXT: ]78# CHECK-NEXT: }79# CHECK-NEXT: ]80# CHECK-NEXT: }81# CHECK-NEXT: }82# CHECK-NEXT: Function {83# CHECK-NEXT: At: 0x2222284# CHECK-NEXT: Name: foo85# CHECK-NEXT: BB Ranges [86# CHECK-NEXT: {87# CHECK-NEXT: Base Address: 0x2222288# CHECK-NEXT: BB Entries [89# CHECK-NEXT: {90# CHECK-NEXT: ID: 491# CHECK-NEXT: Offset: 0x692# CHECK-NEXT: Size: 0x793# CHECK-NEXT: HasReturn: No94# CHECK-NEXT: HasTailCall: No95# CHECK-NEXT: IsEHPad: No96# CHECK-NEXT: CanFallThrough: Yes97# CHECK-NEXT: HasIndirectBranch: No98# CHECK-NEXT: }99# CHECK-NEXT: ]100# CHECK-NEXT: }101# CHECK-NEXT: ]102# CHECK-NEXT: PGO analyses {103# CHECK-NEXT: FuncEntryCount: 8888104# CHECK-NEXT: PGO BB entries [105# CHECK-NEXT: {106# RAW-NEXT: Frequency: 9000107# PRETTY-NEXT: Frequency: 1.0108# CHECK-NEXT: }109# CHECK-NEXT: ]110# CHECK-NEXT: }111# CHECK-NEXT: }112# CHECK-NEXT: ]113 114# GNU: GNUStyle::printBBAddrMaps not implemented115 116# PRETTY-NO-BAM: warning: --bb-addr-map must be enabled for --pretty-pgo-analysis-map to have an effect117 118# TRUNCATED: BBAddrMap [119# TRUNCATED-NEXT: {{.*}}: warning: '[[FILE]]': unable to dump SHT_LLVM_BB_ADDR_MAP section with index 3: unable to decode LEB128 at offset [[OFFSET]]: malformed uleb128, extends past end120# TRUNCATED-NEXT: ]121## Check that the other valid section is properly dumped.122# TRUNCATED-NEXT: BBAddrMap [123# TRUNCATED-NEXT: Function {124# TRUNCATED-NEXT: At: 0x33333125# TRUNCATED-NEXT: Name: bar126# TRUNCATED-NEXT: BB Ranges [127# TRUNCATED-NEXT: {128# TRUNCATED-NEXT: Base Address: 0x33333129# TRUNCATED-NEXT: BB Entries [130# TRUNCATED-NEXT: {131# TRUNCATED-NEXT: ID: 6132# TRUNCATED-NEXT: Offset: 0x9133# TRUNCATED-NEXT: Size: 0xA134# TRUNCATED-NEXT: HasReturn: Yes135# TRUNCATED-NEXT: HasTailCall: Yes136# TRUNCATED-NEXT: IsEHPad: No137# TRUNCATED-NEXT: CanFallThrough: Yes138# TRUNCATED-NEXT: HasIndirectBranch: Yes139# TRUNCATED-NEXT: }140# TRUNCATED-NEXT: {141# TRUNCATED-NEXT: ID: 7142# TRUNCATED-NEXT: Offset: 0x1F143# TRUNCATED-NEXT: Size: 0xD144# TRUNCATED-NEXT: HasReturn: No145# TRUNCATED-NEXT: HasTailCall: Yes146# TRUNCATED-NEXT: IsEHPad: Yes147# TRUNCATED-NEXT: CanFallThrough: Yes148# TRUNCATED-NEXT: HasIndirectBranch: No149# TRUNCATED-NEXT: }150# TRUNCATED-NEXT: ]151# TRUNCATED-NEXT: }152# TRUNCATED-NEXT: ]153# TRUNCATED-NEXT: PGO analyses {154# TRUNCATED-NEXT: FuncEntryCount: 89155# TRUNCATED-NEXT: }156# TRUNCATED-NEXT: }157# TRUNCATED-NEXT: ]158 159# INVALIDFT: warning: '[[FILE]]': unable to dump SHT_LLVM_BB_ADDR_MAP section with index 5: unable to decode LEB128 at offset 0x00000010: malformed uleb128, extends past end160 161--- !ELF162FileHeader:163 Class: ELFCLASS[[BITS]]164 Data: ELFDATA2LSB165 Type: ET_EXEC166Sections:167 - Name: .text168 Type: SHT_PROGBITS169 Flags: [SHF_ALLOC]170 - Name: .text.bar171 Type: SHT_PROGBITS172 Flags: [SHF_ALLOC]173 - Name: .llvm_bb_addr_map174 Type: SHT_LLVM_BB_ADDR_MAP175 ShSize: [[SIZE=<none>]]176 Link: .text177 Entries:178 - Version: 5179 Feature: 0x87180 BBRanges:181 - BaseAddress: [[ADDR=0x11111]]182 BBEntries:183 - ID: 0184 AddressOffset: 0x0185 Size: 0x1186 Metadata: 0x2187 - ID: 2188 AddressOffset: 0x3189 Size: 0x4190 Metadata: 0x15191 - Version: 2192 Feature: 0x3193 BBRanges:194 - BaseAddress: 0x22222195 BBEntries:196 - ID: 4197 AddressOffset: 0x6198 Size: 0x7199 Metadata: 0x8200 PGOAnalyses:201 - FuncEntryCount: 100202 PGOBBEntries:203 - BBFreq: 100204 PostLinkBBFreq: 10205 Successors:206 - ID: 2207 BrProb: 0x80000000208 PostLinkBrFreq: 7209 - BBFreq: 100210 Successors: []211 - FuncEntryCount: 8888212 PGOBBEntries:213 - BBFreq: 9000214 - Name: dummy_section215 Type: SHT_PROGBITS216 Size: 16217 - Name: '.llvm_bb_addr_map (1)'218 Type: SHT_LLVM_BB_ADDR_MAP219 Link: .text.bar220 Entries:221 - Version: 2222 Feature: [[FEATURE=0x1]]223 BBRanges:224 - BaseAddress: 0x33333225 BBEntries:226 - ID: 6227 AddressOffset: 0x9228 Size: 0xa229 Metadata: 0x1b230 - ID: 7231 AddressOffset: 0xc232 Size: 0xd233 Metadata: 0xe234 PGOAnalyses:235 - FuncEntryCount: 89236Symbols:237 - Name: foo238 Section: .text239 Type: STT_FUNC240 Value: 0x22222241 - Name: bar242 Section: .text.bar243 Type: STT_FUNC244 Value: 0x33333245 246