# RUN: llvm-mc %s -filetype obj -triple x86_64-linux-gnu -o - \
# RUN: | not llvm-dwarfdump -v -verify - 2>&1 \
# RUN: | FileCheck %s --implicit-check-not=error --implicit-check-not=warning
# CHECK: Verifying dwo Units...
# CHECK: error: Compilation unit root DIE is not a unit DIE: DW_TAG_null.
# CHECK: error: Compilation unit type (DW_UT_split_compile) and root DIE (DW_TAG_null) do not match.
# CHECK: error: Unsupported DW_AT_location encoding: DW_FORM_data1
# FIXME: This should read "type unit" or just "unit" to be correct for this case/in general
# CHECK: error: DIE has DW_AT_decl_file that references a file with index 1 and the compile unit has no line table
# CHECK: error: Aggregated error counts:
# CHECK: error: Compilation unit root DIE is not a unit DIE occurred 1 time(s).
# CHECK: error: File index in DW_AT_decl_file reference CU with no line table occurred 1 time(s).
# CHECK: error: Invalid DW_AT_location occurred 1 time(s).
# CHECK: error: Mismatched unit type occurred 1 time(s).
# CHECK: Errors detected.
.section .debug_info.dwo,"e",@progbits
.long .Ldebug_info_dwo_end1-.Ldebug_info_dwo_start1 # Length of Unit
.Ldebug_info_dwo_start1:
.short 5 # DWARF version number
.byte 5 # DWARF Unit Type
.byte 8 # Address Size (in bytes)
.long 0 # Offset Into Abbrev. Section
.quad 1 # DWO ID
.quad 0
.Ldebug_info_dwo_end1:
.long .Ldebug_info_dwo_end2-.Ldebug_info_dwo_start2 # Length of Unit
.Ldebug_info_dwo_start2:
.short 5 # DWARF version number
.byte 5 # DWARF Unit Type
.byte 8 # Address Size (in bytes)
.long 0 # Offset Into Abbrev. Section
.quad 2 # DWO ID
.byte 1 # Abbrev [1] DW_TAG_compile_unit
.byte 0 # DW_AT_decl_file
.byte 0 # DW_AT_location
.Ldebug_info_dwo_end2:
.Ldebug_info_dwo_prestart3:
.long .Ldebug_info_dwo_end3-.Ldebug_info_dwo_start3 # Length of Unit
.Ldebug_info_dwo_start3:
.short 5 # DWARF version number
.byte 6 # DWARF Unit Type
.byte 8 # Address Size (in bytes)
.long 0 # Offset Into Abbrev. Section
.quad 3 # Type Signature
.long .Ldebug_info_dwo_die3-.Ldebug_info_dwo_prestart3 # Type DIE Offset
.Ldebug_info_dwo_die3:
.byte 2 # Abbrev [2] DW_TAG_type_unit
.byte 1 # DW_AT_decl_file
.Ldebug_info_dwo_end3:
.Ldebug_info_dwo_prestart4:
.long .Ldebug_info_dwo_end4-.Ldebug_info_dwo_start4 # Length of Unit
.Ldebug_info_dwo_start4:
.short 5 # DWARF version number
.byte 6 # DWARF Unit Type
.byte 8 # Address Size (in bytes)
.long 0 # Offset Into Abbrev. Section
.quad 4 # Type Signature
.long .Ldebug_info_dwo_die4-.Ldebug_info_dwo_prestart4 # Type DIE Offset
.Ldebug_info_dwo_die4:
.byte 3 # Abbrev [3] DW_TAG_type_unit
.long 0 # DW_AT_stmt_list
.byte 0 # DW_AT_decl_file
.Ldebug_info_dwo_end4:
.long .Ldebug_info_dwo_end5-.Ldebug_info_dwo_start5 # Length of Unit
.Ldebug_info_dwo_start5:
.short 5 # DWARF version number
.byte 5 # DWARF Unit Type
.byte 8 # Address Size (in bytes)
.long 0 # Offset Into Abbrev. Section
.quad 2 # DWO ID
.byte 4 # Abbrev [1] DW_TAG_compile_unit
.uleb128 0 # DW_AT_location
.Ldebug_info_dwo_end5:
.section .debug_abbrev.dwo,"e",@progbits
.byte 1 # Abbreviation Code
.byte 17 # DW_TAG_compile_unit
.byte 0 # DW_CHILDREN_no
.byte 58 # DW_AT_decl_file
.byte 11 # DW_FORM_data1
.byte 2 # DW_AT_location
.byte 11 # DW_FORM_data1
.byte 0 # EOM(1)
.byte 0 # EOM(2)
.byte 2 # Abbreviation Code
.byte 65 # DW_TAG_type_unit
.byte 0 # DW_CHILDREN_no
.byte 58 # DW_AT_decl_file
.byte 11 # DW_FORM_data1
.byte 0 # EOM(1)
.byte 0 # EOM(2)
.byte 3 # Abbreviation Code
.byte 65 # DW_TAG_type_unit
.byte 0 # DW_CHILDREN_no
.byte 16 # DW_AT_stmt_list
.byte 23 # DW_FORM_sec_offset
.byte 58 # DW_AT_decl_file
.byte 11 # DW_FORM_data1
.byte 0 # EOM(1)
.byte 0 # EOM(2)
.byte 4 # Abbreviation Code
.byte 17 # DW_TAG_compile_unit
.byte 0 # DW_CHILDREN_no
.byte 2 # DW_AT_location
.byte 34 # DW_FORM_loclistx
.byte 0 # EOM(1)
.byte 0 # EOM(2)
.byte 0 # EOM(3)
.section .debug_line.dwo,"e",@progbits
.Ltmp2:
.long .Ldebug_line_end0-.Ldebug_line_start0 # unit length
.Ldebug_line_start0:
.short 5
.byte 8
.byte 0
.long .Lprologue_end0-.Lprologue_start0
.Lprologue_start0:
.byte 1
.byte 1
.byte 1
.byte -5
.byte 14
.byte 1
.byte 1
.byte 1
.byte 8
.byte 1
.ascii "/usr/local/google/home/blaikie/dev/scratch"
.byte 0
.byte 3
.byte 1
.byte 8
.byte 2
.byte 15
.byte 5
.byte 30
.byte 1
.ascii "test.cpp"
.byte 0
.byte 0
.byte 0x5e, 0xc4, 0x4d, 0x3b
.byte 0x78, 0xd0, 0x2a, 0x57
.byte 0xd2, 0x75, 0xc1, 0x22
.byte 0x36, 0xb7, 0x17, 0xbf
.Lprologue_end0:
.Ldebug_line_end0:
.section .debug_loclists.dwo,"e",@progbits
.long .Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length
.Ldebug_list_header_start0:
.short 5 # Version
.byte 8 # Address size
.byte 0 # Segment selector size
.long 1 # Offset entry count
.Lloclists_table_base0:
.long .Ldebug_loc0-.Lloclists_table_base0
.Ldebug_loc0:
.byte 1 # DW_LLE_base_addressx
.byte 0 # base address index
.byte 4 # DW_LLE_offset_pair
.uleb128 0 # starting offset
.uleb128 1 # ending offset
.byte 3 # Loc expr size
.byte 17 # DW_OP_consts
.byte 3 # 3
.byte 159 # DW_OP_stack_value
.byte 0 # DW_LLE_end_of_list
.Ldebug_list_header_end0: