## This tests dumping a .debug_str_offsets.dwo section which is referenced by ## DWARF64 pre-v5 units and dumping attributes in such units which use the ## DW_FORM_strx form. # RUN: llvm-mc -triple x86_64 %s -filetype=obj -o - | \ # RUN: llvm-dwarfdump -v - | \ # RUN: FileCheck %s # CHECK: .debug_info.dwo contents: # CHECK: Compile Unit: # CHECK: DW_TAG_compile_unit [1] # CHECK-NEXT: DW_AT_name [DW_FORM_strx] (indexed (00000000) string = "Compilation Unit") # CHECK: .debug_types.dwo contents: # CHECK: Type Unit: # CHECK: DW_TAG_type_unit [2] * # CHECK-NEXT: DW_AT_name [DW_FORM_strx] (indexed (00000001) string = "Type Unit") # CHECK: DW_TAG_structure_type [3] # CHECK-NEXT: DW_AT_name [DW_FORM_strx] (indexed (00000002) string = "Structure") # CHECK: .debug_str.dwo contents: # CHECK-NEXT: 0x00000000: "Compilation Unit" # CHECK-NEXT: 0x00000011: "Type Unit" # CHECK-NEXT: 0x0000001b: "Structure" # CHECK: .debug_str_offsets.dwo contents: # CHECK-NEXT: 0x00000000: Contribution size = 24, Format = DWARF64, Version = 4 # CHECK-NEXT: 0x00000000: 0000000000000000 "Compilation Unit" # CHECK-NEXT: 0x00000008: 0000000000000011 "Type Unit" # CHECK-NEXT: 0x00000010: 000000000000001b "Structure" .section .debug_str.dwo, "MSe", @progbits, 1 .LStr0: .asciz "Compilation Unit" .LStr1: .asciz "Type Unit" .LStr2: .asciz "Structure" .section .debug_str_offsets.dwo, "e", @progbits .quad .LStr0-.debug_str.dwo # 0: "Compilation Unit" .quad .LStr1-.debug_str.dwo # 1: "Type Unit" .quad .LStr2-.debug_str.dwo # 2: "Structure" .section .debug_abbrev.dwo, "e", @progbits .uleb128 0x01 # Abbrev code .uleb128 0x11 # DW_TAG_compile_unit .byte 0x00 # DW_CHILDREN_no .uleb128 0x03 # DW_AT_name .uleb128 0x1a # DW_FORM_strx .byte 0x00 # EOM(1) .byte 0x00 # EOM(2) .uleb128 0x02 # Abbrev code .uleb128 0x41 # DW_TAG_type_unit .byte 0x01 # DW_CHILDREN_yes .uleb128 0x03 # DW_AT_name .uleb128 0x1a # DW_FORM_strx .byte 0x00 # EOM(1) .byte 0x00 # EOM(2) .uleb128 0x03 # Abbrev code .uleb128 0x13 # DW_TAG_structure_type .byte 0x00 # DW_CHILDREN_no (no members) .uleb128 0x03 # DW_AT_name .uleb128 0x1a # DW_FORM_strx .byte 0x00 # EOM(1) .byte 0x00 # EOM(2) .byte 0x00 # EOM(3) .section .debug_info.dwo, "e", @progbits .long 0xffffffff # DWARF64 mark .quad .LCUEnd-.LCUVer # Length .LCUVer: .short 4 # Version .quad 0 # Abbrev. offset .byte 8 # Address size .uleb128 1 # Abbrev [1] DW_TAG_compile_unit .uleb128 0 # DW_AT_name ("Compilation Unit") .LCUEnd: .section .debug_types.dwo, "e", @progbits .LTU: .long 0xffffffff # DWARF64 mark .quad .LTUEnd-.LTUVer # Length .LTUVer: .short 4 # Version .quad 0 # Abbrev. offset .byte 8 # Address size .quad 0x11110022ffffffff # Type Signature .quad .LTUType-.LTU # Type offset .uleb128 2 # Abbrev [2] DW_TAG_type_unit .uleb128 1 # DW_AT_name ("Type Unit") .LTUType: .uleb128 3 # Abbrev [3] DW_TAG_structure_type .uleb128 2 # DW_AT_name ("Structure") .LTUEnd: