]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp
Update copyright year range in all GDB files.
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.trace / unavailable-dwarf-piece.exp
CommitLineData
b811d2c2 1# Copyright (C) 2013-2020 Free Software Foundation, Inc.
bdf22206
AB
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 3 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program. If not, see <http://www.gnu.org/licenses/>.
15
16load_lib "trace-support.exp"
17load_lib dwarf.exp
18
19if {![dwarf2_support]} {
20 return 0
21}
22
23standard_testfile .c
24
f9e48344 25set asm_file [standard_output_file "${testfile}-dbg.s"]
bdf22206
AB
26set opts {}
27
28if { [gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile}1.o \
29 object {nodebug}] != "" } {
30 return -1
31}
32
33Dwarf::assemble $asm_file {
34 declare_labels uchar_label struct_s_label foo_label struct_t_label bar_label
35
36 cu {} {
37 compile_unit {{language @DW_LANG_C}} {
38 uchar_label: DW_TAG_base_type {
39 {name "unsigned char"}
40 {byte_size 1 DW_FORM_sdata}
41 {encoding @DW_ATE_unsigned_char}
42 }
43
44 struct_s_label: DW_TAG_structure_type {
45 {name s}
46 {byte_size 3 DW_FORM_sdata}
824eacee 47 {decl_file 0 DW_FORM_udata}
f2e0d4b4 48 {decl_line 1 DW_FORM_sdata}
bdf22206
AB
49 } {
50 DW_TAG_member {
51 {name a}
52 {type :$uchar_label}
53 {data_member_location {
54 DW_OP_plus_uconst 0
55 } SPECIAL_expr}
56 }
57 DW_TAG_member {
58 {name b}
59 {type :$uchar_label}
60 {data_member_location {
61 DW_OP_plus_uconst 1
62 } SPECIAL_expr}
63 }
64 DW_TAG_member {
65 {name c}
66 {type :$uchar_label}
67 {data_member_location {
68 DW_OP_plus_uconst 2
69 } SPECIAL_expr}
70 }
71 }
72
73 struct_t_label: DW_TAG_structure_type {
74 {name t}
75 {byte_size 3 DW_FORM_sdata}
824eacee 76 {decl_file 0 DW_FORM_udata}
f2e0d4b4 77 {decl_line 1 DW_FORM_sdata}
bdf22206
AB
78 } {
79 DW_TAG_member {
80 {name a}
81 {type :$uchar_label}
82 {data_member_location {
83 DW_OP_plus_uconst 0
84 } SPECIAL_expr}
85 }
86 DW_TAG_member {
87 {name b}
88 {type :$uchar_label}
89 {byte_size 1 DW_FORM_sdata}
90 {bit_size 1 DW_FORM_sdata}
91 {bit_offset 7 DW_FORM_sdata}
92 {data_member_location {
93 DW_OP_plus_uconst 1
94 } SPECIAL_expr}
95 }
96 DW_TAG_member {
97 {name c}
98 {type :$uchar_label}
99 {byte_size 1 DW_FORM_sdata}
100 {bit_size 1 DW_FORM_sdata}
101 {bit_offset 6 DW_FORM_sdata}
102 {data_member_location {
103 DW_OP_plus_uconst 1
104 } SPECIAL_expr}
105 }
106 DW_TAG_member {
107 {name d}
108 {type :$uchar_label}
109 {byte_size 1 DW_FORM_sdata}
110 {bit_size 1 DW_FORM_sdata}
111 {bit_offset 5 DW_FORM_sdata}
112 {data_member_location {
113 DW_OP_plus_uconst 1
114 } SPECIAL_expr}
115 }
116 DW_TAG_member {
117 {name e}
118 {type :$uchar_label}
119 {byte_size 1 DW_FORM_sdata}
120 {bit_size 1 DW_FORM_sdata}
121 {bit_offset 4 DW_FORM_sdata}
122 {data_member_location {
123 DW_OP_plus_uconst 1
124 } SPECIAL_expr}
125 }
126 DW_TAG_member {
127 {name f}
128 {type :$uchar_label}
129 {byte_size 1 DW_FORM_sdata}
130 {bit_size 1 DW_FORM_sdata}
131 {bit_offset 3 DW_FORM_sdata}
132 {data_member_location {
133 DW_OP_plus_uconst 1
134 } SPECIAL_expr}
135 }
136 DW_TAG_member {
137 {name g}
138 {type :$uchar_label}
139 {byte_size 1 DW_FORM_sdata}
140 {bit_size 1 DW_FORM_sdata}
141 {bit_offset 2 DW_FORM_sdata}
142 {data_member_location {
143 DW_OP_plus_uconst 1
144 } SPECIAL_expr}
145 }
146 DW_TAG_member {
147 {name h}
148 {type :$uchar_label}
149 {byte_size 1 DW_FORM_sdata}
150 {bit_size 1 DW_FORM_sdata}
151 {bit_offset 1 DW_FORM_sdata}
152 {data_member_location {
153 DW_OP_plus_uconst 1
154 } SPECIAL_expr}
155 }
156 DW_TAG_member {
157 {name i}
158 {type :$uchar_label}
159 {byte_size 1 DW_FORM_sdata}
160 {bit_size 1 DW_FORM_sdata}
161 {bit_offset 0 DW_FORM_sdata}
162 {data_member_location {
163 DW_OP_plus_uconst 1
164 } SPECIAL_expr}
165 }
166 DW_TAG_member {
167 {name j}
168 {type :$uchar_label}
169 {data_member_location {
170 DW_OP_plus_uconst 2
171 } SPECIAL_expr}
172 }
173 }
174
175 DW_TAG_subprogram {
176 {name foo}
824eacee 177 {decl_file 0 udata}
4366d36e 178 {low_pc foo_start_lbl addr}
bdf22206
AB
179 {high_pc foo_end_lbl addr}
180 } {
181 DW_TAG_formal_parameter {
182 {type :$struct_s_label}
183 {name x}
184 {location {
185 DW_OP_lit0
186 DW_OP_stack_value
187 DW_OP_piece 2
188 DW_OP_reg0
189 DW_OP_piece 1
190 } SPECIAL_expr}
191 }
192 DW_TAG_formal_parameter {
193 {type :$struct_s_label}
194 {name y}
195 {location {
196 DW_OP_lit0
197 DW_OP_stack_value
198 DW_OP_piece 1
199 DW_OP_reg0
200 DW_OP_piece 1
201 DW_OP_lit0
202 DW_OP_stack_value
203 DW_OP_piece 1
204 } SPECIAL_expr}
205 }
206 DW_TAG_formal_parameter {
207 {type :$struct_s_label}
208 {name z}
209 {location {
210 DW_OP_reg0
211 DW_OP_piece 1
212 DW_OP_lit0
213 DW_OP_stack_value
214 DW_OP_piece 2
215 } SPECIAL_expr}
216 }
217 }
218
219
220 DW_TAG_subprogram {
221 {name bar}
824eacee 222 {decl_file 0 udata}
4366d36e 223 {low_pc bar_start_lbl addr}
bdf22206
AB
224 {high_pc bar_end_lbl addr}
225 } {
226 DW_TAG_formal_parameter {
227 {type :$struct_t_label}
228 {name x}
229 {location {
230 DW_OP_lit0
231 DW_OP_stack_value
232 DW_OP_piece 1
233 DW_OP_reg0
234 DW_OP_bit_piece 1 0
235 DW_OP_lit0
236 DW_OP_stack_value
237 DW_OP_bit_piece 7 0
238 DW_OP_lit0
239 DW_OP_stack_value
240 DW_OP_piece 1
241 } SPECIAL_expr}
242 }
243 DW_TAG_formal_parameter {
244 {type :$struct_t_label}
245 {name y}
246 {location {
247 DW_OP_lit0
248 DW_OP_stack_value
249 DW_OP_piece 1
250 DW_OP_lit0
251 DW_OP_stack_value
252 DW_OP_bit_piece 3 0
253 DW_OP_reg0
254 DW_OP_bit_piece 1 0
255 DW_OP_lit0
256 DW_OP_stack_value
257 DW_OP_bit_piece 4 0
258 DW_OP_lit0
259 DW_OP_stack_value
260 DW_OP_piece 1
261 } SPECIAL_expr}
262 }
263 DW_TAG_formal_parameter {
264 {type :$struct_t_label}
265 {name z}
266 {location {
267 DW_OP_lit0
268 DW_OP_stack_value
269 DW_OP_piece 1
270 DW_OP_lit0
271 DW_OP_stack_value
272 DW_OP_bit_piece 7 0
273 DW_OP_reg0
274 DW_OP_bit_piece 1 0
275 DW_OP_lit0
276 DW_OP_stack_value
277 DW_OP_piece 1
278 } SPECIAL_expr}
279 }
280 }
281
282 }
283 }
284}
285
286if { [gdb_compile ${asm_file} ${binfile}2.o object {nodebug}] != "" } {
287 return -1
288}
289
290if { [gdb_compile [list ${binfile}1.o ${binfile}2.o] ${binfile} \
291 executable {}] != "" } {
292 return -1
293}
294
295clean_restart ${testfile}
296
297if ![runto_main] {
298 return -1
299}
300
301if ![gdb_target_supports_trace] {
302 unsupported "target does not support trace"
303 return -1
304}
305
194ed413 306gdb_breakpoint "end" qualified
bdf22206
AB
307
308with_test_prefix "tracing foo" {
4366d36e 309 gdb_test "trace *foo_start_lbl" ".*"
bdf22206
AB
310 gdb_test_no_output "tstart"
311 gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*"
312 gdb_test_no_output "tstop"
313
314 gdb_test "tfind 0" "Found trace frame 0, tracepoint .*"
315 gdb_test "p/d x" "\\\$${decimal} = {a = 0, b = 0, c = <unavailable>}"
316 gdb_test "p/d y" "\\\$${decimal} = {a = 0, b = <unavailable>, c = 0}"
317 gdb_test "p/d z" "\\\$${decimal} = {a = <unavailable>, b = 0, c = 0}"
318
319 gdb_test "tfind none" "No longer looking at any trace frame.*"
320}
321
322with_test_prefix "tracing bar" {
4366d36e 323 gdb_test "trace *bar_start_lbl" ".*"
bdf22206
AB
324 gdb_test_no_output "tstart"
325 gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*"
326 gdb_test_no_output "tstop"
327
805acca0 328 set endian [get_endianness]
dc29a1ce 329
bdf22206 330 gdb_test "tfind 0" "Found trace frame 0, tracepoint .*"
dc29a1ce
MK
331 if { $endian == "little" } {
332 gdb_test "p/d x" "\\\$${decimal} = {a = 0, b = <unavailable>, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0}"
333 gdb_test "p/d y" "\\\$${decimal} = {a = 0, b = 0, c = 0, d = 0, e = <unavailable>, f = 0, g = 0, h = 0, i = 0, j = 0}"
334 gdb_test "p/d z" "\\\$${decimal} = {a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = <unavailable>, j = 0}"
335 } else {
336 gdb_test "p/d x" "\\\$${decimal} = {a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = <unavailable>, j = 0}"
337 gdb_test "p/d y" "\\\$${decimal} = {a = 0, b = 0, c = 0, d = 0, e = 0, f = <unavailable>, g = 0, h = 0, i = 0, j = 0}"
338 gdb_test "p/d z" "\\\$${decimal} = {a = 0, b = <unavailable>, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0}"
339 }
bdf22206
AB
340
341 gdb_test "tfind none" "No longer looking at any trace frame.*"
342}