xref: /llvm-project/llvm/test/tools/llvm-dwarfdump/X86/verify_split_cu.s (revision bfdd78233fba4623366bbef5631ff0ebab29c42e)
1# RUN: llvm-mc %s -filetype obj -triple x86_64-linux-gnu -o - \
2# RUN: | not llvm-dwarfdump -v -verify - 2>&1 \
3# RUN: | FileCheck %s --implicit-check-not=error --implicit-check-not=warning
4
5# CHECK: Verifying dwo Units...
6# CHECK: error: Compilation unit root DIE is not a unit DIE: DW_TAG_null.
7# CHECK: error: Compilation unit type (DW_UT_split_compile) and root DIE (DW_TAG_null) do not match.
8# CHECK: error: Unsupported DW_AT_location encoding: DW_FORM_data1
9# FIXME: This should read "type unit" or just "unit" to be correct for this case/in general
10# CHECK: error: DIE has DW_AT_decl_file that references a file with index 1 and the compile unit has no line table
11# CHECK: error: Aggregated error counts:
12# CHECK: error: Compilation unit root DIE is not a unit DIE occurred 1 time(s).
13# CHECK: error: File index in DW_AT_decl_file reference CU with no line table occurred 1 time(s).
14# CHECK: error: Invalid DW_AT_location occurred 1 time(s).
15# CHECK: error: Mismatched unit type occurred 1 time(s).
16# CHECK: Errors detected.
17	.section	.debug_info.dwo,"e",@progbits
18	.long	.Ldebug_info_dwo_end1-.Ldebug_info_dwo_start1 # Length of Unit
19.Ldebug_info_dwo_start1:
20	.short	5                               # DWARF version number
21	.byte	5                               # DWARF Unit Type
22	.byte	8                               # Address Size (in bytes)
23	.long	0                               # Offset Into Abbrev. Section
24	.quad	1                               # DWO ID
25	.quad   0
26.Ldebug_info_dwo_end1:
27	.long	.Ldebug_info_dwo_end2-.Ldebug_info_dwo_start2 # Length of Unit
28.Ldebug_info_dwo_start2:
29	.short	5                               # DWARF version number
30	.byte	5                               # DWARF Unit Type
31	.byte	8                               # Address Size (in bytes)
32	.long	0                               # Offset Into Abbrev. Section
33	.quad	2                               # DWO ID
34	.byte	1                               # Abbrev [1] DW_TAG_compile_unit
35	.byte	0                               # DW_AT_decl_file
36	.byte	0                               # DW_AT_location
37.Ldebug_info_dwo_end2:
38.Ldebug_info_dwo_prestart3:
39	.long	.Ldebug_info_dwo_end3-.Ldebug_info_dwo_start3 # Length of Unit
40.Ldebug_info_dwo_start3:
41	.short	5                               # DWARF version number
42	.byte	6                               # DWARF Unit Type
43	.byte	8                               # Address Size (in bytes)
44	.long	0                               # Offset Into Abbrev. Section
45	.quad	3                               # Type Signature
46	.long	.Ldebug_info_dwo_die3-.Ldebug_info_dwo_prestart3 # Type DIE Offset
47.Ldebug_info_dwo_die3:
48	.byte	2                               # Abbrev [2] DW_TAG_type_unit
49	.byte	1                               # DW_AT_decl_file
50.Ldebug_info_dwo_end3:
51.Ldebug_info_dwo_prestart4:
52	.long	.Ldebug_info_dwo_end4-.Ldebug_info_dwo_start4 # Length of Unit
53.Ldebug_info_dwo_start4:
54	.short	5                               # DWARF version number
55	.byte	6                               # DWARF Unit Type
56	.byte	8                               # Address Size (in bytes)
57	.long	0                               # Offset Into Abbrev. Section
58	.quad	4                               # Type Signature
59	.long	.Ldebug_info_dwo_die4-.Ldebug_info_dwo_prestart4 # Type DIE Offset
60.Ldebug_info_dwo_die4:
61	.byte	3                               # Abbrev [3] DW_TAG_type_unit
62	.long	0                               # DW_AT_stmt_list
63	.byte	0                               # DW_AT_decl_file
64.Ldebug_info_dwo_end4:
65	.long	.Ldebug_info_dwo_end5-.Ldebug_info_dwo_start5 # Length of Unit
66.Ldebug_info_dwo_start5:
67	.short	5                               # DWARF version number
68	.byte	5                               # DWARF Unit Type
69	.byte	8                               # Address Size (in bytes)
70	.long	0                               # Offset Into Abbrev. Section
71	.quad	2                               # DWO ID
72	.byte	4                               # Abbrev [1] DW_TAG_compile_unit
73	.uleb128	0                       # DW_AT_location
74.Ldebug_info_dwo_end5:
75	.section	.debug_abbrev.dwo,"e",@progbits
76	.byte	1                               # Abbreviation Code
77	.byte	17                              # DW_TAG_compile_unit
78	.byte	0                               # DW_CHILDREN_no
79	.byte	58                              # DW_AT_decl_file
80	.byte	11                              # DW_FORM_data1
81	.byte	2                               # DW_AT_location
82	.byte	11                              # DW_FORM_data1
83	.byte	0                               # EOM(1)
84	.byte	0                               # EOM(2)
85	.byte	2                               # Abbreviation Code
86	.byte	65                              # DW_TAG_type_unit
87	.byte	0                               # DW_CHILDREN_no
88	.byte	58                              # DW_AT_decl_file
89	.byte	11                              # DW_FORM_data1
90	.byte	0                               # EOM(1)
91	.byte	0                               # EOM(2)
92	.byte	3                               # Abbreviation Code
93	.byte	65                              # DW_TAG_type_unit
94	.byte	0                               # DW_CHILDREN_no
95	.byte	16                              # DW_AT_stmt_list
96	.byte	23                              # DW_FORM_sec_offset
97	.byte	58                              # DW_AT_decl_file
98	.byte	11                              # DW_FORM_data1
99	.byte	0                               # EOM(1)
100	.byte	0                               # EOM(2)
101	.byte	4                               # Abbreviation Code
102	.byte	17                              # DW_TAG_compile_unit
103	.byte	0                               # DW_CHILDREN_no
104	.byte	2                               # DW_AT_location
105	.byte	34                              # DW_FORM_loclistx
106	.byte	0                               # EOM(1)
107	.byte	0                               # EOM(2)
108	.byte	0                               # EOM(3)
109	.section	.debug_line.dwo,"e",@progbits
110.Ltmp2:
111	.long	.Ldebug_line_end0-.Ldebug_line_start0 # unit length
112.Ldebug_line_start0:
113	.short	5
114	.byte	8
115	.byte	0
116	.long	.Lprologue_end0-.Lprologue_start0
117.Lprologue_start0:
118	.byte	1
119	.byte	1
120	.byte	1
121	.byte	-5
122	.byte	14
123	.byte	1
124	.byte	1
125	.byte	1
126	.byte	8
127	.byte	1
128	.ascii	"/usr/local/google/home/blaikie/dev/scratch"
129	.byte	0
130	.byte	3
131	.byte	1
132	.byte	8
133	.byte	2
134	.byte	15
135	.byte	5
136	.byte	30
137	.byte	1
138	.ascii	"test.cpp"
139	.byte	0
140	.byte	0
141	.byte	0x5e, 0xc4, 0x4d, 0x3b
142	.byte	0x78, 0xd0, 0x2a, 0x57
143	.byte	0xd2, 0x75, 0xc1, 0x22
144	.byte	0x36, 0xb7, 0x17, 0xbf
145.Lprologue_end0:
146.Ldebug_line_end0:
147	.section	.debug_loclists.dwo,"e",@progbits
148	.long	.Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length
149.Ldebug_list_header_start0:
150	.short	5                               # Version
151	.byte	8                               # Address size
152	.byte	0                               # Segment selector size
153	.long	1                               # Offset entry count
154.Lloclists_table_base0:
155	.long	.Ldebug_loc0-.Lloclists_table_base0
156.Ldebug_loc0:
157	.byte	1                               # DW_LLE_base_addressx
158	.byte	0                               #   base address index
159	.byte	4                               # DW_LLE_offset_pair
160	.uleb128 0                              #   starting offset
161	.uleb128 1                              #   ending offset
162	.byte	3                               # Loc expr size
163	.byte	17                              # DW_OP_consts
164	.byte	3                               # 3
165	.byte	159                             # DW_OP_stack_value
166	.byte	0                               # DW_LLE_end_of_list
167.Ldebug_list_header_end0:
168