1# Copyright 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation
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 2 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, write to the Free Software
15# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16
17# Test essential Machine interface (MI) operations
18#
19# Verify that, using the MI, we can create, update, delete variables.
20#
21
22
23load_lib mi-support.exp
24set MIFLAGS "-i=mi2"
25
26gdb_exit
27if [mi_gdb_start] {
28    continue
29}
30
31set testfile "var-cmd"
32set srcfile ${testfile}.c
33set binfile ${objdir}/${subdir}/${testfile}
34if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
35    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
36}
37
38mi_delete_breakpoints
39mi_gdb_reinitialize_dir $srcdir/$subdir
40mi_gdb_load ${binfile}
41
42mi_runto do_children_tests
43
44#####        #####
45#                #
46# children tests #
47#                #
48#####        #####
49
50
51# Test: c_variable-4.2
52# Desc: create variable "struct_declarations"
53mi_gdb_test "-var-create struct_declarations * struct_declarations" \
54	"\\^done,name=\"struct_declarations\",numchild=\"11\",type=\"struct _struct_decl\"" \
55	"create local variable struct_declarations"
56
57# Test: c_variable-4.3
58# Desc: children of struct_declarations
59# STABS doesn't give us argument types for the func ptr structs, but
60# Dwarf 2 does.
61mi_gdb_test "-var-list-children struct_declarations" \
62	"\\^done,numchild=\"11\",children=\\\[child=\{name=\"struct_declarations.integer\",exp=\"integer\",numchild=\"0\",type=\"int\"\},child=\{name=\"struct_declarations.character\",exp=\"character\",numchild=\"0\",type=\"char\"\},child={name=\"struct_declarations.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"struct_declarations.long_int\",exp=\"long_int\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.int_ptr_ptr\",exp=\"int_ptr_ptr\",numchild=\"1\",type=\"int \\*\\*\"\},child=\{name=\"struct_declarations.long_array\",exp=\"long_array\",numchild=\"10\",type=\"long int \\\[10\\\]\"\},child=\{name=\"struct_declarations.func_ptr\",exp=\"func_ptr\",numchild=\"0\",type=\"void \\(\\*\\)\\((void)?\\)\"\},child=\{name=\"struct_declarations.func_ptr_struct\",exp=\"func_ptr_struct\",numchild=\"0\",type=\"struct _struct_decl \\(\\*\\)\\((int, char \\*, long int)?\\)\"\},child=\{name=\"struct_declarations.func_ptr_ptr\",exp=\"func_ptr_ptr\",numchild=\"0\",type=\"struct _struct_decl \\*\\(\\*\\)\\((int, char \\*, long int)?\\)\"\},child=\{name=\"struct_declarations.u1\",exp=\"u1\",numchild=\"4\",type=\"union \{\\.\\.\\.\}\"\},child=\{name=\"struct_declarations.s2\",exp=\"s2\",numchild=\"4\",type=\"struct \{\\.\\.\\.\}\"\}\\\]" \
63	"get children of struct_declarations"
64
65#gdbtk_test c_variable-4.3 {children of struct_declarations} {
66#  get_children  struct_declarations
67#} {integer character char_ptr long_int int_ptr_ptr long_array func_ptr func_ptr_struct func_ptr_ptr u1 s2}
68
69# Test: c_variable-4.4
70# Desc: number of children of struct_declarations
71mi_gdb_test "-var-info-num-children struct_declarations" \
72	"\\^done,numchild=\"11\"" \
73	"get number of children of struct_declarations"
74
75# Test: c_variable-4.5
76# Desc: children of struct_declarations.integer
77mi_gdb_test "-var-list-children struct_declarations.integer" \
78	"\\^done,numchild=\"0\"" \
79	"get children of struct_declarations.integer"
80
81# Test: c_variable-4.6
82# Desc: number of children of struct_declarations.integer
83mi_gdb_test "-var-info-num-children struct_declarations.integer" \
84	"\\^done,numchild=\"0\"" \
85	"get number of children of struct_declarations.integer"
86
87# Test: c_variable-4.7
88# Desc: children of struct_declarations.character
89mi_gdb_test "-var-list-children struct_declarations.character" \
90	"\\^done,numchild=\"0\"" \
91	"get children of struct_declarations.character"
92
93# Test: c_variable-4.8
94# Desc: number of children of struct_declarations.character
95mi_gdb_test "-var-info-num-children struct_declarations.character" \
96	"\\^done,numchild=\"0\"" \
97	"get number of children of struct_declarations.character"
98
99# Test: c_variable-4.9
100# Desc: children of struct_declarations.char_ptr
101mi_gdb_test "-var-list-children struct_declarations.char_ptr" \
102	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"struct_declarations.char_ptr.\\*char_ptr\",exp=\"\\*char_ptr\",numchild=\"0\",type=\"char\"\}\\\]" \
103	"get children of struct_declarations.char_ptr"
104
105# Test: c_variable-4.10
106# Desc: number of children of struct_declarations.char_ptr
107mi_gdb_test "-var-info-num-children struct_declarations.char_ptr" \
108	"\\^done,numchild=\"1\"" \
109	"get number of children of struct_declarations.char_ptr"
110
111# Test: c_variable-4.11
112# Desc: children of struct_declarations.long_int
113mi_gdb_test "-var-list-children struct_declarations.long_int" \
114	"\\^done,numchild=\"0\"" \
115	"get children of struct_declarations.long_int"
116
117# Test: c_variable-4.12
118# Desc: number of children of struct_declarations.long_int
119mi_gdb_test "-var-info-num-children struct_declarations.long_int" \
120	"\\^done,numchild=\"0\"" \
121	"get number of children of struct_declarations.long_int"
122
123# Test: c_variable-4.13
124# Desc: children of int_ptr_ptr
125mi_gdb_test "-var-list-children struct_declarations.int_ptr_ptr" \
126	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr\",exp=\"\\*int_ptr_ptr\",numchild=\"1\",type=\"int \\*\"\}\\\]" \
127	"get children of struct_declarations.int_ptr_ptr"
128
129#gdbtk_test c_variable-4.13 {children of int_ptr_ptr} {
130#  get_children struct_declarations.int_ptr_ptr
131#} {*int_ptr_ptr}
132
133# Test: c_variable-4.14
134# Desc: number of children of int_ptr_ptr
135mi_gdb_test "-var-info-num-children struct_declarations.int_ptr_ptr" \
136	"\\^done,numchild=\"1\"" \
137	"get number of children of struct_declarations.int_ptr_ptr"
138
139
140# Test: c_variable-4.15
141# Desc: children of struct_declarations.long_array
142mi_gdb_test "-var-list-children struct_declarations.long_array" \
143	"\\^done,numchild=\"10\",children=\\\[child=\{name=\"struct_declarations.long_array.0\",exp=\"0\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.1\",exp=\"1\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.2\",exp=\"2\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.3\",exp=\"3\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.4\",exp=\"4\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.5\",exp=\"5\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.6\",exp=\"6\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.7\",exp=\"7\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.8\",exp=\"8\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.9\",exp=\"9\",numchild=\"0\",type=\"long int\"\}\\\]" \
144	"get children of struct_declarations.long_array"
145
146# Test: c_variable-4.16
147# Desc: number of children of struct_declarations.long_array
148mi_gdb_test "-var-info-num-children struct_declarations.long_array" \
149	"\\^done,numchild=\"10\"" \
150	"get number of children of struct_declarations.long_array"
151
152# Test: c_variable-4.17
153# Desc: children of struct_declarations.func_ptr
154mi_gdb_test "-var-list-children struct_declarations.func_ptr" \
155	"\\^done,numchild=\"0\"" \
156	"get children of struct_declarations.func_ptr"
157
158
159# Test: c_variable-4.18
160# Desc: number of children of struct_declarations.func_ptr
161mi_gdb_test "-var-info-num-children struct_declarations.func_ptr" \
162	"\\^done,numchild=\"0\"" \
163	"get number of children of struct_declarations.func_ptr"
164
165
166# Test: c_variable-4.19
167# Desc: children of struct_declarations.func_ptr_struct
168mi_gdb_test "-var-list-children struct_declarations.func_ptr_struct" \
169	"\\^done,numchild=\"0\"" \
170	"get children of struct_declarations.func_ptr_struct"
171
172# Test: c_variable-4.20
173# Desc: number of children of struct_declarations.func_ptr_struct
174mi_gdb_test "-var-info-num-children struct_declarations.func_ptr_struct" \
175	"\\^done,numchild=\"0\"" \
176	"get number of children of struct_declarations.func_ptr_struct"
177
178
179# Test: c_variable-4.21
180# Desc: children of struct_declarations.func_ptr_ptr
181mi_gdb_test "-var-list-children struct_declarations.func_ptr_ptr" \
182	"\\^done,numchild=\"0\"" \
183	"get children of struct_declarations.func_ptr_ptr"
184
185# Test: c_variable-4.22
186# Desc: number of children of struct_declarations.func_ptr_ptr
187mi_gdb_test "-var-info-num-children struct_declarations.func_ptr_ptr" \
188	"\\^done,numchild=\"0\"" \
189	"get number of children of struct_declarations.func_ptr_ptr"
190
191
192# Test: c_variable-4.23
193# Desc: children of struct_declarations.u1
194mi_gdb_test "-var-list-children struct_declarations.u1" \
195	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"struct_declarations.u1.a\",exp=\"a\",numchild=\"0\",type=\"int\"\},child=\{name=\"struct_declarations.u1.b\",exp=\"b\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"struct_declarations.u1.c\",exp=\"c\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.u1.d\",exp=\"d\",numchild=\"0\",type=\"enum foo\"\}\\\]" \
196	"get children of struct_declarations.u1"
197
198# Test: c_variable-4.24
199# Desc: number of children of struct_declarations.u1
200mi_gdb_test "-var-info-num-children struct_declarations.u1" \
201	"\\^done,numchild=\"4\"" \
202	"get number of children of struct_declarations.u1"
203
204# Test: c_variable-4.25
205# Desc: children of struct_declarations.s2
206mi_gdb_test "-var-list-children struct_declarations.s2" \
207	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"struct_declarations.s2.u2\",exp=\"u2\",numchild=\"3\",type=\"union \{\\.\\.\\.\}\"\},child=\{name=\"struct_declarations.s2.g\",exp=\"g\",numchild=\"0\",type=\"int\"\},child=\{name=\"struct_declarations.s2.h\",exp=\"h\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.i\",exp=\"i\",numchild=\"10\",type=\"long int \\\[10\\\]\"\}\\\]" \
208	"get children of struct_declarations.s2"
209#gdbtk_test c_variable-4.25 {children of struct_declarations.s2} {
210#  get_children struct_declarations.s2
211#} {u2 g h i}
212
213# Test: c_variable-4.26
214# Desc: number of children of struct_declarations.s2
215mi_gdb_test "-var-info-num-children struct_declarations.s2" \
216	"\\^done,numchild=\"4\"" \
217	"get number of children of struct_declarations.s2"
218
219
220# Test: c_variable-4.27
221# Desc: children of struct_declarations.long_array.1
222mi_gdb_test "-var-list-children struct_declarations.long_array.1" \
223	"\\^done,numchild=\"0\"" \
224	"get children of struct_declarations.long_array.1"
225
226# Test: c_variable-4.28
227# Desc: number of children of struct_declarations.long_array.1
228mi_gdb_test "-var-info-num-children struct_declarations.long_array.1" \
229	"\\^done,numchild=\"0\"" \
230	"get number of children of struct_declarations.long_array.1"
231
232# Test: c_variable-4.29
233# Desc: children of struct_declarations.long_array.2
234mi_gdb_test "-var-list-children struct_declarations.long_array.2" \
235	"\\^done,numchild=\"0\"" \
236	"get children of struct_declarations.long_array.2"
237
238# Test: c_variable-4.30
239# Desc: number of children of struct_declarations.long_array.2
240mi_gdb_test "-var-info-num-children struct_declarations.long_array.2" \
241	"\\^done,numchild=\"0\"" \
242	"get number of children of struct_declarations.long_array.2"
243
244# Test: c_variable-4.31
245# Desc: children of struct_declarations.long_array.3
246mi_gdb_test "-var-list-children struct_declarations.long_array.3" \
247	"\\^done,numchild=\"0\"" \
248	"get children of struct_declarations.long_array.3"
249
250# Test: c_variable-4.32
251# Desc: number of children of struct_declarations.long_array.3
252mi_gdb_test "-var-info-num-children struct_declarations.long_array.3" \
253	"\\^done,numchild=\"0\"" \
254	"get number of children of struct_declarations.long_array.3"
255
256# Test: c_variable-4.33
257# Desc: children of struct_declarations.long_array.4
258mi_gdb_test "-var-list-children struct_declarations.long_array.4" \
259	"\\^done,numchild=\"0\"" \
260	"get children of struct_declarations.long_array.4"
261
262# Test: c_variable-4.34
263# Desc: number of children of struct_declarations.long_array.4
264mi_gdb_test "-var-info-num-children struct_declarations.long_array.4" \
265	"\\^done,numchild=\"0\"" \
266	"get number of children of struct_declarations.long_array.4"
267
268# Test: c_variable-4.35
269# Desc: children of struct_declarations.long_array.5
270mi_gdb_test "-var-list-children struct_declarations.long_array.5" \
271	"\\^done,numchild=\"0\"" \
272	"get children of struct_declarations.long_array.5"
273
274# Test: c_variable-4.36
275# Desc: number of children of struct_declarations.long_array.5
276mi_gdb_test "-var-info-num-children struct_declarations.long_array.5" \
277	"\\^done,numchild=\"0\"" \
278	"get number of children of struct_declarations.long_array.5"
279
280# Test: c_variable-4.37
281# Desc: children of struct_declarations.long_array.6
282mi_gdb_test "-var-list-children struct_declarations.long_array.6" \
283	"\\^done,numchild=\"0\"" \
284	"get children of struct_declarations.long_array.6"
285
286# Test: c_variable-4.38
287# Desc: number of children of struct_declarations.long_array.6
288mi_gdb_test "-var-info-num-children struct_declarations.long_array.6" \
289	"\\^done,numchild=\"0\"" \
290	"get number of children of struct_declarations.long_array.6"
291
292# Test: c_variable-4.39
293# Desc: children of struct_declarations.long_array.7
294mi_gdb_test "-var-list-children struct_declarations.long_array.7" \
295	"\\^done,numchild=\"0\"" \
296	"get children of struct_declarations.long_array.7"
297
298# Test: c_variable-4.40
299# Desc: number of children of struct_declarations.long_array.7
300mi_gdb_test "-var-info-num-children struct_declarations.long_array.7" \
301	"\\^done,numchild=\"0\"" \
302	"get number of children of struct_declarations.long_array.7"
303
304# Test: c_variable-4.41
305# Desc: children of struct_declarations.long_array.8
306mi_gdb_test "-var-list-children struct_declarations.long_array.8" \
307	"\\^done,numchild=\"0\"" \
308	"get children of struct_declarations.long_array.8"
309
310# Test: c_variable-4.42
311# Desc: number of children of struct_declarations.long_array.8
312mi_gdb_test "-var-info-num-children struct_declarations.long_array.8" \
313	"\\^done,numchild=\"0\"" \
314	"get number of children of struct_declarations.long_array.8"
315
316
317# Test: c_variable-4.43
318# Desc: children of struct_declarations.long_array.9
319mi_gdb_test "-var-list-children struct_declarations.long_array.9" \
320	"\\^done,numchild=\"0\"" \
321	"get children of struct_declarations.long_array.9"
322
323# Test: c_variable-4.44
324# Desc: number of children of struct_declarations.long_array.9
325mi_gdb_test "-var-info-num-children struct_declarations.long_array.9" \
326	"\\^done,numchild=\"0\"" \
327	"get number of children of struct_declarations.long_array.9"
328
329# Test: c_variable-4.45
330# Desc: children of struct_declarations.u1.a
331mi_gdb_test "-var-list-children struct_declarations.u1.a" \
332	"\\^done,numchild=\"0\"" \
333	"get children of struct_declarations.u1.a"
334
335# Test: c_variable-4.46
336# Desc: number of children of struct_declarations.u1.a
337mi_gdb_test "-var-info-num-children struct_declarations.u1.a" \
338	"\\^done,numchild=\"0\"" \
339	"get number of children of struct_declarations.u1.a"
340
341# Test: c_variable-4.47
342# Desc: children of struct_declarations.u1.b
343mi_gdb_test "-var-list-children struct_declarations.u1.b" \
344	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"struct_declarations.u1.b.\\*b\",exp=\"\\*b\",numchild=\"0\",type=\"char\"\}\\\]" \
345	"get children of struct_declarations.u1.b"
346
347# Test: c_variable-4.48
348# Desc: number of children of struct_declarations.u1.b
349mi_gdb_test "-var-info-num-children struct_declarations.u1.b" \
350	"\\^done,numchild=\"1\"" \
351	"get number of children of struct_declarations.u1.b"
352
353# Test: c_variable-4.49
354# Desc: children of struct_declarations.u1.c
355mi_gdb_test "-var-list-children struct_declarations.u1.c" \
356	"\\^done,numchild=\"0\"" \
357	"get children of struct_declarations.u1.c"
358
359# Test: c_variable-4.50
360# Desc: number of children of struct_declarations.u1.c
361mi_gdb_test "-var-info-num-children struct_declarations.u1.c" \
362	"\\^done,numchild=\"0\"" \
363	"get number of children of struct_declarations.u1.c"
364
365# Test: c_variable-4.51
366# Desc: children of struct_declarations.u1.d
367mi_gdb_test "-var-list-children struct_declarations.u1.d" \
368	"\\^done,numchild=\"0\"" \
369	"get children of struct_declarations.u1.d"
370
371
372# Test: c_variable-4.52
373# Desc: number of children of struct_declarations.u1.d
374mi_gdb_test "-var-info-num-children struct_declarations.u1.d" \
375	"\\^done,numchild=\"0\"" \
376	"get number of children of struct_declarations.u1.d"
377
378
379# Test: c_variable-4.53
380# Desc: children of struct_declarations.s2.u2
381mi_gdb_test "-var-list-children struct_declarations.s2.u2" \
382	"\\^done,numchild=\"3\",children=\\\[child=\{name=\"struct_declarations.s2.u2.u1s1\",exp=\"u1s1\",numchild=\"4\",type=\"struct \{\\.\\.\\.\}\"\},child=\{name=\"struct_declarations.s2.u2.f\",exp=\"f\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.u2.u1s2\",exp=\"u1s2\",numchild=\"2\",type=\"struct \{\\.\\.\\.\}\"\}\\\]" \
383	"get children of struct_declarations.s2.u2"
384
385# Test: c_variable-4.54
386# Desc: number of children of struct_declarations.s2.u2
387mi_gdb_test "-var-info-num-children struct_declarations.s2.u2" \
388	"\\^done,numchild=\"3\"" \
389	"get number of children of struct_declarations.s2.u2"
390
391# Test: c_variable-4.55
392# Desc: children of struct_declarations.s2.g
393mi_gdb_test "-var-list-children struct_declarations.s2.g" \
394	"\\^done,numchild=\"0\"" \
395	"get children of struct_declarations.s2.g"
396
397# Test: c_variable-4.56
398# Desc: number of children of struct_declarations.s2.g
399mi_gdb_test "-var-info-num-children struct_declarations.s2.g" \
400	"\\^done,numchild=\"0\"" \
401	"get number of children of struct_declarations.s2.g"
402
403
404# Test: c_variable-4.57
405# Desc: children of struct_declarations.s2.h
406mi_gdb_test "-var-list-children struct_declarations.s2.h" \
407	"\\^done,numchild=\"0\"" \
408	"get children of struct_declarations.s2.h"
409
410# Test: c_variable-4.58
411# Desc: number of children of struct_declarations.s2.h
412mi_gdb_test "-var-info-num-children struct_declarations.s2.h" \
413	"\\^done,numchild=\"0\"" \
414	"get number of children of struct_declarations.s2.h"
415
416
417# Test: c_variable-4.59
418# Desc: children of struct_declarations.s2.i
419mi_gdb_test "-var-list-children struct_declarations.s2.i" \
420	"\\^done,numchild=\"10\",children=\\\[child=\{name=\"struct_declarations.s2.i.0\",exp=\"0\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.1\",exp=\"1\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.2\",exp=\"2\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.3\",exp=\"3\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.4\",exp=\"4\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.5\",exp=\"5\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.6\",exp=\"6\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.7\",exp=\"7\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.8\",exp=\"8\",numchild=\"0\",type=\"long int\"\},child=\{name=\"struct_declarations.s2.i.9\",exp=\"9\",numchild=\"0\",type=\"long int\"\}\\\]" \
421	"get children of struct_declarations.s2.i"
422
423# Test: c_variable-4.60
424# Desc: number of children of struct_declarations.s2.i
425mi_gdb_test "-var-info-num-children struct_declarations.s2.i" \
426	"\\^done,numchild=\"10\"" \
427	"get number of children of struct_declarations.s2.i"
428
429# Test: c_variable-4.61
430# Desc: children of struct_declarations.s2.u2.u1s1
431mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s1" \
432	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"struct_declarations.s2.u2.u1s1.d\",exp=\"d\",numchild=\"0\",type=\"int\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e\",exp=\"e\",numchild=\"10\",type=\"char \\\[10\\\]\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.func\",exp=\"func\",numchild=\"0\",type=\"int \\*\\(\\*\\)\\((void)?\\)\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.foo\",exp=\"foo\",numchild=\"0\",type=\"efoo\"\}\\\]" \
433	"get children of struct_declarations.s2.u2.u1s1"
434
435# Test: c_variable-4.62
436# Desc: number of children of struct_declarations.s2.u2.u1s1
437mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s1" \
438	"\\^done,numchild=\"4\"" \
439	"get number of children of struct_declarations.s2.u2.u1s1"
440
441# Test: c_variable-4.63
442# Desc: children of struct_declarations.s2.u2.f
443mi_gdb_test "-var-list-children struct_declarations.s2.u2.f" \
444	"\\^done,numchild=\"0\"" \
445	"get children of struct_declarations.s2.u2.f"
446
447# Test: c_variable-4.64
448# Desc: number of children of struct_declarations.s2.u2.f
449mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.f" \
450	"\\^done,numchild=\"0\"" \
451	"get number of children of struct_declarations.s2.u2.f"
452
453# Test: c_variable-4.65
454# Desc: children of struct_declarations.s2.u2.u1s2
455mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s2" \
456	"\\^done,numchild=\"2\",children=\\\[child=\{name=\"struct_declarations.s2.u2.u1s2.array_ptr\",exp=\"array_ptr\",numchild=\"2\",type=\"char \\\[2\\\]\"\},child=\{name=\"struct_declarations.s2.u2.u1s2.func\",exp=\"func\",numchild=\"0\",type=\"int \\(\\*\\)\\((int, char \\*)?\\)\"\}\\\]" \
457	"get children of struct_declarations.s2.u2.u1s2"
458
459# Test: c_variable-4.66
460# Desc: number of children of struct_declarations.s2.u2.u1s2
461mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s2" \
462	"\\^done,numchild=\"2\"" \
463	"get number of children of struct_declarations.s2.u2.u1s2"
464
465# Test: c_variable-4.67
466# Desc: children of struct_declarations.s2.u2.u1s1.d
467mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s1.d" \
468	"\\^done,numchild=\"0\"" \
469	"get children of struct_declarations.s2.u2.u1s1.d"
470
471# Test: c_variable-4.68
472# Desc: number of children of struct_declarations.s2.u2.u1s1.d
473mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s1.d" \
474	"\\^done,numchild=\"0\"" \
475	"get number of children of struct_declarations.s2.u2.u1s1.d"
476
477# Test: c_variable-4.69
478# Desc: children of struct_declarations.s2.u2.u1s1.e
479mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s1.e" \
480	"\\^done,numchild=\"10\",children=\\\[child=\{name=\"struct_declarations.s2.u2.u1s1.e.0\",exp=\"0\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.1\",exp=\"1\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.2\",exp=\"2\",numchild=\"0\",type=\"char\"\},child={name=\"struct_declarations.s2.u2.u1s1.e.3\",exp=\"3\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.4\",exp=\"4\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.5\",exp=\"5\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.6\",exp=\"6\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.7\",exp=\"7\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.8\",exp=\"8\",numchild=\"0\",type=\"char\"\},child=\{name=\"struct_declarations.s2.u2.u1s1.e.9\",exp=\"9\",numchild=\"0\",type=\"char\"\}\\\]" \
481	"get children of struct_declarations.s2.u2.u1s1.e"
482
483# Test: c_variable-4.70
484# Desc: number of children of struct_declarations.s2.u2.u1s1.e
485mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s1.e" \
486	"\\^done,numchild=\"10\"" \
487	"get number of children of struct_declarations.s2.u2.u1s1.e"
488
489
490# Test: c_variable-4.71
491# Desc: children of struct_declarations.s2.u2.u1s1.func
492mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s1.func" \
493	"\\^done,numchild=\"0\"" \
494	"get children of struct_declarations.s2.u2.u1s1.func"
495
496# Test: c_variable-4.72
497# Desc: number of children of struct_declarations.s2.u2.u1s1.func
498mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s1.func" \
499	"\\^done,numchild=\"0\"" \
500	"get number of children of struct_declarations.s2.u2.u1s1.func"
501
502
503# Test: c_variable-4.73
504# Desc: children of struct_declarations.s2.u2.u1s1.foo
505mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s1.foo" \
506	"\\^done,numchild=\"0\"" \
507	"get children of struct_declarations.s2.u2.u1s1.foo"
508
509# Test: c_variable-4.74
510# Desc: number of children of struct_declarations.s2.u2.u1s1.foo
511mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s1.foo" \
512	"\\^done,numchild=\"0\"" \
513	"get number of children of struct_declarations.s2.u2.u1s1.foo"
514
515
516# Test: c_variable-4.75
517# Desc: children of struct_declarations.s2.u2.u1s2.array_ptr
518mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s2.array_ptr" \
519	"\\^done,numchild=\"2\",children=\\\[child=\{name=\"struct_declarations.s2.u2.u1s2.array_ptr.0\",exp=\"0\",numchild=\"0\",type=\"char\"\},child={name=\"struct_declarations.s2.u2.u1s2.array_ptr.1\",exp=\"1\",numchild=\"0\",type=\"char\"\}\\\]" \
520	"get children of struct_declarations.s2.u2.u1s2.array_ptr"
521
522# Test: c_variable-4.76
523# Desc: number of children of struct_declarations.s2.u2.u1s2.array_ptr
524mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s2.array_ptr" \
525	"\\^done,numchild=\"2\"" \
526	"get number of children of struct_declarations.s2.u2.u1s2.array_ptr"
527
528# Test: c_variable-4.77
529# Desc: children of struct_declarations.s2.u2.u1s2.func
530mi_gdb_test "-var-list-children struct_declarations.s2.u2.u1s2.func" \
531	"\\^done,numchild=\"0\"" \
532	"get children of struct_declarations.s2.u2.u1s2.func"
533
534# Test: c_variable-4.78
535# Desc: number of children of struct_declarations.s2.u2.u1s2.func
536mi_gdb_test "-var-info-num-children struct_declarations.s2.u2.u1s2.func" \
537	"\\^done,numchild=\"0\"" \
538	"get number of children of struct_declarations.s2.u2.u1s2.func"
539
540# Test: c_variable-4.79
541# Desc: children of struct_declarations.int_ptr_ptr.*int_ptr_ptr
542mi_gdb_test "-var-list-children struct_declarations.int_ptr_ptr.*int_ptr_ptr" \
543	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr.\\*\\*int_ptr_ptr\",exp=\"\\*\\*int_ptr_ptr\",numchild=\"0\",type=\"int\"\}\\\]" \
544	"get children of struct_declarations.int_ptr_ptr.*int_ptr_ptr"
545#} {**int_ptr_ptr}
546
547# Test: c_variable-4.80
548# Desc: Number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr
549mi_gdb_test "-var-info-num-children struct_declarations.int_ptr_ptr.*int_ptr_ptr" \
550	"\\^done,numchild=\"1\"" \
551	"get number of children of struct_declarations.int_ptr_ptr.*int_ptr_ptr"
552
553
554# Step to "struct_declarations.integer = 123;"
555set line_dct_123 [gdb_get_line_number "struct_declarations.integer = 123;"]
556mi_step_to do_children_tests {} {.*var-cmd.c} \
557      $line_dct_123 "step to line \$line_dct_123"
558
559# Test: c_variable-4.81
560# Desc: create local variable "weird"
561mi_gdb_test "-var-create weird * weird" \
562	"\\^done,name=\"weird\",numchild=\"11\",type=\"weird_struct \\*\"" \
563	"create local variable weird"
564
565# Test: c_variable-4.82
566# Desc: children of weird
567mi_gdb_test "-var-list-children weird" \
568	"\\^done,numchild=\"11\",children=\\\[child=\{name=\"weird.integer\",exp=\"integer\",numchild=\"0\",type=\"int\"\},child=\{name=\"weird.character\",exp=\"character\",numchild=\"0\",type=\"char\"\},child=\{name=\"weird.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\"\},child=\{name=\"weird.long_int\",exp=\"long_int\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.int_ptr_ptr\",exp=\"int_ptr_ptr\",numchild=\"1\",type=\"int \\*\\*\"\},child=\{name=\"weird.long_array\",exp=\"long_array\",numchild=\"10\",type=\"long int \\\[10\\\]\"\},child=\{name=\"weird.func_ptr\",exp=\"func_ptr\",numchild=\"0\",type=\"void \\(\\*\\)\\((void)?\\)\"\},child=\{name=\"weird.func_ptr_struct\",exp=\"func_ptr_struct\",numchild=\"0\",type=\"struct _struct_decl \\(\\*\\)\\((int, char \\*, long int)?\\)\"\},child=\{name=\"weird.func_ptr_ptr\",exp=\"func_ptr_ptr\",numchild=\"0\",type=\"struct _struct_decl \\*\\(\\*\\)\\((int, char \\*, long int)?\\)\"\},child=\{name=\"weird.u1\",exp=\"u1\",numchild=\"4\",type=\"union \{\\.\\.\\.\}\"\},child=\{name=\"weird.s2\",exp=\"s2\",numchild=\"4\",type=\"struct \{\\.\\.\\.\}\"\}\\\]" \
569	"get children of weird"
570
571# Test: c_variable-4.83
572# Desc: number of children of weird
573mi_gdb_test "-var-info-num-children weird" \
574	"\\^done,numchild=\"11\"" \
575	"get number of children of weird"
576
577
578# Test: c_variable-4.84
579# Desc: children of weird->long_array
580mi_gdb_test "-var-list-children weird.long_array" \
581	"\\^done,numchild=\"10\",children=\\\[child=\{name=\"weird.long_array.0\",exp=\"0\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.1\",exp=\"1\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.2\",exp=\"2\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.3\",exp=\"3\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.4\",exp=\"4\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.5\",exp=\"5\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.6\",exp=\"6\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.7\",exp=\"7\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.8\",exp=\"8\",numchild=\"0\",type=\"long int\"\},child=\{name=\"weird.long_array.9\",exp=\"9\",numchild=\"0\",type=\"long int\"\}\\\]" \
582	"get children of weird.long_array"
583#gdbtk_test c_variable-4.84 {children of weird->long_array} {
584#  get_children weird.long_array
585#} {0 1 2 3 4 5 6 7 8 9}
586
587# Test: c_variable-4.85
588# Desc: number of children of weird.long_array
589mi_gdb_test "-var-info-num-children weird.long_array" \
590	"\\^done,numchild=\"10\"" \
591	"get number of children of weird.long_array"
592
593# Test: c_variable-4.86
594# Desc: children of weird.int_ptr_ptr
595mi_gdb_test "-var-list-children weird.int_ptr_ptr" \
596	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"weird.int_ptr_ptr.\\*int_ptr_ptr\",exp=\"\\*int_ptr_ptr\",numchild=\"1\",type=\"int \\*\"\}\\\]" \
597	"get children of weird.int_ptr_ptr"
598#gdbtk_test c_variable-4.86 {children of weird->int_ptr_ptr} {
599#  get_children weird.int_ptr_ptr
600#} {*int_ptr_ptr}
601
602# Test: c_variable-4.87
603# Desc: number of children of weird.int_ptr_ptr
604mi_gdb_test "-var-info-num-children weird.int_ptr_ptr" \
605	"\\^done,numchild=\"1\"" \
606	"get number of children of weird.int_ptr_ptr"
607
608# Test: c_variable-4.88
609# Desc: children of *weird->int_ptr_ptr
610mi_gdb_test "-var-list-children weird.int_ptr_ptr.*int_ptr_ptr" \
611	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"weird.int_ptr_ptr.\\*int_ptr_ptr.\\*\\*int_ptr_ptr\",exp=\"\\*\\*int_ptr_ptr\",numchild=\"0\",type=\"int\"\}\\\]" \
612	"get children of weird.int_ptr_ptr.*int_ptr_ptr"
613#gdbtk_test c_variable-4.88 {children of *weird->int_ptr_ptr} {
614#  get_children weird.int_ptr_ptr.*int_ptr_ptr
615#} {**int_ptr_ptr}
616
617# Test: c_variable-4.89
618# Desc: number of children *weird->int_ptr_ptr
619mi_gdb_test "-var-info-num-children weird.int_ptr_ptr.*int_ptr_ptr" \
620	"\\^done,numchild=\"1\"" \
621	"get number of children of weird.int_ptr_ptr.*int_ptr_ptr"
622
623# Test: c_variable-4.90
624# Desc: create weird->int_ptr_ptr
625mi_gdb_test "-var-create weird->int_ptr_ptr * weird->int_ptr_ptr" \
626	"\\^done,name=\"weird->int_ptr_ptr\",numchild=\"1\",type=\"int \\*\\*\"" \
627	"create local variable weird->int_ptr_ptr"
628
629# Test: c_variable-4.91
630# Desc: children of weird->int_ptr_ptr
631mi_gdb_test "-var-list-children weird->int_ptr_ptr" \
632	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr\",exp=\"\\*weird->int_ptr_ptr\",numchild=\"1\",type=\"int \\*\"\}\\\]" \
633	"get children of weird->int_ptr_ptr"
634
635
636# Test: c_variable-4.92
637# Desc: number of children of (weird->int_ptr_ptr)
638mi_gdb_test "-var-info-num-children weird->int_ptr_ptr" \
639	"\\^done,numchild=\"1\"" \
640	"get number of children of weird->int_ptr_ptr"
641
642# Test: c_variable-4.93
643# Desc: children of *(weird->int_ptr_ptr)
644mi_gdb_test "-var-list-children weird->int_ptr_ptr.*weird->int_ptr_ptr" \
645	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr.\\*\\*weird->int_ptr_ptr\",exp=\"\\*\\*weird->int_ptr_ptr\",numchild=\"0\",type=\"int\"\}\\\]" \
646	"get children of weird->int_ptr_ptr.*weird->int_ptr_ptr"
647
648# Test: c_variable-4.94
649# Desc: number of children of *(weird->int_ptr_ptr)
650mi_gdb_test "-var-info-num-children weird->int_ptr_ptr.*weird->int_ptr_ptr" \
651	"\\^done,numchild=\"1\"" \
652	"get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr"
653
654# Test: c_variable-4.95
655# Desc: children of *(*(weird->int_ptr_ptr))
656mi_gdb_test "-var-list-children weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr" \
657	"\\^done,numchild=\"0\"" \
658	"get children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr"
659
660# Test: c_variable-4.96
661# Desc: number of children of *(*(weird->int_ptr_ptr))
662mi_gdb_test "-var-info-num-children weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr" \
663	"\\^done,numchild=\"0\"" \
664	"get number of children of weird->int_ptr_ptr.*weird->int_ptr_ptr.**weird->int_ptr_ptr"
665
666# Test: c_variable-4.97
667# Desc: is weird editable
668mi_gdb_test "-var-show-attributes weird" \
669	"\\^done,attr=\"editable\"" \
670	"is weird editable"
671
672# Test: c_variable-4.98
673# Desc: is weird->int_ptr_ptr editable
674mi_gdb_test "-var-show-attributes weird->int_ptr_ptr" \
675	"\\^done,attr=\"editable\"" \
676	"is weird->int_ptr_ptr editable"
677
678# Test: c_variable-4.99
679# Desc: is *(weird->int_ptr_ptr) editable
680mi_gdb_test "-var-show-attributes weird.int_ptr_ptr.*int_ptr_ptr" \
681	"\\^done,attr=\"editable\"" \
682	"is weird.int_ptr_ptr.*int_ptr_ptr editable"
683
684# Test: c_variable-4.100
685# Desc: is *(*(weird->int_ptr_ptr)) editable
686mi_gdb_test "-var-show-attributes weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr" \
687	"\\^done,attr=\"editable\"" \
688	"is weird.int_ptr_ptr.*int_ptr_ptr.**int_ptr_ptr editable"
689
690# Test: c_variable-4.101
691# Desc: is weird->u1 editable
692mi_gdb_test "-var-show-attributes weird.u1" \
693	"\\^done,attr=\"noneditable\"" \
694	"is weird.u1 editable"
695
696# Test: c_variable-4.102
697# Desc: is weird->s2 editable
698mi_gdb_test "-var-show-attributes weird.s2" \
699	"\\^done,attr=\"noneditable\"" \
700	"is weird.s2 editable"
701
702# Test: c_variable-4.103
703# Desc: is struct_declarations.u1.a editable
704mi_gdb_test "-var-show-attributes struct_declarations.u1.a" \
705	"\\^done,attr=\"editable\"" \
706	"is struct_declarations.u1.a editable"
707
708# Test: c_variable-4.104
709# Desc: is struct_declarations.u1.b editable
710mi_gdb_test "-var-show-attributes struct_declarations.u1.b" \
711	"\\^done,attr=\"editable\"" \
712	"is struct_declarations.u1.b editable"
713
714# Test: c_variable-4.105
715# Desc: is struct_declarations.u1.c editable
716mi_gdb_test "-var-show-attributes struct_declarations.u1.c" \
717	"\\^done,attr=\"editable\"" \
718	"is struct_declarations.u1.c editable"
719
720# Test: c_variable-4.106
721# Desc: is struct_declarations.long_array editable
722mi_gdb_test "-var-show-attributes struct_declarations.long_array" \
723	"\\^done,attr=\"noneditable\"" \
724	"is struct_declarations.long_array editable"
725
726# Test: c_variable-4.107
727# Desc: is struct_declarations.long_array[0] editable
728mi_gdb_test "-var-show-attributes struct_declarations.long_array.0" \
729	"\\^done,attr=\"editable\"" \
730	"is struct_declarations.long_array.0 editable"
731
732# Test: c_variable-4.108
733# Desc: is struct_declarations editable
734mi_gdb_test "-var-show-attributes struct_declarations" \
735	"\\^done,attr=\"noneditable\"" \
736	"is struct_declarations editable"
737
738mi_gdb_test "-var-delete weird" \
739	"\\^done,ndeleted=\"24\"" \
740	"delete var weird"
741
742#####                         #####
743#                                 #
744# children and update tests #
745#                                 #
746#####                         #####
747
748# Test: c_variable-5.1
749# Desc: check that nothing changed
750mi_gdb_test "-var-update *" \
751	"\\^done,changelist=\\\[\\\]" \
752	"update all vars. None changed"
753
754# Step over "struct_declarations.integer = 123;"
755mi_step_to do_children_tests {} {.*var-cmd.c} \
756    [expr $line_dct_123 + 1] "step \$line_dct_123 + 1"
757
758# Test: c_variable-5.2
759# Desc: check that integer changed
760mi_gdb_test "-var-update *" \
761	"\\^done,changelist=\\\[\{name=\"struct_declarations.integer\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
762	"update all vars struct_declarations.integer"
763
764# Step over:
765#    weird->char_ptr = "hello";
766#    bar = 2121;
767#    foo = &bar;
768mi_execute_to "exec-step 3" "end-stepping-range" do_children_tests {} {.*var-cmd.c} \
769    [expr $line_dct_123 + 4] {} "step \$line_dct_123 + 4"
770
771# Test: c_variable-5.3
772# Desc: check that char_ptr changed
773mi_gdb_test "-var-update *" \
774	"\\^done,changelist=\\\[\{name=\"struct_declarations.char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.char_ptr.\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
775	"update all vars struct_declarations.char_ptr"
776
777# Step over "struct_declarations.int_ptr_ptr = &foo;"
778mi_step_to do_children_tests {} {.*var-cmd.c} \
779    [expr $line_dct_123 + 5] "step \$line_dct_123 + 5"
780
781# Test: c_variable-5.4
782# Desc: check that int_ptr_ptr and children changed
783mi_gdb_test "-var-update *" \
784	"\\^done,changelist=\\\[\{name=\"weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"weird->int_ptr_ptr.\\*weird->int_ptr_ptr.\\*\\*weird->int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.int_ptr_ptr.\\*int_ptr_ptr.\\*\\*int_ptr_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
785	"update all vars int_ptr_ptr and children changed"
786
787# Step over "weird->long_array[0] = 1234;"
788mi_step_to do_children_tests {} {.*var-cmd.c} \
789    [expr $line_dct_123 + 6] "step \$line_dct_123 + 6"
790
791# Test: c_variable-5.5
792# Desc: check that long_array[0] changed
793mi_gdb_test "-var-update *" \
794	"\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.0\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
795	"update all vars struct_declarations.long_array.0 changed"
796
797# Step over "struct_declarations.long_array[1] = 2345;"
798mi_step_to do_children_tests {} {.*var-cmd.c} \
799    [expr $line_dct_123 + 7] "step \$line_dct_123 + 7"
800
801# Test: c_variable-5.6
802# Desc: check that long_array[1] changed
803mi_gdb_test "-var-update *" \
804	"\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.1\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
805	"update all vars struct_declarations.long_array.1 changed"
806
807# Step over "weird->long_array[2] = 3456;"
808mi_step_to do_children_tests {} {.*var-cmd.c} \
809    [expr $line_dct_123 + 8] "step \$line_dct_123 + 8"
810
811# Test: c_variable-5.7
812# Desc: check that long_array[2] changed
813mi_gdb_test "-var-update *" \
814	"\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.2\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
815	"update all vars struct_declarations.long_array.2 changed"
816
817# Step over:
818#    struct_declarations.long_array[3] = 4567;
819#    weird->long_array[4] = 5678;
820#    struct_declarations.long_array[5] = 6789;
821#    weird->long_array[6] = 7890;
822#    struct_declarations.long_array[7] = 8901;
823#    weird->long_array[8] = 9012;
824#    struct_declarations.long_array[9] = 1234;
825
826set line_dct_nothing [gdb_get_line_number "weird->func_ptr = nothing;"]
827mi_execute_to "exec-step 7" "end-stepping-range" do_children_tests {} {.*var-cmd.c} \
828    $line_dct_nothing {} "step \$line_dct_nothing"
829
830# Test: c_variable-5.8
831# Desc: check that long_array[3-9] changed
832mi_gdb_test "-var-update *" \
833	"\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.3\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.4\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.5\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.6\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.7\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.8\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.9\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
834	"update all vars struct_declarations.long_array.3-9 changed"
835
836
837# Step over "weird->func_ptr = nothing;"
838set line_dct_a0_0 [gdb_get_line_number "a0 = '0';"]
839mi_step_to do_children_tests {} {.*var-cmd.c} \
840    $line_dct_a0_0 "step \$line_dct_a0_0"
841
842# Test: c_variable-5.9
843# Desc: check that func_ptr changed
844mi_gdb_test "-var-update *" \
845	"\\^done,changelist=\\\[\{name=\"struct_declarations.func_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
846	"update all vars struct_declarations.func_ptr changed"
847
848# Delete all variables
849mi_gdb_test "-var-delete struct_declarations" \
850	"\\^done,ndeleted=\"65\"" \
851	"delete var struct_declarations"
852
853mi_gdb_test "-var-delete weird->int_ptr_ptr" \
854	"\\^done,ndeleted=\"3\"" \
855	"delete var weird->int_ptr_ptr"
856
857# Step over all lines:
858# ...
859#   psnp = &snp0;
860
861set line_dct_snp0 [gdb_get_line_number "psnp = &snp0;"]
862mi_execute_to "exec-step 43" "end-stepping-range" do_children_tests {} {.*var-cmd.c} \
863    [expr $line_dct_snp0 + 1] {} "step \$line_dct_snp0 + 1"
864
865# Test: c_variable-5.10
866# Desc: create psnp->char_ptr
867mi_gdb_test "-var-create  psnp->char_ptr *  psnp->char_ptr" \
868	"\\^done,name=\"psnp->char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\\*\"" \
869	"create local variable  psnp->char_ptr"
870
871# Test: c_variable-5.11
872# Desc: children of psnp->char_ptr
873mi_gdb_test "-var-list-children psnp->char_ptr" \
874	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr\",exp=\"\\*psnp->char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\"\}\\\]" \
875	"get children of psnp->char_ptr"
876
877# Test: c_variable-5.12
878# Desc: number of children of psnp->char_ptr
879mi_gdb_test "-var-info-num-children psnp->char_ptr" \
880	"\\^done,numchild=\"1\"" \
881	"get number of children of psnp->char_ptr"
882
883# Test: c_variable-5.13
884# Desc: children of *(psnp->char_ptr)
885mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr" \
886	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr\",exp=\"\\*\\*psnp->char_ptr\",numchild=\"1\",type=\"char \\*\\*\"\}\\\]" \
887	"get children of psnp->char_ptr.*psnp->char_ptr"
888
889# Test: c_variable-5.14
890# Desc: number of children of *(psnp->char_ptr)
891mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr" \
892	"\\^done,numchild=\"1\"" \
893	"get number of children of psnp->char_ptr.*psnp->char_ptr"
894
895# Test: c_variable-5.15
896# Desc: children of *(*(psnp->char_ptr))
897mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr" \
898	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr\",exp=\"\\*\\*\\*psnp->char_ptr\",numchild=\"1\",type=\"char \\*\"\}\\\]" \
899	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr"
900
901# Test: c_variable-5.15B
902# Desc: children of *(*(*(psnp->char_ptr)))
903mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr" \
904	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr.\\*\\*\\*\\*psnp->char_ptr\",exp=\"\\*\\*\\*\\*psnp->char_ptr\",numchild=\"0\",type=\"char\"\}\\\]" \
905	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr"
906
907# Test: c_variable-5.16
908# Desc: number of children of *(*(psnp->char_ptr))
909mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr" \
910	"\\^done,numchild=\"1\"" \
911	"get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr"
912
913# Test: c_variable-5.17
914# Desc: children of *(*(*(psnp->char_ptr)))
915mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr" \
916	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr.\\*\\*\\*\\*psnp->char_ptr\",exp=\"\\*\\*\\*\\*psnp->char_ptr\",numchild=\"0\",type=\"char\"\}\\\]" \
917	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr"
918
919# Test: c_variable-5.18
920# Desc: number of children of *(*(*(psnp->char_ptr)))
921mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr" \
922	"\\^done,numchild=\"1\"" \
923	"get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr"
924
925# Test: c_variable-5.17B
926# Desc: children of *(*(*(*(psnp->char_ptr))))
927mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr" \
928	"\\^done,numchild=\"0\"" \
929	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr"
930
931# Test: c_variable-5.18B
932# Desc: number of children of *(*(*(*(psnp->char_ptr))))
933mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr" \
934	"\\^done,numchild=\"0\"" \
935	"get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr"
936
937
938# Test: c_variable-5.19
939# Desc: create psnp->long_ptr
940mi_gdb_test "-var-create  psnp->long_ptr *  psnp->long_ptr" \
941	"\\^done,name=\"psnp->long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\\*\"" \
942	"create local variable  psnp->long_ptr"
943
944# Test: c_variable-5.20
945# Desc: children of psnp->long_ptr
946mi_gdb_test "-var-list-children psnp->long_ptr" \
947	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->long_ptr.\\*psnp->long_ptr\",exp=\"\\*psnp->long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\"\}\\\]" \
948	"get children of psnp->long_ptr"
949
950# Test: c_variable-5.21
951# Desc: number of children of psnp->long_ptr
952mi_gdb_test "-var-info-num-children psnp->long_ptr" \
953	"\\^done,numchild=\"1\"" \
954	"get number of children of psnp->long_ptr"
955
956# Test: c_variable-5.22
957# Desc: children of *(psnp->long_ptr)
958mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr" \
959	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr\",exp=\"\\*\\*psnp->long_ptr\",numchild=\"1\",type=\"long int \\*\\*\"\}\\\]" \
960	"get children of psnp->long_ptr.*psnp->long_ptr"
961
962
963# Test: c_variable-5.23
964# Desc: number of children of *(psnp->long_ptr)
965mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr" \
966	"\\^done,numchild=\"1\"" \
967	"get number of children of psnp->long_ptr.*psnp->long_ptr"
968
969# Test: c_variable-5.24
970# Desc: children of *(*(psnp->long_ptr))
971mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr" \
972	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr\",exp=\"\\*\\*\\*psnp->long_ptr\",numchild=\"1\",type=\"long int \\*\"\}\\\]" \
973	"get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr"
974
975# Test: c_variable-5.25
976# Desc: number of children of *(*(psnp->long_ptr))
977mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr" \
978	"\\^done,numchild=\"1\"" \
979	"get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr"
980
981# Test: c_variable-5.26
982# Desc: children of *(*(*(psnp->long_ptr)))
983mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr" \
984	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr.\\*\\*\\*\\*psnp->long_ptr\",exp=\"\\*\\*\\*\\*psnp->long_ptr\",numchild=\"0\",type=\"long int\"\}\\\]" \
985	"get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr"
986
987# Test: c_variable-5.27
988# Desc: number of children of *(*(*(psnp->long_ptr)))
989mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr" \
990	"\\^done,numchild=\"1\"" \
991	"get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr"
992
993# Test: c_variable-5.28
994# Desc: children of *(*(*(*(psnp->long_ptr))))
995mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr" \
996	"\\^done,numchild=\"0\"" \
997	"get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr"
998
999# Test: c_variable-5.29
1000# Desc: number of children of *(*(*(*(psnp->long_ptr))))
1001mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr" \
1002	"\\^done,numchild=\"0\"" \
1003	"get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr"
1004
1005# Test: c_variable-5.30
1006# Desc: create psnp->ptrs
1007mi_gdb_test "-var-create  psnp->ptrs *  psnp->ptrs" \
1008	"\\^done,name=\"psnp->ptrs\",numchild=\"3\",type=\"struct _struct_n_pointer \\*\\\[3\\\]\"" \
1009	"create local variable  psnp->ptrs"
1010
1011# Test: c_variable-5.31
1012# Desc: children of psnp->ptrs
1013mi_gdb_test "-var-list-children psnp->ptrs" \
1014	"\\^done,numchild=\"3\",children=\\\[child=\{name=\"psnp->ptrs.0\",exp=\"0\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\},child=\{name=\"psnp->ptrs.1\",exp=\"1\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\},child=\{name=\"psnp->ptrs.2\",exp=\"2\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\}\\\]" \
1015	"get children of psnp->ptrs"
1016
1017# Test: c_variable-5.32
1018# Desc: number of children of psnp->ptrs
1019mi_gdb_test "-var-info-num-children psnp->ptrs" \
1020	"\\^done,numchild=\"3\"" \
1021	"get number of children of psnp->ptrs"
1022
1023# Test: c_variable-5.33
1024# Desc: children of psnp->ptrs[0]
1025mi_gdb_test "-var-list-children psnp->ptrs.0" \
1026	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"psnp->ptrs.0.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.long_ptr\",exp=\"long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.ptrs\",exp=\"ptrs\",numchild=\"3\",type=\"struct _struct_n_pointer \\*\\\[3\\\]\"\},child=\{name=\"psnp->ptrs.0.next\",exp=\"next\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\}\\\]" \
1027	"get children of psnp->ptrs.0"
1028
1029# Test: c_variable-5.34
1030# Desc: number of children of psnp->ptrs[0]
1031mi_gdb_test "-var-info-num-children psnp->ptrs.0" \
1032	"\\^done,numchild=\"4\"" \
1033	"get number of children of psnp->ptrs.0"
1034
1035# Test: c_variable-5.35
1036# Desc: children of psnp->ptrs[0]->next
1037mi_gdb_test "-var-list-children psnp->ptrs.0.next" \
1038	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.next.long_ptr\",exp=\"long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.next.ptrs\",exp=\"ptrs\",numchild=\"3\",type=\"struct _struct_n_pointer \\*\\\[3\\\]\"\},child=\{name=\"psnp->ptrs.0.next.next\",exp=\"next\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\}\\\]" \
1039	"get children of psnp->ptrs.0.next"
1040
1041#} {char_ptr long_ptr ptrs next}
1042
1043# Test: c_variable-5.36
1044# Desc: number of children of psnp->ptrs[0]->next
1045mi_gdb_test "-var-info-num-children psnp->ptrs.0.next" \
1046	"\\^done,numchild=\"4\"" \
1047	"get number of children of psnp->ptrs.0.next"
1048
1049
1050# Test: c_variable-5.37
1051# Desc: children of psnp->ptrs[0]->next->char_ptr
1052mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr" \
1053	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr\",exp=\"\\*char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\"\}\\\]" \
1054	"get children of psnp->ptrs.0.next.char_ptr"
1055
1056#gdbtk_test c_variable-5.37 {children of psnp->ptrs[0]->next->char_ptr} {
1057#  get_children psnp->ptrs.0.next.char_ptr
1058#} {*char_ptr}
1059
1060# Test: c_variable-5.38
1061# Desc: number of children of psnp->ptrs[0]->next->char_ptr
1062mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr" \
1063	"\\^done,numchild=\"1\"" \
1064	"get number of children of psnp->ptrs.0.next.char_ptr"
1065
1066# Test: c_variable-5.39
1067# Desc: children of *psnp->ptrs[0]->next->char_ptr
1068mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr" \
1069	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr\",exp=\"\\*\\*char_ptr\",numchild=\"1\",type=\"char \\*\\*\"\}\\\]" \
1070	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr"
1071
1072# Test: c_variable-5.40
1073# Desc: number of children of *psnp->ptrs[0]->next->char_ptr
1074mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr" \
1075	"\\^done,numchild=\"1\"" \
1076	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr"
1077
1078# Test: c_variable-5.41
1079# Desc: children of **psnp->ptrs[0]->next->char_ptr
1080mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr" \
1081	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr\",exp=\"\\*\\*\\*char_ptr\",numchild=\"1\",type=\"char \\*\"\}\\\]" \
1082	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr"
1083
1084# Test: c_variable-5.41B
1085# Desc: children of ***psnp->ptrs[0]->next->char_ptr
1086mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr" \
1087	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr.\\*\\*\\*\\*char_ptr\",exp=\"\\*\\*\\*\\*char_ptr\",numchild=\"0\",type=\"char\"\}\\\]" \
1088	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr"
1089
1090# Test: c_variable-5.42
1091# Desc: number of children of **psnp->ptrs[0]->next->char_ptr
1092mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr" \
1093	"\\^done,numchild=\"1\"" \
1094	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr"
1095
1096# Test: c_variable-5.43
1097# Desc: children of ***psnp->ptrs[0]->next->char_ptr
1098mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr" \
1099	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr.\\*\\*\\*\\*char_ptr\",exp=\"\\*\\*\\*\\*char_ptr\",numchild=\"0\",type=\"char\"\}\\\]" \
1100	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
1101
1102# Test: c_variable-5.44
1103# Desc: number of children of ***psnp->ptrs[0]->next->char_ptr
1104mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr" \
1105	"\\^done,numchild=\"1\"" \
1106	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
1107
1108# Test: c_variable-5.43B
1109# Desc: children of ****psnp->ptrs[0]->next->char_ptr
1110mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr" \
1111	"\\^done,numchild=\"0\"" \
1112	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
1113
1114# Test: c_variable-5.44B
1115# Desc: number of children of ****psnp->ptrs[0]->next->char_ptr
1116mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr" \
1117	"\\^done,numchild=\"0\"" \
1118	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
1119
1120# Test: c_variable-5.45
1121# Desc: children of psnp->ptrs[0]->next->next
1122mi_gdb_test "-var-list-children psnp->ptrs.0.next.next" \
1123	"\\^done,numchild=\"4\",children=\\\[child=\{name=\"psnp->ptrs.0.next.next.char_ptr\",exp=\"char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.next.next.long_ptr\",exp=\"long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\\*\"\},child=\{name=\"psnp->ptrs.0.next.next.ptrs\",exp=\"ptrs\",numchild=\"3\",type=\"struct _struct_n_pointer \\*\\\[3\\\]\"\},child=\{name=\"psnp->ptrs.0.next.next.next\",exp=\"next\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\}\\\]" \
1124	"get children of psnp->ptrs.0.next.next"
1125
1126# Test: c_variable-5.46
1127# Desc: children of psnp->ptrs[0]->next->next->ptrs
1128mi_gdb_test "-var-list-children psnp->ptrs.0.next.next.ptrs" \
1129	"\\^done,numchild=\"3\",children=\\\[child=\{name=\"psnp->ptrs.0.next.next.ptrs.0\",exp=\"0\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\},child=\{name=\"psnp->ptrs.0.next.next.ptrs.1\",exp=\"1\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\},child=\{name=\"psnp->ptrs.0.next.next.ptrs.2\",exp=\"2\",numchild=\"4\",type=\"struct _struct_n_pointer \\*\"\}\\\]" \
1130	"get children of psnp->ptrs.0.next.next.ptrs"
1131
1132#  Step over "snp0.char_ptr = &b3;"
1133mi_step_to do_children_tests {} {.*var-cmd.c} \
1134    [expr $line_dct_snp0 + 2] "step \$line_dct_snp0 + 2"
1135
1136# Test: c_variable-5.47
1137# Desc: check that psnp->char_ptr (and [0].char_ptr) changed
1138mi_gdb_test "-var-update *" \
1139	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr.\\*\\*\\*psnp->char_ptr.\\*\\*\\*\\*psnp->char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
1140	"update all vars psnp->char_ptr (and 0.char_ptr) changed"
1141
1142#  Step over "snp1.char_ptr = &c3;"
1143mi_step_to do_children_tests {} {.*var-cmd.c} \
1144    [expr $line_dct_snp0 + 3] "step \$line_dct_snp0 + 3"
1145
1146# Test: c_variable-5.48
1147# Desc: check that psnp->next->char_ptr (and [1].char_ptr) changed
1148mi_gdb_test "-var-update *" \
1149	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr.\\*\\*\\*char_ptr.\\*\\*\\*\\*char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
1150	"update all vars psnp->next->char_ptr (and 1.char_ptr) changed"
1151
1152
1153#  Step over "snp2.char_ptr = &a3;"
1154mi_step_to do_children_tests {} {.*var-cmd.c} \
1155    [expr $line_dct_snp0 + 4] "step \$line_dct_snp0 + 4"
1156
1157# Test: c_variable-5.49
1158# Desc: check that psnp->next->next->char_ptr (and [2].char_ptr) changed
1159mi_gdb_test "-var-update *" \
1160	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.next.char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
1161	"update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed"
1162
1163
1164#  Step over "snp0.long_ptr = &y3;"
1165mi_step_to do_children_tests {} {.*var-cmd.c} \
1166    [expr $line_dct_snp0 + 5] "step \$line_dct_snp0 + 5"
1167
1168# Test: c_variable-5.50
1169# Desc: check that psnp->long_ptr (and [0].long_ptr) changed
1170mi_gdb_test "-var-update *" \
1171	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr.\\*\\*\\*psnp->long_ptr.\\*\\*\\*\\*psnp->long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
1172	"update all vars psnp->long_ptr (and 0.long_ptr) changed"
1173
1174
1175#  Step over "snp1.long_ptr = &x3;"
1176mi_step_to do_children_tests {} {.*var-cmd.c} \
1177    [expr $line_dct_snp0 + 6] "step \$line_dct_snp0 + 6"
1178
1179# Test: c_variable-5.51
1180# Desc: check that psnp->next->long_ptr (and [1].long_ptr) changed
1181# Why does this have a FIXME?
1182setup_xfail *-*-*
1183mi_gdb_test "-var-update *" \
1184	"FIXME\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
1185	"update all vars psnp->next->long_ptr (and 1.long_ptr) changed"
1186clear_xfail *-*-*
1187
1188# This command produces this error message:
1189# &"warning: varobj_list: assertion failed - mycount <> 0\n"
1190#
1191
1192#  Step over "snp2.long_ptr = &z3;"
1193mi_step_to do_children_tests {} {.*var-cmd.c} \
1194    [expr $line_dct_snp0 + 7] "step \$line_dct_snp0 + 7"
1195
1196# Test: c_variable-5.52
1197# Desc: check that psnp->next->next->long_ptr (and [2].long_ptr) changed
1198mi_gdb_test "-var-update *" \
1199	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.next.long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
1200	"update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed"
1201
1202
1203
1204
1205mi_gdb_exit
1206return 0
1207