xref: /llvm-project/bolt/test/X86/dwarf5-split-dwarf4-monolithic.test (revision 6aad62cf5b7f91f4b02266cf72469e2c8e28dbef)
1e159abdbSAlexander Yermolovich# REQUIRES: system-linux
2e159abdbSAlexander Yermolovich
3e159abdbSAlexander Yermolovich; RUN: rm -rf %t
4e159abdbSAlexander Yermolovich; RUN: mkdir %t
5e159abdbSAlexander Yermolovich; RUN: cd %t
6e159abdbSAlexander Yermolovich
7e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux -split-dwarf-file=main.dwo %p/Inputs/dwarf5-split-dwarf4-monolithic-main.s -o main.o
8e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-helper0.s -o helper0.o
9e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux -split-dwarf-file=helper1.dwo %p/Inputs/dwarf5-split-dwarf4-monolithic-helper1.s -o helper1.o
10e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-helper2.s -o helper2.o
11e159abdbSAlexander Yermolovich# RUN: %clang %cflags -dwarf-5 main.o helper0.o helper1.o helper2.o -o main.exe -Wl,-q
12*6aad62cfSSayhaan Siddiqui# RUN: llvm-bolt --always-convert-to-ranges main.exe -o main.bolt --update-debug-sections --debug-thread-count=4 --cu-processing-batch-size=4
13e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info main.exe | FileCheck --check-prefix=PRECHECK %s
14e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-line main.exe | FileCheck --check-prefix=PRECHECK-LINE %s
15e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-addr main.bolt >  boltout.txt
16e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info main.bolt >> boltout.txt
17e159abdbSAlexander Yermolovich# RUN: cat boltout.txt | FileCheck --check-prefix=POSTCHECK %s
18e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info main.dwo.dwo | FileCheck --check-prefix=POSTCHECK-DWO-MAIN %s
19e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info helper1.dwo.dwo | FileCheck --check-prefix=POSTCHECK-DWO-HELPER1 %s
20e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-line main.bolt | FileCheck --check-prefix=POSTCHECK-LINE %s
21e159abdbSAlexander Yermolovich
22e159abdbSAlexander Yermolovich
2311791ae7SSayhaan Siddiqui## Check BOLT handles monolithic mix of DWARF4 and DWARF5.
24e159abdbSAlexander Yermolovich
25e159abdbSAlexander Yermolovich# main.cpp
26e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0005
27e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_skeleton_unit
28e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list
29e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_str_offsets_base
30e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir
31e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_GNU_pubnames [DW_FORM_flag_present] (true)
32e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_dwo_name [DW_FORM_strx1]  (indexed (00000001) string = "main.dwo")
33e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc
34e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000010
35e159abdbSAlexander Yermolovich# PRECHECK-NEXT: [0x
36e159abdbSAlexander Yermolovich# PRECHECK-NEXT: [0x
37e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_addr_base
38e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_rnglists_base
39e159abdbSAlexander Yermolovich
40e159abdbSAlexander Yermolovich# helper0.cpp
41e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0004
42e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_compile_unit
43e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_producer
44e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_language
45e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name
46e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list
47e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir
48e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
49e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc
50e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [7]
51e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
52e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc
53e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [9]
54e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_sec_offset] (0x00000000:
55e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [10]
56e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin
57e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
58e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc
59e159abdbSAlexander Yermolovich
60e159abdbSAlexander Yermolovich# helper1.cpp
61e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0005
62e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_skeleton_unit [1]
63e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list
64e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_str_offsets_base
65e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir
66e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_GNU_pubnames
67e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_dwo_name [DW_FORM_strx1]  (indexed (00000001) string = "helper1.dwo")
68e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000001) address
69e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4]
70e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_addr_base
71e159abdbSAlexander Yermolovich
72e159abdbSAlexander Yermolovich# helper2.cpp
73e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0004
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_stmt_list
79e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir
80e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
81e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4]
82e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [7]
83e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
84e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4]
85e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [9]
86e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_sec_offset]
87e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [10]
88e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin
89e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr]
90e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc
91e159abdbSAlexander Yermolovich
9211791ae7SSayhaan Siddiqui## Checking debug line.
93e159abdbSAlexander Yermolovich
94e159abdbSAlexander Yermolovich# PRECHECK-LINE: debug_line[
95e159abdbSAlexander Yermolovich# PRECHECK-LINE: version: 5
96e159abdbSAlexander Yermolovich# PRECHECK-LINE: include_directories[  0] =  .debug_line_str[0x[[#%.8x,LINE:]]] = "."
97e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: file_names[  0]:
98e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: name:  .debug_line_str[0x[[#%.8x,LINE:]]] = "main.cpp"
99e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: dir_index: 0
100e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: md5_checksum: e3a18fae8565a087d09d6076b542cdab
101e159abdbSAlexander Yermolovich
102e159abdbSAlexander Yermolovich# PRECHECK-LINE: debug_line[
103e159abdbSAlexander Yermolovich# PRECHECK-LINE: version: 4
104e159abdbSAlexander Yermolovich# PRECHECK-LINE: include_directories[  1] = "/test"
105e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: file_names[  1]:
106e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: name: "helper0.cpp"
107e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: dir_index: 1
108e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: mod_time:
109e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: length:
110e159abdbSAlexander Yermolovich
111e159abdbSAlexander Yermolovich# PRECHECK-LINE: debug_line[
112e159abdbSAlexander Yermolovich# PRECHECK-LINE: version: 5
113e159abdbSAlexander Yermolovich# PRECHECK-LINE: include_directories[  0] =  .debug_line_str[0x[[#%.8x,LINE:]]] = "."
114e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: file_names[  0]:
115e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: name:  .debug_line_str[0x[[#%.8x,LINE:]]] = "helper1.cpp"
116e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: dir_index: 0
117e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: md5_checksum: e6dbd773fdf80bfea332cdf8284cddce
118e159abdbSAlexander Yermolovich
119e159abdbSAlexander Yermolovich
120e159abdbSAlexander Yermolovich# PRECHECK-LINE: debug_line[
121e159abdbSAlexander Yermolovich# PRECHECK-LINE: version: 4
122e159abdbSAlexander Yermolovich# PRECHECK-LINE: include_directories[  1] = "/test"
123e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: file_names[  1]:
124e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: name: "helper2.cpp"
125e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: dir_index: 1
126e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: mod_time:
127e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: length:
128e159abdbSAlexander Yermolovich
129e159abdbSAlexander Yermolovich
130e159abdbSAlexander Yermolovich# POST BOLT.
131e159abdbSAlexander Yermolovich
132e159abdbSAlexander Yermolovich# POSTCHECK: Addrs: [
133e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR:]]
134e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR1:]]
135e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR2:]]
136e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR3:]]
137e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR4:]]
138e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR5:]]
139e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR6:]]
140e159abdbSAlexander Yermolovich
141e159abdbSAlexander Yermolovich# POSTCHECK: Addrs: [
142e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB:]]
143e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB1:]]
144e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB2:]]
145e159abdbSAlexander Yermolovich
146e159abdbSAlexander Yermolovich
147e159abdbSAlexander Yermolovich# main.cpp
148e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0005
149e159abdbSAlexander Yermolovich# POSTCHECK: DW_AT_stmt_list [DW_FORM_sec_offset]  (0x00000000)
150e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000008)
151e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir [DW_FORM_strx1]  (indexed (00000000) string = ".")
152e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_GNU_pubnames [DW_FORM_flag_present] (true)
153e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_dwo_name [DW_FORM_strx1]  (indexed (00000001) string = "main.dwo.dwo")
154e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc
155e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0)
156e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR]], 0x[[#ADDR + 0x7]]
157efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x51]]
158e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset]
159e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset]
160e159abdbSAlexander Yermolovich
161e159abdbSAlexander Yermolovich# helper0.cpp
162e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0004
163e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_compile_unit
164e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer
165e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language
166e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name
167e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list
168e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir
169e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
170e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
171e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
17287fb0ea2SRui Zhong# POSTCHECK: DW_TAG_subprogram [8]
173e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
174e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
17587fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [10]
176e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_sec_offset]
177e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
178e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
17987fb0ea2SRui Zhong# POSTCHECK: DW_TAG_inlined_subroutine [11]
180e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin
181e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
182e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
183e159abdbSAlexander Yermolovich
184e159abdbSAlexander Yermolovich# helper1.cpp
185e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0005
18687fb0ea2SRui Zhong# POSTCHECK: DW_TAG_skeleton_unit [12]
187e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list [DW_FORM_sec_offset]  (0x000000fe)
188e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000018)
189e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir [DW_FORM_strx1]  (indexed (00000000) string = ".")
190e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_GNU_pubnames [DW_FORM_flag_present] (true)
191e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_dwo_name [DW_FORM_strx1]  (indexed (00000001) string = "helper1.dwo.dwo")
192e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000002)
193e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0)
194e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB1]], 0x[[#ADDRB1 + 0x4]]
195e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset]
196e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset]
197e159abdbSAlexander Yermolovich
198e159abdbSAlexander Yermolovich# helper2.cpp
199e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0004
20087fb0ea2SRui Zhong# POSTCHECK: DW_TAG_compile_unit [2] *
201e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer
202e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language
203e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name
204e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list
205e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir
206e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
207e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
208e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
20987fb0ea2SRui Zhong# POSTCHECK: DW_TAG_subprogram [8]
210e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
211e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
21287fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [10]
213e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_sec_offset]
214e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
215e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
21687fb0ea2SRui Zhong# POSTCHECK: DW_TAG_inlined_subroutine [11]
217e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin
218e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset]
219e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x
220e159abdbSAlexander Yermolovich
221e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: version = 0x0005
222e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_compile_unit
223e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_subprogram [2]
224e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000018
225e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000000, 0x0000000000000007))
226e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_subprogram [8]
227e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x0000001c
228e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000000, 0x0000000000000051))
229e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_formal_parameter [9]
230e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x00000018:
231efb8a1c9SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx   (0x0000000000000001)
232124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair     (0x0000000000000000, 0x0000000000000022): DW_OP_reg5 RDI
233124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair     (0x0000000000000022, 0x0000000000000051): DW_OP_entry_value(DW_OP_reg5 RDI), DW_OP_stack_value)
234e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_formal_parameter [9]
235124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x00000028:
236efb8a1c9SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx   (0x0000000000000001)
237124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair     (0x0000000000000000, 0x0000000000000027): DW_OP_reg4 RSI
238124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair     (0x0000000000000027, 0x0000000000000051): DW_OP_entry_value(DW_OP_reg4 RSI), DW_OP_stack_value)
239e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_variable [10]
240124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x2) loclist = 0x00000038:
241efb8a1c9SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx   (0x0000000000000002)
242124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair     (0x0000000000000000, 0x0000000000000006): DW_OP_reg5 RDI
243124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair     (0x0000000000000006, 0x0000000000000046): DW_OP_reg14 R14)
244e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_inlined_subroutine [12]
245e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_abstract_origin [DW_FORM_ref4]
246e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x2) rangelist = 0x00000020
2471a2f8336Sspaette# Encoded as a pair. So it's offset from base address.
248efb8a1c9SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000003, 0x0000000000000007)
249efb8a1c9SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000013, 0x0000000000000019))
250e159abdbSAlexander Yermolovich
251e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1: version = 0x0005
252e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1: DW_TAG_subprogram [7]
253e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000014
254e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: [0x0000000000000000, 0x0000000000000004))
255e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1: DW_TAG_variable [9]
256e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x00000010:
257124ca880SAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_LLE_base_addressx   (0x0000000000000001)
258124ca880SAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_LLE_offset_pair     (0x0000000000000000, 0x0000000000000003): DW_OP_reg5 RDI
259124ca880SAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_LLE_offset_pair     (0x0000000000000003, 0x0000000000000004): DW_OP_reg0 RAX)
260e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1: DW_TAG_inlined_subroutine [10]
261e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_abstract_origin
262e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x00000018
263e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: [0x0000000000000000, 0x0000000000000003))
264e159abdbSAlexander Yermolovich
26511791ae7SSayhaan Siddiqui## Checking debug line.
266e159abdbSAlexander Yermolovich
267e159abdbSAlexander Yermolovich# POSTCHECK-LINE: debug_line[
268e159abdbSAlexander Yermolovich# POSTCHECK-LINE: version: 5
269e159abdbSAlexander Yermolovich# POSTCHECK-LINE: include_directories[  0] =  .debug_line_str[0x[[#%.8x,LINE:]]] = "."
270e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: file_names[  0]:
271e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: name:  .debug_line_str[0x[[#%.8x,LINE:]]] = "main.cpp"
272e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: dir_index: 0
273e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: md5_checksum: e3a18fae8565a087d09d6076b542cdab
274e159abdbSAlexander Yermolovich
275e159abdbSAlexander Yermolovich# POSTCHECK-LINE: debug_line[
276e159abdbSAlexander Yermolovich# POSTCHECK-LINE: version: 4
277e159abdbSAlexander Yermolovich# POSTCHECK-LINE: include_directories[  1] = "/test"
278e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: file_names[  1]:
279e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: name: "helper0.cpp"
280e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: dir_index: 1
281e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: mod_time:
282e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: length:
283e159abdbSAlexander Yermolovich
284e159abdbSAlexander Yermolovich# POSTCHECK-LINE: debug_line[
285e159abdbSAlexander Yermolovich# POSTCHECK-LINE: version: 5
286e159abdbSAlexander Yermolovich# POSTCHECK-LINE: include_directories[  0] =  .debug_line_str[0x[[#%.8x,LINE:]]] = "."
287e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: file_names[  0]:
288e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: name:  .debug_line_str[0x[[#%.8x,LINE:]]] = "helper1.cpp"
289e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: dir_index: 0
290e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: md5_checksum: e6dbd773fdf80bfea332cdf8284cddce
291e159abdbSAlexander Yermolovich
292e159abdbSAlexander Yermolovich# POSTCHECK-LINE: debug_line[
293e159abdbSAlexander Yermolovich# POSTCHECK-LINE: version: 4
294e159abdbSAlexander Yermolovich# POSTCHECK-LINE: include_directories[  1] = "/test"
295e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: file_names[  1]:
296e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: name: "helper2.cpp"
297e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: dir_index: 1
298e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: mod_time:
299e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: length:
300