[mlir][PDLL] Allow (and ignore) `-D` tablegen macros. (#124166)
[llvm-project.git] / lldb / test / Shell / SymbolFile / DWARF / x86 / dwp.s
blobc8eead3d28d292feca01c2ae0071730a00b6d9c6
1 # RUN: llvm-mc --filetype=obj --triple x86_64-pc-linux %s -o %t --defsym MAIN=0
2 # RUN: llvm-mc --filetype=obj --triple x86_64-pc-linux %s -o %t.dwp --defsym DWP=0
3 # RUN: %lldb %t -o "target variable A" -o "image lookup -v -n F1" -b | FileCheck %s
4 # RUN: lldb-test symbols %t | FileCheck %s --check-prefix=SYMBOLS
6 # CHECK-LABEL: target variable A
7 # CHECK: (INT0) A = 0
8 # CHECK: (INT1) A = 1
9 # CHECK: (INT2) A = 2
10 # CHECK: (INT3) A = 3
12 # CHECK-LABEL: image lookup -v -n F1
13 # CHECK: CompileUnit: id = {0x00000001}, file = "1.c", language = "unknown"
14 # CHECK: Function: {{.*}}, name = "F1", range = [0x0000000000000001-0x0000000000000002)
15 # CHECK: Variable: {{.*}}, name = "x", type = "int", valid ranges = <block>, location = [0x0000000000000001, 0x0000000000000002) -> DW_OP_reg1 RDX
17 # SYMBOLS: Compile units:
18 # SYMBOLS-NEXT: CompileUnit{0x00000000}, language = "<not loaded>", file = '0.c'
19 # SYMBOLS-NEXT: Variable{{.*}}, name = "A", {{.*}}, location = DW_OP_GNU_addr_index 0x0
20 # SYMBOLS-NEXT: Function{{.*}}, demangled = F0
21 # SYMBOLS-NEXT: Block{{.*}}, ranges = [0x00000000-0x00000001)
22 # SYMBOLS-NEXT: Variable{{.*}}, name = "x", {{.*}}, location =
23 # SYMBOLS-NEXT: [0x0000000000000000, 0x0000000000000001): DW_OP_reg0 RAX
24 # SYMBOLS-EMPTY:
25 # SYMBOLS-NEXT: CompileUnit{0x00000001}, language = "<not loaded>", file = '1.c'
26 # SYMBOLS-NEXT: Variable{{.*}}, name = "A", {{.*}}, location = DW_OP_GNU_addr_index 0x2
27 # SYMBOLS-NEXT: Function{{.*}}, demangled = F1
28 # SYMBOLS-NEXT: Block{{.*}}, ranges = [0x00000001-0x00000002)
29 # SYMBOLS-NEXT: Variable{{.*}}, name = "x", {{.*}}, location =
30 # SYMBOLS-NEXT: [0x0000000000000001, 0x0000000000000002): DW_OP_reg1 RDX
31 # SYMBOLS-EMPTY:
32 # SYMBOLS-NEXT: CompileUnit{0x00000002}, language = "<not loaded>", file = '2.c'
33 # SYMBOLS-NEXT: Variable{{.*}}, name = "A", {{.*}}, location = DW_OP_GNU_addr_index 0x4
34 # SYMBOLS-NEXT: Function{{.*}}, demangled = F2
35 # SYMBOLS-NEXT: Block{{.*}}, ranges = [0x00000002-0x00000003)
36 # SYMBOLS-NEXT: Variable{{.*}}, name = "x", {{.*}}, location =
37 # SYMBOLS-NEXT: [0x0000000000000002, 0x0000000000000003): DW_OP_reg2 RCX
38 # SYMBOLS-EMPTY:
39 # SYMBOLS-NEXT: CompileUnit{0x00000003}, language = "<not loaded>", file = '3.c'
40 # SYMBOLS-NEXT: Variable{{.*}}, name = "A", {{.*}}, location = DW_OP_GNU_addr_index 0x6
41 # SYMBOLS-NEXT: Function{{.*}}, demangled = F3
42 # SYMBOLS-NEXT: Block{{.*}}, ranges = [0x00000003-0x00000004)
43 # SYMBOLS-NEXT: Variable{{.*}}, name = "x", {{.*}}, location =
44 # SYMBOLS-NEXT: [0x0000000000000003, 0x0000000000000004): DW_OP_reg3 RBX
45 # SYMBOLS-EMPTY:
46 # SYMBOLS-NEXT: CompileUnit{0x00000004}, language = "<not loaded>", file = ''
47 # SYMBOLS-EMPTY:
49 .section .debug_abbrev,"",@progbits
50 .byte 1 # Abbreviation Code
51 .byte 17 # DW_TAG_compile_unit
52 .byte 0 # DW_CHILDREN_no
53 .ascii "\260B" # DW_AT_GNU_dwo_name
54 .byte 8 # DW_FORM_string
55 .ascii "\261B" # DW_AT_GNU_dwo_id
56 .byte 7 # DW_FORM_data8
57 .ascii "\263B" # DW_AT_GNU_addr_base
58 .byte 23 # DW_FORM_sec_offset
59 .byte 85 # DW_AT_ranges
60 .byte 23 # DW_FORM_sec_offset
61 .byte 0 # EOM(1)
62 .byte 0 # EOM(2)
63 .byte 0 # EOM(3)
65 .ifdef MAIN
66 .irpc I,01234
67 .data
68 A\I:
69 .long \I
71 .text
72 F\I:
73 nop
75 .section .debug_info,"",@progbits
76 .Lcu_begin\I:
77 .long .Ldebug_info_end\I-.Ldebug_info_start\I # Length of Unit
78 .Ldebug_info_start\I:
79 .short 4 # DWARF version number
80 .long .debug_abbrev # Offset Into Abbrev. Section
81 .byte 8 # Address Size (in bytes)
82 .byte 1 # Abbrev [1] 0xb:0x25 DW_TAG_compile_unit
83 .asciz "A.dwo" # DW_AT_GNU_dwo_name
84 .quad \I # DW_AT_GNU_dwo_id
85 .long .debug_addr # DW_AT_GNU_addr_base
86 .long .Lranges\I # DW_AT_ranges
87 .Ldebug_info_end\I:
89 .section .debug_addr,"",@progbits
90 .quad A\I
91 .quad F\I
93 .section .debug_ranges,"",@progbits
94 .Lranges\I:
95 .quad F\I
96 .quad F\I+1
97 .quad 0
98 .quad 0
99 .endr
100 .endif
102 .ifdef DWP
103 # This deliberately excludes compile unit 4 to check test the case of a missing
104 # split unit.
105 .irpc I,0123
106 .section .debug_str.dwo,"MSe",@progbits,1
107 .Lstr\I:
108 .byte 'I', 'N', 'T', '0'+\I, 0
110 .section .debug_str_offsets.dwo,"e",@progbits
111 .Lstr_offsets\I:
112 .long .Lstr\I-.debug_str.dwo
113 .Lstr_offsets_end\I:
115 .section .debug_loc.dwo,"e",@progbits
116 .Lloc\I:
117 .byte 3 # DW_LLE_startx_length
118 .uleb128 \I*2+1
119 .long 1
120 .short 1 # Expression size
121 .byte 80+\I # super-register DW_OP_reg0+\I
122 .byte 0 # DW_LLE_end_of_list
123 .Lloc_end\I:
125 .section .debug_abbrev.dwo,"e",@progbits
126 .Labbrev\I:
127 .byte \I*10+1 # Abbreviation Code
128 .byte 17 # DW_TAG_compile_unit
129 .byte 1 # DW_CHILDREN_yes
130 .byte 37 # DW_AT_producer
131 .byte 8 # DW_FORM_string
132 .byte 3 # DW_AT_name
133 .byte 8 # DW_FORM_string
134 .byte 0 # EOM(1)
135 .byte 0 # EOM(2)
136 .byte \I*10+2 # Abbreviation Code
137 .byte 52 # DW_TAG_variable
138 .byte 0 # DW_CHILDREN_no
139 .byte 3 # DW_AT_name
140 .byte 8 # DW_FORM_string
141 .byte 73 # DW_AT_type
142 .byte 19 # DW_FORM_ref4
143 .byte 2 # DW_AT_location
144 .byte 24 # DW_FORM_exprloc
145 .byte 0 # EOM(1)
146 .byte 0 # EOM(2)
147 .byte \I*10+3 # Abbreviation Code
148 .byte 36 # DW_TAG_base_type
149 .byte 0 # DW_CHILDREN_no
150 .byte 3 # DW_AT_name
151 .byte 8 # DW_FORM_string
152 .byte 62 # DW_AT_encoding
153 .byte 11 # DW_FORM_data1
154 .byte 11 # DW_AT_byte_size
155 .byte 11 # DW_FORM_data1
156 .byte 0 # EOM(1)
157 .byte 0 # EOM(2)
158 .byte \I*10+4 # Abbreviation Code
159 .byte 22 # DW_TAG_typedef
160 .byte 0 # DW_CHILDREN_no
161 .byte 3 # DW_AT_name
162 .uleb128 0x1f02 # DW_FORM_GNU_str_index
163 .byte 73 # DW_AT_type
164 .byte 19 # DW_FORM_ref4
165 .byte 0 # EOM(1)
166 .byte 0 # EOM(2)
167 .byte \I*10+5 # Abbreviation Code
168 .byte 46 # DW_TAG_subprogram
169 .byte 1 # DW_CHILDREN_yes
170 .byte 17 # DW_AT_low_pc
171 .uleb128 0x1f01 # DW_FORM_GNU_addr_index
172 .byte 18 # DW_AT_high_pc
173 .byte 11 # DW_FORM_data1
174 .byte 3 # DW_AT_name
175 .byte 8 # DW_FORM_string
176 .byte 0 # EOM(1)
177 .byte 0 # EOM(2)
178 .byte \I*10+6 # Abbreviation Code
179 .byte 5 # DW_TAG_formal_parameter
180 .byte 0 # DW_CHILDREN_no
181 .byte 2 # DW_AT_location
182 .byte 23 # DW_FORM_sec_offset
183 .byte 3 # DW_AT_name
184 .byte 8 # DW_FORM_string
185 .byte 73 # DW_AT_type
186 .byte 19 # DW_FORM_ref4
187 .byte 0 # EOM(1)
188 .byte 0 # EOM(2)
189 .byte 0 # EOM(3)
190 .Labbrev_end\I:
192 .section .debug_info.dwo,"e",@progbits
193 .Lcu_begin\I:
194 .long .Ldebug_info_end\I-.Ldebug_info_start\I # Length of Unit
195 .Ldebug_info_start\I:
196 .short 4 # DWARF version number
197 .long 0 # Offset Into Abbrev. Section
198 .byte 8 # Address Size (in bytes)
199 .byte \I*10+1 # Abbrev DW_TAG_compile_unit
200 .asciz "Hand-written DWARF" # DW_AT_producer
201 .byte '0'+\I, '.', 'c', 0 # DW_AT_name
202 .byte \I*10+2 # Abbrev DW_TAG_variable
203 .asciz "A" # DW_AT_name
204 .long .Ltypedef\I-.Lcu_begin\I# DW_AT_type
205 .byte 2 # DW_AT_location
206 .byte 0xfb # DW_OP_GNU_addr_index
207 .byte \I*2
208 .Ltypedef\I:
209 .byte \I*10+4 # Abbrev DW_TAG_typedef
210 .byte 0 # DW_AT_name
211 .long .Ltype\I-.Lcu_begin\I # DW_AT_type
212 .Ltype\I:
213 .byte \I*10+3 # Abbrev DW_TAG_base_type
214 .asciz "int" # DW_AT_name
215 .byte 5 # DW_AT_encoding
216 .byte 4 # DW_AT_byte_size
218 .byte \I*10+5 # Abbrev DW_TAG_subprogram
219 .uleb128 \I*2+1 # DW_AT_low_pc
220 .byte 1 # DW_AT_high_pc
221 .byte 'F', '0'+\I, 0 # DW_AT_name
223 .byte \I*10+6 # Abbrev DW_TAG_formal_parameter
224 .long 0 # DW_AT_location
225 .asciz "x" # DW_AT_name
226 .long .Ltype\I-.Lcu_begin\I # DW_AT_type
228 .byte 0 # End Of Children Mark
229 .byte 0 # End Of Children Mark
230 .Ldebug_info_end\I:
231 .endr
233 .section .debug_cu_index,"",@progbits
234 .short 2 # DWARF version number
235 .short 0 # Reserved
236 .long 4 # Section count
237 .long 4 # Unit count
238 .long 8 # Slot count
240 .quad 0, 1, 2, 3, 0, 0, 0, 0 # Hash table
241 .long 1, 2, 3, 4, 0, 0, 0, 0 # Index table
243 .long 1 # DW_SECT_INFO
244 .long 3 # DW_SECT_ABBREV
245 .long 5 # DW_SECT_LOC
246 .long 6 # DW_SECT_STR_OFFSETS
248 .irpc I,0123
249 .long .Lcu_begin\I-.debug_info.dwo
250 .long .Labbrev\I-.debug_abbrev.dwo
251 .long .Lloc\I-.debug_loc.dwo
252 .long .Lstr_offsets\I-.debug_str_offsets.dwo
253 .endr
254 .irpc I,0123
255 .long .Ldebug_info_end\I-.Lcu_begin\I
256 .long .Labbrev_end\I-.Labbrev\I
257 .long .Lloc_end\I-.Lloc\I
258 .long .Lstr_offsets_end\I-.Lstr_offsets\I
259 .endr
261 .endif