## 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: