llvm/llvm/test/tools/llvm-dwarfdump/X86/verify_split_cu.s

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