143 lines · plain
1# REQUIRES: zstd2## This test checks that we can read compressed SHT_LLVM_BB_ADDR_MAP sections.3 4## Check 64-bit:5# RUN: yaml2obj --docnum=1 %s -DBITS=64 -DADDR=0x999999999 -o %t1.x64.o6# RUN: llvm-objcopy %t1.x64.o --compress-sections .llvm_bb_addr_map=zstd %t1.x64.compressed.o7# RUN: llvm-readobj %t1.x64.compressed.o --bb-addr-map 2>&1 | FileCheck %s -DADDR=0x999999999 -DFILE=%t1.x64.compressed.o --check-prefix=CHECK8 9## Check 32-bit:10# RUN: yaml2obj --docnum=1 %s -DBITS=32 -o %t1.x32.o11# RUN: llvm-objcopy %t1.x32.o --compress-sections .llvm_bb_addr_map=zstd %t1.x32.compressed.o12# RUN: llvm-readobj %t1.x32.compressed.o --bb-addr-map 2>&1 | FileCheck %s -DADDR=0x11111 -DFILE=%t1.x32.compressed.o --check-prefix=CHECK13 14# CHECK: BBAddrMap [15# CHECK-NEXT: Function {16# CHECK-NEXT: At: [[ADDR]]17# CHECK-NEXT: warning: '[[FILE]]': could not identify function symbol for address ([[ADDR]]) in SHT_LLVM_BB_ADDR_MAP section with index 318# CHECK-NEXT: Name: <?>19# CHECK-NEXT: BB Ranges [20# CHECK-NEXT: {21# CHECK-NEXT: Base Address: [[ADDR]]22# CHECK-NEXT: BB Entries [23# CHECK-NEXT: {24# CHECK-NEXT: ID: 025# CHECK-NEXT: Offset: 0x026# CHECK-NEXT: Size: 0x127# CHECK-NEXT: HasReturn: No28# CHECK-NEXT: HasTailCall: Yes29# CHECK-NEXT: IsEHPad: No30# CHECK-NEXT: CanFallThrough: No31# CHECK-NEXT: HasIndirectBranch: No32# CHECK-NEXT: }33# CHECK-NEXT: ]34# CHECK-NEXT: }35# CHECK-NEXT: {36# CHECK-NEXT: Base Address: 0x4444437# CHECK-NEXT: BB Entries [38# CHECK-NEXT: {39# CHECK-NEXT: ID: 240# CHECK-NEXT: Offset: 0x341# CHECK-NEXT: Size: 0x442# CHECK-NEXT: HasReturn: Yes43# CHECK-NEXT: HasTailCall: No44# CHECK-NEXT: IsEHPad: Yes45# CHECK-NEXT: CanFallThrough: No46# CHECK-NEXT: HasIndirectBranch: Yes47# CHECK-NEXT: }48# CHECK-NEXT: ]49# CHECK-NEXT: }50# CHECK-NEXT: ]51# CHECK-NEXT: }52# CHECK-NEXT: Function {53# CHECK-NEXT: At: 0x2222254# CHECK-NEXT: Name: foo55# CHECK-NEXT: BB Ranges [56# CHECK-NEXT: {57# CHECK-NEXT: Base Address: 0x2222258# CHECK-NEXT: BB Entries [59# CHECK-NEXT: {60# CHECK-NEXT: ID: 461# CHECK-NEXT: Offset: 0x662# CHECK-NEXT: Size: 0x763# CHECK-NEXT: HasReturn: No64# CHECK-NEXT: HasTailCall: No65# CHECK-NEXT: IsEHPad: No66# CHECK-NEXT: CanFallThrough: Yes67# CHECK-NEXT: HasIndirectBranch: No68# CHECK-NEXT: }69# CHECK-NEXT: ]70# CHECK-NEXT: }71# CHECK-NEXT: ]72# CHECK-NEXT: }73# CHECK-NEXT: ]74 75--- !ELF76FileHeader:77 Class: ELFCLASS[[BITS]]78 Data: ELFDATA2LSB79 Type: ET_EXEC80Sections:81 - Name: .text82 Type: SHT_PROGBITS83 Flags: [SHF_ALLOC]84 - Name: .text.bar85 Type: SHT_PROGBITS86 Flags: [SHF_ALLOC]87 - Name: .llvm_bb_addr_map88 Type: SHT_LLVM_BB_ADDR_MAP89 ShSize: [[SIZE=<none>]]90 Link: .text91 Entries:92 - Version: 293 Feature: 0x894 BBRanges:95 - BaseAddress: [[ADDR=0x11111]]96 BBEntries:97 - ID: 098 AddressOffset: 0x099 Size: 0x1100 Metadata: [[METADATA=0x2]]101 - BaseAddress: 0x44444102 BBEntries:103 - ID: 2104 AddressOffset: 0x3105 Size: 0x4106 Metadata: 0x15107 - Version: 2108 BBRanges:109 - BaseAddress: 0x22222110 BBEntries:111 - ID: 4112 AddressOffset: 0x6113 Size: 0x7114 Metadata: 0x8115 - Name: dummy_section116 Type: SHT_PROGBITS117 Size: 16118 - Name: '.llvm_bb_addr_map (1)'119 Type: SHT_LLVM_BB_ADDR_MAP120 Link: .text.bar121 Entries:122 - Version: 2123 BBRanges:124 - BaseAddress: 0x33333125 BBEntries:126 - ID: 6127 AddressOffset: 0x9128 Size: 0xa129 Metadata: 0x1b130 - ID: 7131 AddressOffset: 0xc132 Size: 0xd133 Metadata: 0xe134Symbols:135 - Name: foo136 Section: .text137 Type: STT_FUNC138 Value: 0x22222139 - Name: bar140 Section: .text.bar141 Type: STT_FUNC142 Value: 0x33333143