1## This test checks how we handle the --bb-addr-map option on relocatable 2## object files. 3 4# RUN: yaml2obj %s -o %t1.o 5# RUN: llvm-readobj %t1.o --bb-addr-map | FileCheck %s 6 7# CHECK: BBAddrMap [ 8# CHECK-NEXT: Function { 9# CHECK-NEXT: At: 0x0 10# CHECK-NEXT: Name: <?> 11# CHECK-NEXT: BB Ranges [ 12# CHECK-NEXT: { 13# CHECK-NEXT: Base Address: 0x0 14# CHECK-NEXT: BB Entries [ 15# CHECK-NEXT: { 16# CHECK-NEXT: ID: 0 17# CHECK-NEXT: Offset: 0x0 18# CHECK-NEXT: Size: 0xF 19# CHECK-NEXT: HasReturn: Yes 20# CHECK-NEXT: HasTailCall: No 21# CHECK-NEXT: IsEHPad: No 22# CHECK-NEXT: CanFallThrough: No 23# CHECK-NEXT: HasIndirectBranch: No 24# CHECK-NEXT: } 25# CHECK-NEXT: ] 26# CHECK-NEXT: } 27# CHECK-NEXT: ] 28# CHECK-NEXT: } 29# CHECK-NEXT: Function { 30# CHECK-NEXT: At: 0x10 31# CHECK-NEXT: Name: <?> 32# CHECK-NEXT: BB Ranges [ 33# CHECK-NEXT: { 34# CHECK-NEXT: Base Address: 0x10 35# CHECK-NEXT: BB Entries [ 36# CHECK-NEXT: { 37# CHECK-NEXT: ID: 0 38# CHECK-NEXT: Offset: 0x0 39# CHECK-NEXT: Size: 0x11 40# CHECK-NEXT: HasReturn: No 41# CHECK-NEXT: HasTailCall: No 42# CHECK-NEXT: IsEHPad: No 43# CHECK-NEXT: CanFallThrough: Yes 44# CHECK-NEXT: HasIndirectBranch: No 45# CHECK-NEXT: } 46# CHECK-NEXT: ] 47# CHECK-NEXT: } 48# CHECK-NEXT: ] 49# CHECK-NEXT: } 50# CHECK-NEXT: ] 51 52--- !ELF 53FileHeader: 54 Class: ELFCLASS64 55 Data: ELFDATA2LSB 56 Type: ET_REL 57 Machine: EM_X86_64 58Sections: 59 - Name: .text 60 Type: SHT_PROGBITS 61 Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 62 - Name: .llvm_bb_addr_map 63 Type: SHT_LLVM_BB_ADDR_MAP 64 Link: .text 65 Entries: 66 - Version: 2 67 BBRanges: 68 - BBEntries: 69 - ID: 0 70 AddressOffset: 0x0 71 Size: 0xF 72 Metadata: 0x1 73 - Version: 2 74 BBRanges: 75 - BBEntries: 76 - ID: 0 77 AddressOffset: 0x0 78 Size: 0x11 79 Metadata: 0x8 80 - Name: .rela.llvm_bb_addr_map 81 Type: SHT_RELA 82 Flags: [ SHF_INFO_LINK ] 83 Link: .symtab 84 Info: .llvm_bb_addr_map 85 Relocations: 86 - Offset: 0x2 87 Symbol: .text 88 Type: R_X86_64_64 89 - Offset: 0x11 90 Symbol: .text 91 Type: R_X86_64_64 92 Addend: 16 93Symbols: 94 - Name: a 95 Section: .text 96 Value: 0x0 97 - Name: c 98 Section: .text 99 Value: 0x10 100 - Name: .text 101 Type: STT_SECTION 102 Section: .text 103 104## Check that if we have a relocatable file and no relocation section for 105## a SHT_LLVM_BB_ADDR_MAP section, we give the appropriate warnings. 106 107--- !ELF 108FileHeader: 109 Class: ELFCLASS64 110 Data: ELFDATA2LSB 111 Type: ET_REL 112 Machine: EM_X86_64 113Sections: 114 - Name: .text 115 Type: SHT_PROGBITS 116 Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 117 - Name: .llvm_bb_addr_map 118 Type: SHT_LLVM_BB_ADDR_MAP 119 Link: .text 120 121# RUN: yaml2obj %s --docnum=2 -o %t2.o 122# RUN: llvm-readobj %t2.o --bb-addr-map 2>&1 | FileCheck %s --check-prefix=NO-RELA -DFILE=%t2.o 123 124# NO-RELA: warning: '[[FILE]]': unable to get relocation section for SHT_LLVM_BB_ADDR_MAP section with index 2 125 126## Check that we get a warning if we expect a relocation and it is not present. 127 128--- !ELF 129FileHeader: 130 Class: ELFCLASS64 131 Data: ELFDATA2LSB 132 Type: ET_REL 133 Machine: EM_X86_64 134Sections: 135 - Name: .text 136 Type: SHT_PROGBITS 137 Flags: [ SHF_ALLOC, SHF_EXECINSTR ] 138 - Name: .llvm_bb_addr_map 139 Type: SHT_LLVM_BB_ADDR_MAP 140 Link: .text 141 Entries: 142 - Version: 2 143 BBRanges: 144 - BBEntries: 145 - ID: 0 146 AddressOffset: 0x0 147 Size: 0xF 148 Metadata: 0x1 149 - Name: .rela.llvm_bb_addr_map 150 Type: SHT_RELA 151 Flags: [ SHF_INFO_LINK ] 152 Info: .llvm_bb_addr_map 153 154# RUN: yaml2obj %s --docnum=3 -o %t3.o 155# RUN: llvm-readobj %t3.o --bb-addr-map 2>&1 | FileCheck %s --check-prefix=MISSING-RELOCATION -DFILE=%t3.o 156 157# 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 2 158 159## Check that if we have a missing relocated section, we fail and give the 160## appropriate warning. 161 162--- !ELF 163FileHeader: 164 Class: ELFCLASS64 165 Data: ELFDATA2LSB 166 Type: ET_REL 167 Machine: EM_X86_64 168Sections: 169 - Name: .rela.llvm_bb_addr_map 170 Type: SHT_RELA 171 Flags: [ SHF_INFO_LINK ] 172 Info: 0xFF 173 174# RUN: yaml2obj %s --docnum=4 -o %t4.o 175# RUN: llvm-readobj %t4.o --bb-addr-map 2>&1 | FileCheck %s --check-prefix=NO-RELOCATED-SECTION -DFILE=%t4.o 176 177# 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: 255 178 179## Check that if we have an ET_DYN file with a .rela.dyn section, we don't get 180## a warning about a missing relocation section and can get the baddrmap data. 181 182--- !ELF 183FileHeader: 184 Class: ELFCLASS64 185 Data: ELFDATA2LSB 186 Type: ET_DYN 187 Machine: EM_X86_64 188Sections: 189 - Name: .rela.dyn 190 Type: SHT_RELA 191 Flags: [ SHF_ALLOC ] 192 - Name: .llvm_bb_addr_map 193 Type: SHT_LLVM_BB_ADDR_MAP 194 Flags: [ SHF_LINK_ORDER ] 195 Entries: 196 - Version: 2 197 BBRanges: 198 - BaseAddress: 0xF 199 BBEntries: 200 - ID: 0 201 AddressOffset: 0x0 202 Size: 0xF 203 Metadata: 0x1 204 205# RUN: yaml2obj %s --docnum=5 -o %t5.o 206# RUN: llvm-readobj %t5.o --bb-addr-map 2>&1 | FileCheck %s --check-prefix=ET-DYN-NO-WARNING -DFILE=%t5.o 207 208# ET-DYN-NO-WARNING: BBAddrMap [ 209# ET-DYN-NO-WARNING: Function { 210# ET-DYN-NO-WARNING: At: 0xF 211# ET-DYN-NO-WARNING: Name: <?> 212# ET-DYN-NO-WARNING: BB Ranges [ 213# ET-DYN-NO-WARNING: { 214# ET-DYN-NO-WARNING: Base Address: 0xF 215# ET-DYN-NO-WARNING: BB Entries [ 216# ET-DYN-NO-WARNING: { 217# ET-DYN-NO-WARNING: ID: 0 218# ET-DYN-NO-WARNING: Offset: 0x0 219# ET-DYN-NO-WARNING: Size: 0xF 220# ET-DYN-NO-WARNING: HasReturn: Yes 221# ET-DYN-NO-WARNING: HasTailCall: No 222# ET-DYN-NO-WARNING: IsEHPad: No 223# ET-DYN-NO-WARNING: CanFallThrough: No 224# ET-DYN-NO-WARNING: HasIndirectBranch: No 225# ET-DYN-NO-WARNING: } 226# 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