202 lines · plain
1## This test checks how we handle the --bb-addr-map option.2 3## Check 64-bit:4# RUN: yaml2obj --docnum=1 %s -DBITS=64 -DADDR=0x999999999 -o %t1.x64.o5# RUN: llvm-readobj %t1.x64.o --bb-addr-map 2>&1 | FileCheck %s -DADDR=0x999999999 -DFILE=%t1.x64.o --check-prefix=CHECK6# RUN: llvm-readelf %t1.x64.o --bb-addr-map | FileCheck %s --check-prefix=GNU7 8## Check 64-bit:9# RUN: yaml2obj --docnum=1 %s -DBITS=64 -DADDR=0x999999999 -o %t1.v1.x64.o10# RUN: llvm-readobj %t1.v1.x64.o --bb-addr-map 2>&1 | FileCheck %s -DADDR=0x999999999 -DFILE=%t1.v1.x64.o --check-prefix=CHECK11 12## Check 32-bit:13# RUN: yaml2obj --docnum=1 %s -DBITS=32 -o %t1.x32.o14# RUN: llvm-readobj %t1.x32.o --bb-addr-map 2>&1 | FileCheck -DADDR=0x11111 %s -DFILE=%t1.x32.o --check-prefix=CHECK15# RUN: llvm-readelf %t1.x32.o --bb-addr-map | FileCheck %s --check-prefix=GNU16 17## Check that a malformed section can be handled.18# RUN: yaml2obj --docnum=1 %s -DBITS=32 -DSIZE=7 -o %t2.o19# RUN: llvm-readobj %t2.o --bb-addr-map 2>&1 | FileCheck %s -DOFFSET=0x00000007 -DFILE=%t2.o --check-prefix=TRUNCATED20 21## Check that invalid metadata can be handled.22# RUN: yaml2obj --docnum=1 %s -DBITS=32 -DMETADATA=0xF000002 -o %t3.o23# RUN: llvm-readobj %t3.o --bb-addr-map 2>&1 | FileCheck %s -DFILE=%t3.o --check-prefix=INVALIDMD24 25# CHECK: BBAddrMap [26# CHECK-NEXT: Function {27# CHECK-NEXT: At: [[ADDR]]28# CHECK-NEXT: warning: '[[FILE]]': could not identify function symbol for address ([[ADDR]]) in SHT_LLVM_BB_ADDR_MAP section with index 329# CHECK-NEXT: Name: <?>30# CHECK-NEXT: BB Ranges [31# CHECK-NEXT: {32# CHECK-NEXT: Base Address: [[ADDR]]33# CHECK-NEXT: BB Entries [34# CHECK-NEXT: {35# CHECK-NEXT: ID: 036# CHECK-NEXT: Offset: 0x037# CHECK-NEXT: Hash: 0x038# CHECK-NEXT: Size: 0x139# CHECK-NEXT: HasReturn: No40# CHECK-NEXT: HasTailCall: Yes41# CHECK-NEXT: IsEHPad: No42# CHECK-NEXT: CanFallThrough: No43# CHECK-NEXT: HasIndirectBranch: No44# CHECK-NEXT: }45# CHECK-NEXT: ]46# CHECK-NEXT: }47# CHECK-NEXT: {48# CHECK-NEXT: Base Address: 0x4444449# CHECK-NEXT: BB Entries [50# CHECK-NEXT: {51# CHECK-NEXT: ID: 252# CHECK-NEXT: Offset: 0x353# CHECK-NEXT: Callsite End Offsets: [1, 3]54# CHECK-NEXT: Hash: 0x12355# CHECK-NEXT: Size: 0x756# CHECK-NEXT: HasReturn: Yes57# CHECK-NEXT: HasTailCall: No58# CHECK-NEXT: IsEHPad: Yes59# CHECK-NEXT: CanFallThrough: No60# CHECK-NEXT: HasIndirectBranch: Yes61# CHECK-NEXT: }62# CHECK-NEXT: ]63# CHECK-NEXT: }64# CHECK-NEXT: ]65# CHECK-NEXT: }66# CHECK-NEXT: Function {67# CHECK-NEXT: At: 0x2222268# CHECK-NEXT: Name: foo69# CHECK-NEXT: BB Ranges [70# CHECK-NEXT: {71# CHECK-NEXT: Base Address: 0x2222272# CHECK-NEXT: BB Entries [73# CHECK-NEXT: {74# CHECK-NEXT: ID: 475# CHECK-NEXT: Offset: 0x676# CHECK-NEXT: Size: 0x777# CHECK-NEXT: HasReturn: No78# CHECK-NEXT: HasTailCall: No79# CHECK-NEXT: IsEHPad: No80# CHECK-NEXT: CanFallThrough: Yes81# CHECK-NEXT: HasIndirectBranch: No82# CHECK-NEXT: }83# CHECK-NEXT: ]84# CHECK-NEXT: }85# CHECK-NEXT: ]86# CHECK-NEXT: }87# CHECK-NEXT: ]88 89# GNU: GNUStyle::printBBAddrMaps not implemented90 91# TRUNCATED: BBAddrMap [92# 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 end93# TRUNCATED-NEXT: ]94## Check that the other valid section is properly dumped.95# TRUNCATED-NEXT: BBAddrMap [96# TRUNCATED-NEXT: Function {97# TRUNCATED-NEXT: At: 0x3333398# TRUNCATED-NEXT: Name: bar99# TRUNCATED-NEXT: BB Ranges [100# TRUNCATED-NEXT: {101# TRUNCATED-NEXT: Base Address: 0x33333102# TRUNCATED-NEXT: BB Entries [103# TRUNCATED-NEXT: {104# TRUNCATED-NEXT: ID: 6105# TRUNCATED-NEXT: Offset: 0x9106# TRUNCATED-NEXT: Size: 0xA107# TRUNCATED-NEXT: HasReturn: Yes108# TRUNCATED-NEXT: HasTailCall: Yes109# TRUNCATED-NEXT: IsEHPad: No110# TRUNCATED-NEXT: CanFallThrough: Yes111# TRUNCATED-NEXT: HasIndirectBranch: Yes112# TRUNCATED-NEXT: }113# TRUNCATED-NEXT: {114# TRUNCATED-NEXT: ID: 7115# TRUNCATED-NEXT: Offset: 0x1F116# TRUNCATED-NEXT: Size: 0xD117# TRUNCATED-NEXT: HasReturn: No118# TRUNCATED-NEXT: HasTailCall: Yes119# TRUNCATED-NEXT: IsEHPad: Yes120# TRUNCATED-NEXT: CanFallThrough: Yes121# TRUNCATED-NEXT: HasIndirectBranch: No122# TRUNCATED-NEXT: }123# TRUNCATED-NEXT: ]124# TRUNCATED-NEXT: }125# TRUNCATED-NEXT: ]126# TRUNCATED-NEXT: }127# TRUNCATED-NEXT: ]128 129# INVALIDMD: BBAddrMap [130# INVALIDMD-NEXT: warning: '[[FILE]]': unable to dump SHT_LLVM_BB_ADDR_MAP section with index 3: invalid encoding for BBEntry::Metadata: 0xf000002131 132--- !ELF133FileHeader:134 Class: ELFCLASS[[BITS]]135 Data: ELFDATA2LSB136 Type: ET_EXEC137Sections:138 - Name: .text139 Type: SHT_PROGBITS140 Flags: [SHF_ALLOC]141 - Name: .text.bar142 Type: SHT_PROGBITS143 Flags: [SHF_ALLOC]144 - Name: .llvm_bb_addr_map145 Type: SHT_LLVM_BB_ADDR_MAP146 ShSize: [[SIZE=<none>]]147 Link: .text148 Entries:149 - Version: 4150 Feature: 0x68151 BBRanges:152 - BaseAddress: [[ADDR=0x11111]]153 BBEntries:154 - ID: 0155 AddressOffset: 0x0156 Size: 0x1157 Metadata: [[METADATA=0x2]]158 - BaseAddress: 0x44444159 BBEntries:160 - ID: 2161 AddressOffset: 0x3162 Size: 0x4163 Metadata: 0x15164 CallsiteEndOffsets: [ 0x1 , 0x2 ]165 Hash: 0x123166 - Version: 2167 BBRanges:168 - BaseAddress: 0x22222169 BBEntries:170 - ID: 4171 AddressOffset: 0x6172 Size: 0x7173 Metadata: 0x8174 - Name: dummy_section175 Type: SHT_PROGBITS176 Size: 16177 - Name: '.llvm_bb_addr_map (1)'178 Type: SHT_LLVM_BB_ADDR_MAP179 Link: .text.bar180 Entries:181 - Version: 2182 BBRanges:183 - BaseAddress: 0x33333184 BBEntries:185 - ID: 6186 AddressOffset: 0x9187 Size: 0xa188 Metadata: 0x1b189 - ID: 7190 AddressOffset: 0xc191 Size: 0xd192 Metadata: 0xe193Symbols:194 - Name: foo195 Section: .text196 Type: STT_FUNC197 Value: 0x22222198 - Name: bar199 Section: .text.bar200 Type: STT_FUNC201 Value: 0x33333202