brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.7 KiB · a051137 Raw
335 lines · plain
1## Test that DWARFv5 address attributes and address expression operands2## are handled correctly, specifically:3## 1. DW_FORM_addrx is correctly recognized and converted into the DW_FORM_addr4##    in --garbage-collection case or correctly preserved in --no-garbage-collection case.5## 2. DW_OP_addrx is correctly recognized and converted into the DW_OP_addr6##    in --garbage-collection case or correctly preserved in --no-garbage-collection case.7## 3. DW_OP_constx is correctly recognized and converted into the DW_OP_const[*]u8##    in --garbage-collection case or correctly preserved in --no-garbage-collection case.9 10# RUN: yaml2obj %s -o %t.o11 12# RUN: llvm-dwarfutil %t.o %t113# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s14# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix DWARF-CHECK15 16# RUN: llvm-dwarfutil --linker parallel %t.o %t117# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s18# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix DWARF-CHECK19 20# RUN: llvm-dwarfutil --no-garbage-collection %t.o %t121# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s22# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix UPD-DWARF-CHECK23 24# RUN: llvm-dwarfutil --linker parallel --no-garbage-collection %t.o %t125# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s26# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix UPD-DWARF-CHECK27 28# RUN: llvm-dwarfutil --no-garbage-collection --build-accelerator=DWARF %t.o %t129# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s30# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix UPD-DWARF-CHECK31 32# RUN: llvm-dwarfutil --linker parallel --no-garbage-collection --build-accelerator=DWARF %t.o %t133# RUN: llvm-dwarfdump -verify %t1 | FileCheck %s34# RUN: llvm-dwarfdump -a --verbose %t1 | FileCheck %s --check-prefix UPD-DWARF-CHECK35 36#CHECK: No errors.37 38#DWARF-CHECK: DW_TAG_compile_unit39#DWARF-CHECK:   DW_AT_name [DW_FORM_strx]  {{.*}}     "CU1"40#DWARF-CHECK:   DW_AT_low_pc [DW_FORM_addrx]      (indexed (00000000) address = 0x0000000000001130)41#DWARF-CHECK:   DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000060)42#DWARF-CHECK:   DW_AT_str_offsets_base [DW_FORM_sec_offset]43#DWARF-CHECK:   DW_TAG_subprogram44#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo1"45#DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000000) address = 0x0000000000001130)46#DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)47#DWARF-CHECK:   DW_TAG_subprogram48#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo2"49#DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000001) address = 0x0000000000001140)50#DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)51#DWARF-CHECK:   DW_TAG_subprogram52#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo3"53#DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000002) address = 0x0000000000001150)54#DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)55#DWARF-CHECK:   DW_TAG_subprogram56#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo4"57#DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]   (indexed (00000003) address = 0x0000000000001160)58#DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)59#DWARF-CHECK:   DW_TAG_subprogram60#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo5"61#DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]   (indexed (00000004) address = 0x0000000000001170)62#DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)63#DWARF-CHECK:   DW_TAG_subprogram64#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo6"65#DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]   (indexed (00000005) address = 0x0000000000001180)66#DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)67#DWARF-CHECK:   DW_TAG_variable68#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "var1"69#DWARF-CHECK:     DW_AT_location [DW_FORM_exprloc] (DW_OP_addr 0x2000)70#DWARF-CHECK:   DW_TAG_variable71#DWARF-CHECK:     DW_AT_name  [DW_FORM_strx] {{.*}}   "var2"72#DWARF-CHECK:     DW_AT_location [DW_FORM_exprloc] (DW_OP_addr 0x2000)73#DWARF-CHECK:   DW_TAG_variable74#DWARF-CHECK:     DW_AT_name [DW_FORM_strx]  {{.*}}   "var3"75#DWARF-CHECK:     DW_AT_location [DW_FORM_exprloc] (DW_OP_const8u 0x2000, DW_OP_form_tls_address)76#DWARF-CHECK:   DW_TAG_variable77#DWARF-CHECK:     DW_AT_name [DW_FORM_strx]  {{.*}}   "var4"78#DWARF-CHECK:     DW_AT_location [DW_FORM_exprloc] (DW_OP_const8u 0x2000, DW_OP_form_tls_address)79#DWARF-CHECK=NOT: .debug_addr contents:80 81#UPD-DWARF-CHECK: DW_TAG_compile_unit82#UPD-DWARF-CHECK:   DW_AT_name {{.*}}"CU1"83#UPD-DWARF-CHECK:   DW_AT_low_pc [DW_FORM_addrx]   (indexed (00000000) address = 0x0000000000001130)84#UPD-DWARF-CHECK:   DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000060)85#UPD-DWARF-CHECK:   DW_TAG_subprogram86#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"foo1"87#UPD-DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]   (indexed (00000000) address = 0x0000000000001130)88#UPD-DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)89#UPD-DWARF-CHECK:   DW_TAG_subprogram90#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"foo2"91#UPD-DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]   (indexed (00000001) address = 0x0000000000001140)92#UPD-DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)93#UPD-DWARF-CHECK:   DW_TAG_subprogram94#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"foo3"95#UPD-DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx]   (indexed (00000002) address = 0x0000000000001150)96#UPD-DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)97#UPD-DWARF-CHECK:   DW_TAG_subprogram98#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"foo4"99#UPD-DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx1]   (indexed (00000003) address = 0x0000000000001160)100#UPD-DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)101#UPD-DWARF-CHECK:   DW_TAG_subprogram102#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"foo5"103#UPD-DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx2]   (indexed (00000004) address = 0x0000000000001170)104#UPD-DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)105#UPD-DWARF-CHECK:   DW_TAG_subprogram106#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"foo6"107#UPD-DWARF-CHECK:     DW_AT_low_pc [DW_FORM_addrx4]   (indexed (00000005) address = 0x0000000000001180)108#UPD-DWARF-CHECK:     DW_AT_high_pc [DW_FORM_data8]   (0x0000000000000010)109#UPD-DWARF-CHECK:   DW_TAG_variable110#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"var1"111#UPD-DWARF-CHECK:     DW_AT_location [DW_FORM_exprloc]        (DW_OP_addrx 0x6)112#UPD-DWARF-CHECK:   DW_TAG_variable113#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"var2"114#UPD-DWARF-CHECK:     DW_AT_location [DW_FORM_exprloc]        (DW_OP_addr 0x2000)115#UPD-DWARF-CHECK:   DW_TAG_variable116#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"var3"117#UPD-DWARF-CHECK:     DW_AT_location [DW_FORM_exprloc] (DW_OP_constx 0x6, DW_OP_form_tls_address)118#UPD-DWARF-CHECK:   DW_TAG_variable119#UPD-DWARF-CHECK:     DW_AT_name  {{.*}}"var4"120#UPD-DWARF-CHECK:     DW_AT_location [DW_FORM_exprloc] (DW_OP_const8u 0x2000, DW_OP_form_tls_address)121#UPD-DWARF-CHECK: .debug_addr contents:122#UPD-DWARF-CHECK: 0x00000000: Address table header: length = 0x0000003c, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00123#UPD-DWARF-CHECK: Addrs: [124#UPD-DWARF-CHECK: 0x0000000000001130125#UPD-DWARF-CHECK: 0x0000000000001140126#UPD-DWARF-CHECK: 0x0000000000001150127#UPD-DWARF-CHECK: 0x0000000000001160128#UPD-DWARF-CHECK: 0x0000000000001170129#UPD-DWARF-CHECK: 0x0000000000001180130#UPD-DWARF-CHECK: 0x0000000000002000131#UPD-DWARF-CHECK: ]132 133--- !ELF134FileHeader:135  Class:    ELFCLASS64136  Data:     ELFDATA2LSB137  Type:     ET_REL138  Machine:  EM_X86_64139Sections:140  - Name:            .text141    Type:            SHT_PROGBITS142    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]143    Address:         0x1130144    Size:            0x1000145DWARF:146  debug_abbrev:147    - Table:148      - Tag:      DW_TAG_compile_unit149        Children: DW_CHILDREN_yes150        Attributes:151          - Attribute: DW_AT_producer152            Form:      DW_FORM_string153          - Attribute: DW_AT_language154            Form:      DW_FORM_data2155          - Attribute: DW_AT_name156            Form:      DW_FORM_string157          - Attribute: DW_AT_low_pc158            Form:      DW_FORM_addrx159          - Attribute: DW_AT_high_pc160            Form:      DW_FORM_data8161          - Attribute: DW_AT_addr_base162            Form:      DW_FORM_sec_offset163      - Tag:      DW_TAG_subprogram164        Children: DW_CHILDREN_yes165        Attributes:166          - Attribute: DW_AT_name167            Form:      DW_FORM_string168          - Attribute: DW_AT_low_pc169            Form:      DW_FORM_addrx170          - Attribute: DW_AT_high_pc171            Form:      DW_FORM_data8172          - Attribute: DW_AT_type173            Form:      DW_FORM_ref4174      - Tag:      DW_TAG_subprogram175        Children: DW_CHILDREN_yes176        Attributes:177          - Attribute: DW_AT_name178            Form:      DW_FORM_string179          - Attribute: DW_AT_low_pc180            Form:      DW_FORM_addrx1181          - Attribute: DW_AT_high_pc182            Form:      DW_FORM_data8183          - Attribute: DW_AT_type184            Form:      DW_FORM_ref4185      - Tag:      DW_TAG_subprogram186        Children: DW_CHILDREN_yes187        Attributes:188          - Attribute: DW_AT_name189            Form:      DW_FORM_string190          - Attribute: DW_AT_low_pc191            Form:      DW_FORM_addrx2192          - Attribute: DW_AT_high_pc193            Form:      DW_FORM_data8194          - Attribute: DW_AT_type195            Form:      DW_FORM_ref4196      - 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_addrx4203          - Attribute: DW_AT_high_pc204            Form:      DW_FORM_data8205          - Attribute: DW_AT_type206            Form:      DW_FORM_ref4207      - Tag:      DW_TAG_base_type208        Children: DW_CHILDREN_no209        Attributes:210          - Attribute: DW_AT_name211            Form:      DW_FORM_string212      - Tag:      DW_TAG_variable213        Children: DW_CHILDREN_no214        Attributes:215          - Attribute: DW_AT_name216            Form:      DW_FORM_string217          - Attribute: DW_AT_type218            Form:      DW_FORM_ref4219          - Attribute: DW_AT_location220            Form:      DW_FORM_exprloc221  debug_info:222    - Version: 5223      UnitType:   DW_UT_compile224      Entries:225        - AbbrCode: 1226          Values:227            - CStr: by_hand228            - Value:  0x04229            - CStr: CU1230            - Value:  0x0231            - Value:  0x60232            - Value:  0x8233        - AbbrCode: 2234          Values:235            - CStr: foo1236            - Value: 0x0237            - Value: 0x10238            - Value: 0xa4239        - AbbrCode: 0240        - AbbrCode: 2241          Values:242            - CStr: foo2243            - Value: 0x01244            - Value: 0x10245            - Value: 0xa4246        - AbbrCode: 0247        - AbbrCode: 2248          Values:249            - CStr: foo3250            - Value: 0x02251            - Value: 0x10252            - Value: 0xa4253        - AbbrCode: 0254        - AbbrCode: 3255          Values:256            - CStr: foo4257            - Value: 0x03258            - Value: 0x10259            - Value: 0xa4260        - AbbrCode: 0261        - AbbrCode: 4262          Values:263            - CStr: foo5264            - Value: 0x04265            - Value: 0x10266            - Value: 0xa4267        - AbbrCode: 0268        - AbbrCode: 5269          Values:270            - CStr: foo6271            - Value: 0x05272            - Value: 0x10273            - Value: 0xa4274        - AbbrCode: 0275        - AbbrCode: 6276          Values:277            - CStr: int278        - AbbrCode: 7279          Values:280            - CStr: var1281            - Value: 0xa4282            - BlockData:283                - 0xa1284                - 0x6285        - AbbrCode: 7286          Values:287            - CStr: var2288            - Value: 0xa4289            - BlockData:290                - 0x03291                - 0x00292                - 0x20293                - 0x00294                - 0x00295                - 0x00296                - 0x00297                - 0x00298                - 0x00299        - AbbrCode: 7300          Values:301            - CStr: var3302            - Value: 0xa4303            - BlockData:304                - 0xa2305                - 0x6306                - 0x9b307        - AbbrCode: 7308          Values:309            - CStr: var4310            - Value: 0xa4311            - BlockData:312                - 0x0e313                - 0x00314                - 0x20315                - 0x00316                - 0x00317                - 0x00318                - 0x00319                - 0x00320                - 0x00321                - 0x9b322        - AbbrCode: 0323  debug_addr:324    - Version: 5325      AddressSize: 0x08326      Entries:327        - Address: 0x1130328        - Address: 0x1140329        - Address: 0x1150330        - Address: 0x1160331        - Address: 0x1170332        - Address: 0x1180333        - Address: 0x2000334...335