brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.7 KiB · 3f55d68 Raw
288 lines · plain
1## Test that DWARFv5 .debug_rnglists is correctly recognized2## and converted into the DW_FORM_sec_offset form in --garbage-collection3## case or correctly preserved in --no-garbage-collection case.4 5# RUN: yaml2obj %s -o %t.o6 7# RUN: llvm-dwarfutil %t.o %t18# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s9# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix DWARF-CHECK10 11# RUN: llvm-dwarfutil --linker parallel %t.o %t112# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s13# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix DWARF-CHECK14 15# RUN: llvm-dwarfutil --no-garbage-collection %t.o %t116# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s17# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix UPD-DWARF-CHECK18 19# RUN: llvm-dwarfutil --linker parallel --no-garbage-collection %t.o %t120# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s21# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix UPD-DWARF-CHECK22 23# RUN: llvm-dwarfutil --no-garbage-collection --build-accelerator=DWARF %t.o %t124# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s25# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix UPD-DWARF-CHECK26 27# RUN: llvm-dwarfutil --linker parallel --no-garbage-collection --build-accelerator=DWARF %t.o %t128# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s29# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix UPD-DWARF-CHECK30 31#CHECK: No errors.32 33#DWARF-CHECK: DW_TAG_compile_unit34#DWARF-CHECK:   DW_AT_name [DW_FORM_strx]  {{.*}}     "CU1"35#DWARF-CHECK:   DW_AT_low_pc [DW_FORM_addrx]      (indexed (00000000) address = 0x0000000000001130)36#DWARF-CHECK:   DW_AT_ranges [DW_FORM_sec_offset] (0x[[CURANGE_OFF:[0-9a-f]*]]37#DWARF-CHECK:   [0x0000000000001130, 0x0000000000001170))38#DWARF-CHECK:   DW_AT_str_offsets_base [DW_FORM_sec_offset]39#DWARF-CHECK:   DW_TAG_subprogram40#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo1"41#DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000000) address = 0x0000000000001130)42#DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)43#DWARF-CHECK:     DW_TAG_lexical_block44#DWARF-CHECK:       DW_AT_ranges [DW_FORM_sec_offset]     (0x[[F1RANGE_OFF:[0-9a-f]*]]45#DWARF-CHECK:       [0x0000000000001130, 0x0000000000001140))46#DWARF-CHECK:   DW_TAG_subprogram47#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo2"48#DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000001) address = 0x0000000000001140)49#DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)50#DWARF-CHECK:     DW_TAG_lexical_block51#DWARF-CHECK:       DW_AT_ranges [DW_FORM_sec_offset]     (0x[[F2RANGE_OFF:[0-9a-f]*]]52#DWARF-CHECK:            [0x0000000000001140, 0x0000000000001150))53#DWARF-CHECK:   DW_TAG_subprogram54#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo3"55#DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000002) address = 0x0000000000001150)56#DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)57#DWARF-CHECK:     DW_TAG_lexical_block58#DWARF-CHECK:       DW_AT_ranges [DW_FORM_sec_offset]     (0x[[F3RANGE_OFF:[0-9a-f]*]]59#DWARF-CHECK:          [0x0000000000001150, 0x0000000000001160))60#DWARF-CHECK:   DW_TAG_subprogram61#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo4"62#DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000003) address = 0x0000000000001160)63#DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)64#DWARF-CHECK:     DW_TAG_lexical_block65#DWARF-CHECK:       DW_AT_ranges [DW_FORM_sec_offset]     (0x[[F4RANGE_OFF:[0-9a-f]*]]66#DWARF-CHECK:          [0x0000000000001160, 0x0000000000001170))67#DWARF-CHECK: .debug_aranges contents:68#DWARF-CHECK: Address Range Header: length = 0x0000002c, format = DWARF32, version = 0x0002, cu_offset = 0x000000{{00|21}}, addr_size = 0x08, seg_size = 0x0069#DWARF-CHECK: [0x0000000000001130, 0x0000000000001170)70#DWARF-CHECK: .debug_addr contents:71#DWARF-CHECK: 0x00000000: Address table header: length = 0x00000024, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x0072#DWARF-CHECK: Addrs: [73#DWARF-CHECK: 0x000000000000113074#DWARF-CHECK: 0x000000000000114075#DWARF-CHECK: 0x000000000000115076#DWARF-CHECK: 0x000000000000116077#DWARF-CHECK: ]78#DWARF-CHECK: .debug_rnglists contents:79#DWARF-CHECK: 0x00000000: range list header: length = 0x00000026, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00, offset_entry_count = 0x0000000080#DWARF-CHECK: ranges:81#DWARF-CHECK: 0x[[F1RANGE_OFF]]: [DW_RLE_base_addressx]:  0x000000000000000082#DWARF-CHECK: {{.}}: [DW_RLE_offset_pair  ]:  0x0000000000000000, 0x000000000000001083#DWARF-CHECK: {{.}}: [DW_RLE_end_of_list  ]84#DWARF-CHECK: 0x[[F2RANGE_OFF]]: [DW_RLE_base_addressx]:  0x000000000000000185#DWARF-CHECK: {{.}}: [DW_RLE_offset_pair  ]:  0x0000000000000000, 0x000000000000001086#DWARF-CHECK: {{.}}: [DW_RLE_end_of_list  ]87#DWARF-CHECK: 0x[[F3RANGE_OFF]]: [DW_RLE_base_addressx]:  0x000000000000000288#DWARF-CHECK: {{.}}: [DW_RLE_offset_pair  ]:  0x0000000000000000, 0x000000000000001089#DWARF-CHECK: {{.}}: [DW_RLE_end_of_list  ]90#DWARF-CHECK: 0x[[F4RANGE_OFF]]: [DW_RLE_base_addressx]:  0x000000000000000391#DWARF-CHECK: {{.}}: [DW_RLE_offset_pair  ]:  0x0000000000000000, 0x000000000000001092#DWARF-CHECK: {{.}}: [DW_RLE_end_of_list  ]93#DWARF-CHECK 0x[[CURANGE_OFF]]: [DW_RLE_base_addressx]:  0x000000000000000094#DWARF-CHECK: {{.}}: [DW_RLE_offset_pair  ]:  0x0000000000000000, 0x000000000000004095#DWARF-CHECK: {{.}}: [DW_RLE_end_of_list  ]96 97#UPD-DWARF-CHECK: DW_TAG_compile_unit98#UPD-DWARF-CHECK:   DW_AT_name {{.*}}"CU1"99#UPD-DWARF-CHECK:   DW_AT_low_pc [DW_FORM_addrx]      (indexed (00000000) address = 0x0000000000001130)100#UPD-DWARF-CHECK:   DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x4) rangelist = 0x0000003e101#UPD-DWARF-CHECK:      [0x0000000000001130, 0x0000000000001170))102#UPD-DWARF-CHECK:   DW_TAG_subprogram103#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"foo1"104#UPD-DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]   (indexed (00000000) address = 0x0000000000001130) 105#UPD-DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)106#UPD-DWARF-CHECK:     DW_TAG_lexical_block107#UPD-DWARF-CHECK:     DW_AT_ranges [DW_FORM_rnglistx]       (indexed (0x0) rangelist = 0x00000020108#UPD-DWARF-CHECK:        [0x0000000000001130, 0x0000000000001140))109#UPD-DWARF-CHECK:   DW_TAG_subprogram110#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"foo2"111#UPD-DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]   (indexed (00000001) address = 0x0000000000001140) 112#UPD-DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)113#UPD-DWARF-CHECK:     DW_TAG_lexical_block114#UPD-DWARF-CHECK:     DW_AT_ranges [DW_FORM_rnglistx]       (indexed (0x1) rangelist = 0x00000024115#UPD-DWARF-CHECK:     [0x0000000000001140, 0x0000000000001150))116#UPD-DWARF-CHECK:   DW_TAG_subprogram117#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"foo3"118#UPD-DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]   (indexed (00000002) address = 0x0000000000001150) 119#UPD-DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)120#UPD-DWARF-CHECK:     DW_TAG_lexical_block121#UPD-DWARF-CHECK:     DW_AT_ranges [DW_FORM_sec_offset]     (0x00000028122#UPD-DWARF-CHECK:        [0x0000000000001150, 0x0000000000001160))123#UPD-DWARF-CHECK:   DW_TAG_subprogram124#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"foo4"125#UPD-DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]   (indexed (00000003) address = 0x0000000000001160)126#UPD-DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)127#UPD-DWARF-CHECK:     DW_TAG_lexical_block128#UPD-DWARF-CHECK:     DW_AT_ranges [DW_FORM_sec_offset]     (0x00000033129#UPD-DWARF-CHECK:        [0x0000000000001160, 0x0000000000001170))130#UPD-DWARF-CHECK: .debug_addr contents:131#UPD-DWARF-CHECK: 0x00000000: Address table header: length = 0x00000024, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00132#UPD-DWARF-CHECK: Addrs: [133#UPD-DWARF-CHECK: 0x0000000000001130134#UPD-DWARF-CHECK: 0x0000000000001140135#UPD-DWARF-CHECK: 0x0000000000001150136#UPD-DWARF-CHECK: 0x0000000000001160137#UPD-DWARF-CHECK: ]138#UPD-DWARF-CHECK: .debug_rnglists contents:139#UPD-DWARF-CHECK: 0x00000000: range list header: length = 0x0000003e, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00, offset_entry_count = 0x00000005140#UPD-DWARF-CHECK: offsets: [141#UPD-DWARF-CHECK: 0x00000014 => 0x00000020142#UPD-DWARF-CHECK: 0x00000018 => 0x00000024143#UPD-DWARF-CHECK: 0x0000001c => 0x00000028144#UPD-DWARF-CHECK: 0x00000027 => 0x00000033145#UPD-DWARF-CHECK: 0x00000032 => 0x0000003e146#UPD-DWARF-CHECK: ]147#UPD-DWARF-CHECK: ranges:148#UPD-DWARF-CHECK: 0x00000020: [DW_RLE_startx_length]:  0x0000000000000000, 0x0000000000000010149#UPD-DWARF-CHECK: 0x00000023: [DW_RLE_end_of_list  ]150#UPD-DWARF-CHECK: 0x00000024: [DW_RLE_startx_length]:  0x0000000000000001, 0x0000000000000010151#UPD-DWARF-CHECK: 0x00000027: [DW_RLE_end_of_list  ]152#UPD-DWARF-CHECK: 0x00000028: [DW_RLE_start_length ]:  0x0000000000001150, 0x0000000000000010153#UPD-DWARF-CHECK: 0x00000032: [DW_RLE_end_of_list  ]154#UPD-DWARF-CHECK: 0x00000033: [DW_RLE_start_length ]:  0x0000000000001160, 0x0000000000000010155#UPD-DWARF-CHECK: 0x0000003d: [DW_RLE_end_of_list  ]156#UPD-DWARF-CHECK: 0x0000003e: [DW_RLE_startx_length]:  0x0000000000000000, 0x0000000000000040157#UPD-DWARF-CHECK: 0x00000041: [DW_RLE_end_of_list  ]158 159## Following yaml description has Content of the .debug_rnglists exactly like above data ^^^^^^160--- !ELF161FileHeader:162  Class:    ELFCLASS64163  Data:     ELFDATA2LSB164  Type:     ET_REL165  Machine:  EM_X86_64166Sections:167  - Name:            .text168    Type:            SHT_PROGBITS169    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]170    Address:         0x1130171    Size:            0x70172  - Name:            .debug_rnglists173    Type:            SHT_PROGBITS174    Flags:           [  ]175    Content:        "3e000000050008000500000014000000180000001c000000270000003200000003001000030110000750110000000000001000076011000000000000100003004000"176DWARF:177  debug_abbrev:178    - Table:179      - Tag:      DW_TAG_compile_unit180        Children: DW_CHILDREN_yes181        Attributes:182          - Attribute: DW_AT_producer183            Form:      DW_FORM_string184          - Attribute: DW_AT_language185            Form:      DW_FORM_data2186          - Attribute: DW_AT_name187            Form:      DW_FORM_string188          - Attribute: DW_AT_low_pc189            Form:      DW_FORM_addrx190          - Attribute: DW_AT_ranges191            Form:      DW_FORM_rnglistx 192          - Attribute: DW_AT_rnglists_base193            Form:      DW_FORM_sec_offset194          - Attribute: DW_AT_addr_base195            Form:      DW_FORM_sec_offset196      - Tag:      DW_TAG_subprogram197        Children: DW_CHILDREN_yes198        Attributes:199          - Attribute: DW_AT_name200            Form:      DW_FORM_string201          - Attribute: DW_AT_low_pc202            Form:      DW_FORM_addrx 203          - Attribute: DW_AT_high_pc204            Form:      DW_FORM_data8205          - Attribute: DW_AT_type206            Form:      DW_FORM_ref4207      - Tag:      DW_TAG_lexical_block208        Children: DW_CHILDREN_no209        Attributes:210          - Attribute: DW_AT_ranges211            Form:      DW_FORM_rnglistx212      - Tag:      DW_TAG_lexical_block213        Children: DW_CHILDREN_no214        Attributes:215          - Attribute: DW_AT_ranges    216            Form:      DW_FORM_sec_offset 217      - Tag:      DW_TAG_base_type218        Children: DW_CHILDREN_no219        Attributes:220          - Attribute: DW_AT_name221            Form:      DW_FORM_string222  debug_info:223    - Version: 5224      UnitType:   DW_UT_compile225      Entries:226        - AbbrCode: 1227          Values:228            - CStr: by_hand229            - Value:  0x04230            - CStr: CU1231            - Value:  0x0232            - Value:  0x4233            - Value:  0xc234            - Value:  0x8235        - AbbrCode: 2236          Values:237            - CStr: foo1238            - Value: 0x00239            - Value: 0x10240            - Value: 0x83241        - AbbrCode: 3242          Values:243            - Value: 0x00244        - AbbrCode: 0245        - AbbrCode: 2246          Values:247            - CStr: foo2248            - Value: 0x01249            - Value: 0x10250            - Value: 0x83251        - AbbrCode: 3252          Values:253            - Value: 0x01254        - AbbrCode: 0255        - AbbrCode: 2256          Values:257            - CStr: foo3258            - Value: 0x02259            - Value: 0x10260            - Value: 0x83261        - AbbrCode: 4262          Values:263            - Value: 0x28264        - AbbrCode: 0265        - AbbrCode: 2266          Values:267            - CStr: foo4268            - Value: 0x03269            - Value: 0x10270            - Value: 0x83271        - AbbrCode: 4272          Values:273            - Value: 0x33274        - AbbrCode: 0275        - AbbrCode: 5276          Values:277            - CStr: int278        - AbbrCode: 0279  debug_addr:280    - Version: 5281      AddressSize: 0x08282      Entries:283        - Address: 0x1130284        - Address: 0x1140285        - Address: 0x1150286        - Address: 0x1160287...288