xref: /llvm-project/bolt/test/X86/dwarf5-dwarf4-monolithic.test (revision 6aad62cf5b7f91f4b02266cf72469e2c8e28dbef)
1e159abdbSAlexander Yermolovich# REQUIRES: system-linux
2e159abdbSAlexander Yermolovich
3e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-main.s -o %tmain.o
4e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-helper0.s -o %t0.o
5e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-helper1.s -o %t1.o
6e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-helper2.s -o %t2.o
7e159abdbSAlexander Yermolovich# RUN: %clang %cflags -dwarf-5 %tmain.o %t0.o %t1.o %t2.o -o %t.exe -Wl,-q
8*6aad62cfSSayhaan Siddiqui# RUN: llvm-bolt --always-convert-to-ranges %t.exe -o %t.bolt --update-debug-sections --debug-thread-count=4 --cu-processing-batch-size=4
9e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.exe | FileCheck --check-prefix=PRECHECK %s
10f292fff7SAmir Ayupov# RUN: llvm-dwarfdump --show-form --verbose --debug-line %t.exe > %t_line.txt
11e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-addr %t.bolt > %t.txt
12e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.bolt >> %t.txt
13e159abdbSAlexander Yermolovich# RUN: cat %t.txt | FileCheck --check-prefix=POSTCHECK %s
14f292fff7SAmir Ayupov# RUN: llvm-dwarfdump --show-form --verbose --debug-line %t.bolt >> %t_line.txt
15f292fff7SAmir Ayupov# RUN: FileCheck --check-prefix=CHECK-LINE %s --input-file %t_line.txt
16e159abdbSAlexander Yermolovich
17e159abdbSAlexander Yermolovich
1811791ae7SSayhaan Siddiqui## Check BOLT handles monolithic mix of DWARF4 and DWARF5.
19e159abdbSAlexander Yermolovich
20e159abdbSAlexander Yermolovich# main.cpp
21e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0005
22e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_compile_unit [1] *
23e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_producer [DW_FORM_strx1]  (indexed (00000000)
24e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_language
25e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name
26e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000008)
27e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list [DW_FORM_sec_offset]  (0x00000000)
28e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir
29e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc
30e159abdbSAlexander Yermolovich# PRECHECK: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1)
31e159abdbSAlexander Yermolovich# PRECHECK-NEXT: [0x
32e159abdbSAlexander Yermolovich# PRECHECK-NEXT: [0x
33e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset]  (0x00000008)
34e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset]  (0x0000000c)
35e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_loclists_base [DW_FORM_sec_offset]  (0x0000000c)
36e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [2] * (0x0000000c)
37e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000000)
38e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4]
39e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [8]
40e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000001)
41e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4]
42e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_formal_parameter [9]
43e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x00000018
44e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_formal_parameter [9]
45e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x00000028
46e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable
47e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x2) loclist = 0x00000038
48e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [12]
49e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin
50e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000014
51e159abdbSAlexander Yermolovich
52e159abdbSAlexander Yermolovich# helper0.cpp
53e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0004
54e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_compile_unit
55e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_producer
56e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_language
57e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name
58e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list
59e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir
60e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
61e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc
62e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [7]
63e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
64e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc
65e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [9]
66e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_sec_offset] (0x00000000:
67e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [10]
68e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin
69e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
70e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc
71e159abdbSAlexander Yermolovich
72e159abdbSAlexander Yermolovich# helper1.cpp
73e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0005
74e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_compile_unit [1] *
75e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_producer
76e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_language
77e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name
78e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000058)
79e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list
80e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir
81e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000001)
82e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4]
83e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset]  (0x00000038)
84e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_loclists_base [DW_FORM_sec_offset]  (0x00000051)
85e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [2]
86e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name
87e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_type
88e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_external
89e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_decl_file
90e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_decl_line
91e159abdbSAlexander Yermolovich# PRECHECK: DW_AT_location [DW_FORM_exprloc]  (DW_OP_addrx 0x0)
92e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [7]
93e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000001)
94e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4]
95e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [9]
96e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0)
97e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [10]
98e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin
99e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000001)
100e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4]
101e159abdbSAlexander Yermolovich
102e159abdbSAlexander Yermolovich# helper2.cpp
103e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0004
104e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_compile_unit [1] *
105e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_producer
106e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_language
107e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name
108e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list
109e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir
110e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
111e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4]
112e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [7]
113e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
114e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4]
115e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [9]
116e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_sec_offset]
117e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [10]
118e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin
119e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
120e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc
121e159abdbSAlexander Yermolovich
122e159abdbSAlexander Yermolovich# Checking debug line.
123e159abdbSAlexander Yermolovich
124f292fff7SAmir Ayupov# CHECK-LINE: debug_line[
125f292fff7SAmir Ayupov# CHECK-LINE: version: 5
126f292fff7SAmir Ayupov# CHECK-LINE: include_directories[  0] =  .debug_line_str[0x[[#%.8x,TEST_DEBUG_LINE:]]] = "/test"
127f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[  0]:
128f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name:  .debug_line_str[0x[[#%.8x,MAIN_DEBUG_LINE:]]] = "main.cpp"
129f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 0
130f292fff7SAmir Ayupov# CHECK-LINE-NEXT: md5_checksum: e3a18fae8565a087d09d6076b542cdab
131e159abdbSAlexander Yermolovich
132f292fff7SAmir Ayupov# CHECK-LINE: debug_line[
133f292fff7SAmir Ayupov# CHECK-LINE: version: 4
134f292fff7SAmir Ayupov# CHECK-LINE: include_directories[  1] = "/test"
135f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[  1]:
136f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: "helper0.cpp"
137f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 1
138f292fff7SAmir Ayupov# CHECK-LINE-NEXT: mod_time:
139f292fff7SAmir Ayupov# CHECK-LINE-NEXT: length:
140e159abdbSAlexander Yermolovich
141f292fff7SAmir Ayupov# CHECK-LINE: debug_line[
142f292fff7SAmir Ayupov# CHECK-LINE: version: 5
143f292fff7SAmir Ayupov# CHECK-LINE: include_directories[  0] =  .debug_line_str[0x[[#TEST_DEBUG_LINE]]] = "/test"
144f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[  0]:
145f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name:  .debug_line_str[0x[[#%.8x,HELPER_DEBUG_LINE:]]] = "helper1.cpp"
146f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 0
147f292fff7SAmir Ayupov# CHECK-LINE-NEXT: md5_checksum: e6dbd773fdf80bfea332cdf8284cddce
148e159abdbSAlexander Yermolovich
149f292fff7SAmir Ayupov# CHECK-LINE: debug_line[
150f292fff7SAmir Ayupov# CHECK-LINE: version: 4
151f292fff7SAmir Ayupov# CHECK-LINE: include_directories[  1] = "/test"
152f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[  1]:
153f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: "helper2.cpp"
154f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 1
155f292fff7SAmir Ayupov# CHECK-LINE-NEXT: mod_time:
156f292fff7SAmir Ayupov# CHECK-LINE-NEXT: length:
157e159abdbSAlexander Yermolovich
158e159abdbSAlexander Yermolovich
159e159abdbSAlexander Yermolovich# POST BOLT.
160e159abdbSAlexander Yermolovich
161e159abdbSAlexander Yermolovich# POSTCHECK: Addrs: [
162e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR:]]
163e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR1:]]
164e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR2:]]
165e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR3:]]
166e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR4:]]
167e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR5:]]
168e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR6:]]
169e159abdbSAlexander Yermolovich
170e159abdbSAlexander Yermolovich# POSTCHECK: Addrs: [
171e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB:]]
172e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB1:]]
173e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB2:]]
174e159abdbSAlexander Yermolovich
175e159abdbSAlexander Yermolovich
176e159abdbSAlexander Yermolovich# main.cpp
177e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0005
178e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_compile_unit [1] *
179e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer [DW_FORM_strx1]  (indexed (00000000)
180e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language
181e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name
182e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000008)
183e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list [DW_FORM_sec_offset]  (0x00000000)
184e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir
185e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc
186e159abdbSAlexander Yermolovich# POSTCHECK: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0)
187e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR]], 0x[[#ADDR + 0x7]]
188efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x51]]
189e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset]  (0x00000008)
190e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset]  (0x0000000c)
191e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_loclists_base [DW_FORM_sec_offset]  (0x0000000c)
192e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_subprogram [2]
193e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist
194e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR]], 0x[[#ADDR + 0x7]]
195e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_subprogram [8]
196e22ff52cSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x2) rangelist = 0x00000029
197efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x51]]
198e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_formal_parameter [9]
199e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x00000018
200efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x22]]
201efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1 + 0x22]], 0x[[#ADDR1 + 0x51]]
202e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_formal_parameter [9]
203124ca880SAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x00000028
204efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x27]]
205efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1 + 0x27]], 0x[[#ADDR1 + 0x51]]
206e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_variable
207124ca880SAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x2) loclist = 0x00000038
208efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR2]], 0x[[#ADDR2 + 0x6]]
209efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR2 + 0x6]], 0x[[#ADDR2 + 0x46]]
210e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_inlined_subroutine [12]
211e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin
212e22ff52cSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x3) rangelist =  0x0000002d
213efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR3]], 0x[[#ADDR3 + 0x4]]
214efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR3 + 0x10]], 0x[[#ADDR3 + 0x16]]
215e159abdbSAlexander Yermolovich
216e159abdbSAlexander Yermolovich# helper0.cpp
217e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0004
218e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_compile_unit
219e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer
220e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language
221e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name
222e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list
223e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir
224e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
225e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
226e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
22787fb0ea2SRui Zhong# POSTCHECK: DW_TAG_subprogram [22]
228e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
229e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
23087fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [24]
231e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_sec_offset]
232e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
233e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
23487fb0ea2SRui Zhong# POSTCHECK: DW_TAG_inlined_subroutine [25]
235e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin
236e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
237e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
238e159abdbSAlexander Yermolovich
239e159abdbSAlexander Yermolovich# helper1.cpp
240e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0005
24187fb0ea2SRui Zhong# POSTCHECK: DW_TAG_compile_unit [26] *
242e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer
243e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language
244e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name
245e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000058)
246e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list
247e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir
248e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000001)
249e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0)
250e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB]], 0x[[#ADDRB + 0x4]]
251e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset]
252e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_loclists_base [DW_FORM_sec_offset]
253e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset]
25487fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [27]
255e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name
256e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_type
257e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_external
258e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_decl_file
259e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_decl_line
260e159abdbSAlexander Yermolovich# POSTCHECK: DW_AT_location [DW_FORM_exprloc]  (DW_OP_addrx 0x2)
26187fb0ea2SRui Zhong# POSTCHECK: DW_TAG_subprogram [29]
262e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1)
263e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB]], 0x[[#ADDRB + 0x4]]
26487fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [10]
265e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0)
266e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB]], 0x[[#ADDRB + 0x3]]
267124ca880SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB + 0x3]], 0x[[#ADDRB + 0x4]]
268efb8a1c9SAlexander Yermolovich# POSTCHECK: DW_TAG_inlined_subroutine
269e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin
270e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x2) rangelist
271e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB]], 0x[[#ADDRB + 0x3]]
272e159abdbSAlexander Yermolovich
273e159abdbSAlexander Yermolovich# helper2.cpp
274e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0004
27587fb0ea2SRui Zhong# POSTCHECK: DW_TAG_compile_unit [17] *
276e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer
277e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language
278e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name
279e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list
280e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir
281e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
282e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
283e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
28487fb0ea2SRui Zhong# POSTCHECK: DW_TAG_subprogram [22]
285e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
286e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
28787fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [24]
288e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_sec_offset]
289e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
290e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
29187fb0ea2SRui Zhong# POSTCHECK: DW_TAG_inlined_subroutine [25]
292e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin
293e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
294e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
295e159abdbSAlexander Yermolovich
296e159abdbSAlexander Yermolovich
297e159abdbSAlexander Yermolovich# Checking debug line.
298e159abdbSAlexander Yermolovich
299f292fff7SAmir Ayupov# CHECK-LINE: debug_line[
300f292fff7SAmir Ayupov# CHECK-LINE: version: 5
301f292fff7SAmir Ayupov# CHECK-LINE: include_directories[  0] =  .debug_line_str[0x[[#TEST_DEBUG_LINE]]] = "/test"
302f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[  0]:
303f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name:  .debug_line_str[0x[[#MAIN_DEBUG_LINE]]] = "main.cpp"
304f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 0
305f292fff7SAmir Ayupov# CHECK-LINE-NEXT: md5_checksum: e3a18fae8565a087d09d6076b542cdab
306e159abdbSAlexander Yermolovich
307f292fff7SAmir Ayupov# CHECK-LINE: debug_line[
308f292fff7SAmir Ayupov# CHECK-LINE: version: 4
309f292fff7SAmir Ayupov# CHECK-LINE: include_directories[  1] = "/test"
310f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[  1]:
311f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: "helper0.cpp"
312f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 1
313f292fff7SAmir Ayupov# CHECK-LINE-NEXT: mod_time:
314f292fff7SAmir Ayupov# CHECK-LINE-NEXT: length:
315e159abdbSAlexander Yermolovich
316f292fff7SAmir Ayupov# CHECK-LINE: debug_line[
317f292fff7SAmir Ayupov# CHECK-LINE: version: 5
318f292fff7SAmir Ayupov# CHECK-LINE: include_directories[  0] =  .debug_line_str[0x[[#TEST_DEBUG_LINE]]] = "/test"
319f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[  0]:
320f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name:  .debug_line_str[0x[[#HELPER_DEBUG_LINE]]] = "helper1.cpp"
321f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 0
322f292fff7SAmir Ayupov# CHECK-LINE-NEXT: md5_checksum: e6dbd773fdf80bfea332cdf8284cddce
323e159abdbSAlexander Yermolovich
324f292fff7SAmir Ayupov# CHECK-LINE: debug_line[
325f292fff7SAmir Ayupov# CHECK-LINE: version: 4
326f292fff7SAmir Ayupov# CHECK-LINE: include_directories[  1] = "/test"
327f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[  1]:
328f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: "helper2.cpp"
329f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 1
330f292fff7SAmir Ayupov# CHECK-LINE-NEXT: mod_time:
331f292fff7SAmir Ayupov# CHECK-LINE-NEXT: length:
332