284 lines · plain
1## This test checks how we handle the --bb-addr-map option on relocatable2## object files.3 4# RUN: yaml2obj -D RELOCATION_SECTION_NAME=.rela.llvm_bb_addr_map \5# RUN: -D RELOCATION_SECTION_TYPE=SHT_RELA %s -o %t1.o6# RUN: llvm-readobj %t1.o --bb-addr-map | FileCheck %s7 8# CHECK: BBAddrMap [9# CHECK-NEXT: Function {10# CHECK-NEXT: At: 0x011# CHECK-NEXT: Name: <?>12# CHECK-NEXT: BB Ranges [13# CHECK-NEXT: {14# CHECK-NEXT: Base Address: 0x015# CHECK-NEXT: BB Entries [16# CHECK-NEXT: {17# CHECK-NEXT: ID: 018# CHECK-NEXT: Offset: 0x019# CHECK-NEXT: Size: 0xF20# CHECK-NEXT: HasReturn: Yes21# CHECK-NEXT: HasTailCall: No22# CHECK-NEXT: IsEHPad: No23# CHECK-NEXT: CanFallThrough: No24# CHECK-NEXT: HasIndirectBranch: No25# CHECK-NEXT: }26# CHECK-NEXT: ]27# CHECK-NEXT: }28# CHECK-NEXT: ]29# CHECK-NEXT: }30# CHECK-NEXT: Function {31# CHECK-NEXT: At: 0x1032# CHECK-NEXT: Name: <?>33# CHECK-NEXT: BB Ranges [34# CHECK-NEXT: {35# CHECK-NEXT: Base Address: 0x1036# CHECK-NEXT: BB Entries [37# CHECK-NEXT: {38# CHECK-NEXT: ID: 039# CHECK-NEXT: Offset: 0x040# CHECK-NEXT: Size: 0x1141# CHECK-NEXT: HasReturn: No42# CHECK-NEXT: HasTailCall: No43# CHECK-NEXT: IsEHPad: No44# CHECK-NEXT: CanFallThrough: Yes45# CHECK-NEXT: HasIndirectBranch: No46# CHECK-NEXT: }47# CHECK-NEXT: ]48# CHECK-NEXT: }49# CHECK-NEXT: ]50# CHECK-NEXT: }51# CHECK-NEXT: ]52 53--- !ELF54FileHeader:55 Class: ELFCLASS6456 Data: ELFDATA2LSB57 Type: ET_REL58 Machine: EM_X86_6459Sections:60 - Name: .text61 Type: SHT_PROGBITS62 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]63 - Name: .llvm_bb_addr_map64 Type: SHT_LLVM_BB_ADDR_MAP65 Link: .text66 Entries:67 - Version: 268 BBRanges:69 - BBEntries:70 - ID: 071 AddressOffset: 0x072 Size: 0xF73 Metadata: 0x174 - Version: 275 BBRanges:76 - BBEntries:77 - ID: 078 AddressOffset: 0x079 Size: 0x1180 Metadata: 0x881 - Name: [[RELOCATION_SECTION_NAME]]82 Type: [[RELOCATION_SECTION_TYPE]]83 Flags: [ SHF_INFO_LINK ]84 Link: .symtab85 Info: .llvm_bb_addr_map86 Relocations:87 - Offset: 0x288 Symbol: .text89 Type: R_X86_64_6490 - Offset: 0x1191 Symbol: .text92 Type: R_X86_64_6493 Addend: 1694Symbols:95 - Name: a96 Section: .text97 Value: 0x098 - Name: c99 Section: .text100 Value: 0x10101 - Name: .text102 Type: STT_SECTION103 Section: .text104 105## Check that if we have a relocatable file and no relocation section for106## a SHT_LLVM_BB_ADDR_MAP section, we give the appropriate warnings.107 108--- !ELF109FileHeader:110 Class: ELFCLASS64111 Data: ELFDATA2LSB112 Type: ET_REL113 Machine: EM_X86_64114Sections:115 - Name: .text116 Type: SHT_PROGBITS117 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]118 - Name: .llvm_bb_addr_map119 Type: SHT_LLVM_BB_ADDR_MAP120 Link: .text121 122# RUN: yaml2obj %s --docnum=2 -o %t2.o123# RUN: llvm-readobj %t2.o --bb-addr-map 2>&1 | FileCheck %s --check-prefix=NO-RELA -DFILE=%t2.o124 125# NO-RELA: warning: '[[FILE]]': unable to get relocation section for SHT_LLVM_BB_ADDR_MAP section with index 2126 127## Check that we get a warning if we expect a relocation and it is not present.128 129--- !ELF130FileHeader:131 Class: ELFCLASS64132 Data: ELFDATA2LSB133 Type: ET_REL134 Machine: EM_X86_64135Sections:136 - Name: .text137 Type: SHT_PROGBITS138 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]139 - Name: .llvm_bb_addr_map140 Type: SHT_LLVM_BB_ADDR_MAP141 Link: .text142 Entries:143 - Version: 2144 BBRanges:145 - BBEntries:146 - ID: 0147 AddressOffset: 0x0148 Size: 0xF149 Metadata: 0x1150 - Name: .rela.llvm_bb_addr_map151 Type: SHT_RELA152 Flags: [ SHF_INFO_LINK ]153 Info: .llvm_bb_addr_map154 155# RUN: yaml2obj %s --docnum=3 -o %t3.o156# RUN: llvm-readobj %t3.o --bb-addr-map 2>&1 | FileCheck %s --check-prefix=MISSING-RELOCATION -DFILE=%t3.o157 158# MISSING-RELOCATION: warning: '[[FILE]]': unable to dump SHT_LLVM_BB_ADDR_MAP section with index 2: failed to get relocation data for offset: 2 in section SHT_LLVM_BB_ADDR_MAP section with index 2159 160## Check that if we have a missing relocated section, we fail and give the161## appropriate warning.162 163--- !ELF164FileHeader:165 Class: ELFCLASS64166 Data: ELFDATA2LSB167 Type: ET_REL168 Machine: EM_X86_64169Sections:170 - Name: .rela.llvm_bb_addr_map171 Type: SHT_RELA172 Flags: [ SHF_INFO_LINK ]173 Info: 0xFF174 175# RUN: yaml2obj %s --docnum=4 -o %t4.o176# RUN: llvm-readobj %t4.o --bb-addr-map 2>&1 | FileCheck %s --check-prefix=NO-RELOCATED-SECTION -DFILE=%t4.o177 178# NO-RELOCATED-SECTION: warning: '[[FILE]]': failed to get SHT_LLVM_BB_ADDR_MAP section(s): SHT_RELA section with index 1: failed to get a relocated section: invalid section index: 255179 180## Check that if we have an ET_DYN file with a .rela.dyn section, we don't get181## a warning about a missing relocation section and can get the baddrmap data.182 183--- !ELF184FileHeader:185 Class: ELFCLASS64186 Data: ELFDATA2LSB187 Type: ET_DYN188 Machine: EM_X86_64189Sections:190 - Name: .rela.dyn191 Type: SHT_RELA192 Flags: [ SHF_ALLOC ]193 - Name: .llvm_bb_addr_map194 Type: SHT_LLVM_BB_ADDR_MAP195 Flags: [ SHF_LINK_ORDER ]196 Entries:197 - Version: 2198 BBRanges:199 - BaseAddress: 0xF200 BBEntries:201 - ID: 0202 AddressOffset: 0x0203 Size: 0xF204 Metadata: 0x1205 206# RUN: yaml2obj %s --docnum=5 -o %t5.o207# RUN: llvm-readobj %t5.o --bb-addr-map 2>&1 | FileCheck %s --check-prefix=ET-DYN-NO-WARNING -DFILE=%t5.o208 209# ET-DYN-NO-WARNING: BBAddrMap [210# ET-DYN-NO-WARNING: Function {211# ET-DYN-NO-WARNING: At: 0xF212# ET-DYN-NO-WARNING: Name: <?>213# ET-DYN-NO-WARNING: BB Ranges [214# ET-DYN-NO-WARNING: {215# ET-DYN-NO-WARNING: Base Address: 0xF216# ET-DYN-NO-WARNING: BB Entries [217# ET-DYN-NO-WARNING: {218# ET-DYN-NO-WARNING: ID: 0219# ET-DYN-NO-WARNING: Offset: 0x0220# ET-DYN-NO-WARNING: Size: 0xF221# ET-DYN-NO-WARNING: HasReturn: Yes222# ET-DYN-NO-WARNING: HasTailCall: No223# ET-DYN-NO-WARNING: IsEHPad: No224# ET-DYN-NO-WARNING: CanFallThrough: No225# ET-DYN-NO-WARNING: HasIndirectBranch: No226# ET-DYN-NO-WARNING: }227# ET-DYN-NO-WARNING: ]228# ET-DYN-NO-WARNING: }229# ET-DYN-NO-WARNING: ]230# ET-DYN-NO-WARNING: }231# ET-DYN-NO-WARNING: ]232 233## Check that we can correctly decode a BBAddrMap in a reloctable object file234## with CREL relocations.235 236# RUN: yaml2obj -D RELOCATION_SECTION_NAME=.crel.llvm_bb_addr_map \237# RUN: -D RELOCATION_SECTION_TYPE=SHT_CREL %s -o %t6.o238# RUN: llvm-readobj %t6.o --bb-addr-map | FileCheck %s --check-prefix=CREL239 240# CREL: BBAddrMap [241# CREL-NEXT: Function {242# CREL-NEXT: At: 0x0243# CREL-NEXT: Name: <?>244# CREL-NEXT: BB Ranges [245# CREL-NEXT: {246# CREL-NEXT: Base Address: 0x0247# CREL-NEXT: BB Entries [248# CREL-NEXT: {249# CREL-NEXT: ID: 0250# CREL-NEXT: Offset: 0x0251# CREL-NEXT: Size: 0xF252# CREL-NEXT: HasReturn: Yes253# CREL-NEXT: HasTailCall: No254# CREL-NEXT: IsEHPad: No255# CREL-NEXT: CanFallThrough: No256# CREL-NEXT: HasIndirectBranch: No257# CREL-NEXT: }258# CREL-NEXT: ]259# CREL-NEXT: }260# CREL-NEXT: ]261# CREL-NEXT: }262# CREL-NEXT: Function {263# CREL-NEXT: At: 0x10264# CREL-NEXT: Name: <?>265# CREL-NEXT: BB Ranges [266# CREL-NEXT: {267# CREL-NEXT: Base Address: 0x10268# CREL-NEXT: BB Entries [269# CREL-NEXT: {270# CREL-NEXT: ID: 0271# CREL-NEXT: Offset: 0x0272# CREL-NEXT: Size: 0x11273# CREL-NEXT: HasReturn: No274# CREL-NEXT: HasTailCall: No275# CREL-NEXT: IsEHPad: No276# CREL-NEXT: CanFallThrough: Yes277# CREL-NEXT: HasIndirectBranch: No278# CREL-NEXT: }279# CREL-NEXT: ]280# CREL-NEXT: }281# CREL-NEXT: ]282# CREL-NEXT: }283# CREL-NEXT: ]284