brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.6 KiB · 325a956 Raw
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