## The test checks that we can parse and dump a CU index section that is
## compliant to the DWARFv5 standard.

# RUN: llvm-mc -triple x86_64-unknown-linux %s -filetype=obj -o - | \
# RUN:   llvm-dwarfdump -debug-cu-index - | \
# RUN:   FileCheck %s

# CHECK:      .debug_cu_index contents:
# CHECK-NEXT: version = 5, units = 1, slots = 2
# CHECK-EMPTY:
# CHECK-NEXT: Index Signature          INFO                     ABBREV                   LINE                     LOCLISTS                 STR_OFFSETS              MACRO                    RNGLISTS
# CHECK-NEXT: ----- ------------------ ------------------------ ------------------------ ------------------------ ------------------------ ------------------------ ------------------------ ------------------------
# CHECK-NEXT:     1 0x1100001122222222 [0x00001000, 0x00001010) [0x00002000, 0x00002020) [0x00003000, 0x00003030) [0x00004000, 0x00004040) [0x00005000, 0x00005050) [0x00006000, 0x00006060) [0x00007000, 0x00007070)

    .section .debug_cu_index, "", @progbits
## Header:
    .short 5            # Version
    .space 2            # Padding
    .long 7             # Section count
    .long 1             # Unit count
    .long 2             # Slot count
## Hash Table of Signatures:
    .quad 0x1100001122222222
    .quad 0
## Parallel Table of Indexes:
    .long 1
    .long 0
## Table of Section Offsets:
## Row 0:
    .long 1             # DW_SECT_INFO
    .long 3             # DW_SECT_ABBREV
    .long 4             # DW_SECT_LINE
    .long 5             # DW_SECT_LOCLISTS
    .long 6             # DW_SECT_STR_OFFSETS
    .long 7             # DW_SECT_MACRO
    .long 8             # DW_SECT_RNGLISTS
## Row 1:
    .long 0x1000        # Offset in .debug_info.dwo
    .long 0x2000        # Offset in .debug_abbrev.dwo
    .long 0x3000        # Offset in .debug_line.dwo
    .long 0x4000        # Offset in .debug_loclists.dwo
    .long 0x5000        # Offset in .debug_str_offsets.dwo
    .long 0x6000        # Offset in .debug_macro.dwo
    .long 0x7000        # Offset in .debug_rnglists.dwo
## Table of Section Sizes:
    .long 0x10          # Size in .debug_info.dwo
    .long 0x20          # Size in .debug_abbrev.dwo
    .long 0x30          # Size in .debug_line.dwo
    .long 0x40          # Size in .debug_loclists.dwo
    .long 0x50          # Size in .debug_str_offsets.dwo
    .long 0x60          # Size in .debug_macro.dwo
    .long 0x70          # Size in .debug_rnglists.dwo
