1# Copyright 1999, 2000, 2001, 2002, 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=mi"
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
836mi_gdb_test "-var-list-children --all-values struct_declarations.long_array" \
837        "\\^done,numchild=\"10\",children=\\\[child=\{name=\"struct_declarations.long_array.0\",exp=\"0\",numchild=\"0\",value=\"1234\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.1\",exp=\"1\",numchild=\"0\",value=\"2345\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.2\",exp=\"2\",numchild=\"0\",value=\"3456\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.3\",exp=\"3\",numchild=\"0\",value=\"4567\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.4\",exp=\"4\",numchild=\"0\",value=\"5678\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.5\",exp=\"5\",numchild=\"0\",value=\"6789\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.6\",exp=\"6\",numchild=\"0\",value=\"7890\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.7\",exp=\"7\",numchild=\"0\",value=\"8901\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.8\",exp=\"8\",numchild=\"0\",value=\"9012\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.9\",exp=\"9\",numchild=\"0\",value=\"1234\",type=\"long int\"\}\\\]" \
838                "listing of names and values of children"
839
840# Step over "weird->func_ptr = nothing;"
841set line_dct_a0_0 [gdb_get_line_number "a0 = '0';"]
842mi_step_to do_children_tests {} {.*var-cmd.c} \
843    $line_dct_a0_0 "step \$line_dct_a0_0"
844
845# Test: c_variable-5.9
846# Desc: check that func_ptr changed
847mi_gdb_test "-var-update *" \
848	"\\^done,changelist=\\\[\{name=\"struct_declarations.func_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
849	"update all vars struct_declarations.func_ptr changed"
850
851# Delete all variables
852mi_gdb_test "-var-delete struct_declarations" \
853	"\\^done,ndeleted=\"65\"" \
854	"delete var struct_declarations"
855
856mi_gdb_test "-var-delete weird->int_ptr_ptr" \
857	"\\^done,ndeleted=\"3\"" \
858	"delete var weird->int_ptr_ptr"
859
860# Step over all lines:
861# ...
862#   psnp = &snp0;
863
864set line_dct_snp0 [gdb_get_line_number "psnp = &snp0;"]
865mi_execute_to "exec-step 43" "end-stepping-range" do_children_tests {} {.*var-cmd.c} \
866    [expr $line_dct_snp0 + 1] {} "step \$line_dct_snp0 + 1"
867
868# Test: c_variable-5.10
869# Desc: create psnp->char_ptr
870mi_gdb_test "-var-create  psnp->char_ptr *  psnp->char_ptr" \
871	"\\^done,name=\"psnp->char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\\*\"" \
872	"create local variable  psnp->char_ptr"
873
874# Test: c_variable-5.11
875# Desc: children of psnp->char_ptr
876mi_gdb_test "-var-list-children psnp->char_ptr" \
877	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr\",exp=\"\\*psnp->char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\"\}\\\]" \
878	"get children of psnp->char_ptr"
879
880# Test: c_variable-5.12
881# Desc: number of children of psnp->char_ptr
882mi_gdb_test "-var-info-num-children psnp->char_ptr" \
883	"\\^done,numchild=\"1\"" \
884	"get number of children of psnp->char_ptr"
885
886# Test: c_variable-5.13
887# Desc: children of *(psnp->char_ptr)
888mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr" \
889	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->char_ptr.\\*psnp->char_ptr.\\*\\*psnp->char_ptr\",exp=\"\\*\\*psnp->char_ptr\",numchild=\"1\",type=\"char \\*\\*\"\}\\\]" \
890	"get children of psnp->char_ptr.*psnp->char_ptr"
891
892# Test: c_variable-5.14
893# Desc: number of children of *(psnp->char_ptr)
894mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr" \
895	"\\^done,numchild=\"1\"" \
896	"get number of children of psnp->char_ptr.*psnp->char_ptr"
897
898# Test: c_variable-5.15
899# Desc: children of *(*(psnp->char_ptr))
900mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr" \
901	"\\^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 \\*\"\}\\\]" \
902	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr"
903
904# Test: c_variable-5.15B
905# Desc: children of *(*(*(psnp->char_ptr)))
906mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr" \
907	"\\^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\"\}\\\]" \
908	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr"
909
910# Test: c_variable-5.16
911# Desc: number of children of *(*(psnp->char_ptr))
912mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr" \
913	"\\^done,numchild=\"1\"" \
914	"get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr"
915
916# Test: c_variable-5.17
917# Desc: children of *(*(*(psnp->char_ptr)))
918mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr" \
919	"\\^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\"\}\\\]" \
920	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr"
921
922# Test: c_variable-5.18
923# Desc: number of children of *(*(*(psnp->char_ptr)))
924mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr" \
925	"\\^done,numchild=\"1\"" \
926	"get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr"
927
928# Test: c_variable-5.17B
929# Desc: children of *(*(*(*(psnp->char_ptr))))
930mi_gdb_test "-var-list-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr" \
931	"\\^done,numchild=\"0\"" \
932	"get children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr"
933
934# Test: c_variable-5.18B
935# Desc: number of children of *(*(*(*(psnp->char_ptr))))
936mi_gdb_test "-var-info-num-children psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr" \
937	"\\^done,numchild=\"0\"" \
938	"get number of children of psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr.****psnp->char_ptr"
939
940
941# Test: c_variable-5.19
942# Desc: create psnp->long_ptr
943mi_gdb_test "-var-create  psnp->long_ptr *  psnp->long_ptr" \
944	"\\^done,name=\"psnp->long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\\*\"" \
945	"create local variable  psnp->long_ptr"
946
947# Test: c_variable-5.20
948# Desc: children of psnp->long_ptr
949mi_gdb_test "-var-list-children psnp->long_ptr" \
950	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->long_ptr.\\*psnp->long_ptr\",exp=\"\\*psnp->long_ptr\",numchild=\"1\",type=\"long int \\*\\*\\*\"\}\\\]" \
951	"get children of psnp->long_ptr"
952
953# Test: c_variable-5.21
954# Desc: number of children of psnp->long_ptr
955mi_gdb_test "-var-info-num-children psnp->long_ptr" \
956	"\\^done,numchild=\"1\"" \
957	"get number of children of psnp->long_ptr"
958
959# Test: c_variable-5.22
960# Desc: children of *(psnp->long_ptr)
961mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr" \
962	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->long_ptr.\\*psnp->long_ptr.\\*\\*psnp->long_ptr\",exp=\"\\*\\*psnp->long_ptr\",numchild=\"1\",type=\"long int \\*\\*\"\}\\\]" \
963	"get children of psnp->long_ptr.*psnp->long_ptr"
964
965
966# Test: c_variable-5.23
967# Desc: number of children of *(psnp->long_ptr)
968mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr" \
969	"\\^done,numchild=\"1\"" \
970	"get number of children of psnp->long_ptr.*psnp->long_ptr"
971
972# Test: c_variable-5.24
973# Desc: children of *(*(psnp->long_ptr))
974mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr" \
975	"\\^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 \\*\"\}\\\]" \
976	"get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr"
977
978# Test: c_variable-5.25
979# Desc: number of children of *(*(psnp->long_ptr))
980mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr" \
981	"\\^done,numchild=\"1\"" \
982	"get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr"
983
984# Test: c_variable-5.26
985# Desc: children of *(*(*(psnp->long_ptr)))
986mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr" \
987	"\\^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\"\}\\\]" \
988	"get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr"
989
990# Test: c_variable-5.27
991# Desc: number of children of *(*(*(psnp->long_ptr)))
992mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr" \
993	"\\^done,numchild=\"1\"" \
994	"get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr"
995
996# Test: c_variable-5.28
997# Desc: children of *(*(*(*(psnp->long_ptr))))
998mi_gdb_test "-var-list-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr" \
999	"\\^done,numchild=\"0\"" \
1000	"get children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr"
1001
1002# Test: c_variable-5.29
1003# Desc: number of children of *(*(*(*(psnp->long_ptr))))
1004mi_gdb_test "-var-info-num-children psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr" \
1005	"\\^done,numchild=\"0\"" \
1006	"get number of children of psnp->long_ptr.*psnp->long_ptr.**psnp->long_ptr.***psnp->long_ptr.****psnp->long_ptr"
1007
1008# Test: c_variable-5.30
1009# Desc: create psnp->ptrs
1010mi_gdb_test "-var-create  psnp->ptrs *  psnp->ptrs" \
1011	"\\^done,name=\"psnp->ptrs\",numchild=\"3\",type=\"struct _struct_n_pointer \\*\\\[3\\\]\"" \
1012	"create local variable  psnp->ptrs"
1013
1014# Test: c_variable-5.31
1015# Desc: children of psnp->ptrs
1016mi_gdb_test "-var-list-children psnp->ptrs" \
1017	"\\^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 \\*\"\}\\\]" \
1018	"get children of psnp->ptrs"
1019
1020# Test: c_variable-5.32
1021# Desc: number of children of psnp->ptrs
1022mi_gdb_test "-var-info-num-children psnp->ptrs" \
1023	"\\^done,numchild=\"3\"" \
1024	"get number of children of psnp->ptrs"
1025
1026# Test: c_variable-5.33
1027# Desc: children of psnp->ptrs[0]
1028mi_gdb_test "-var-list-children psnp->ptrs.0" \
1029	"\\^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 \\*\"\}\\\]" \
1030	"get children of psnp->ptrs.0"
1031
1032# Test: c_variable-5.34
1033# Desc: number of children of psnp->ptrs[0]
1034mi_gdb_test "-var-info-num-children psnp->ptrs.0" \
1035	"\\^done,numchild=\"4\"" \
1036	"get number of children of psnp->ptrs.0"
1037
1038# Test: c_variable-5.35
1039# Desc: children of psnp->ptrs[0]->next
1040mi_gdb_test "-var-list-children psnp->ptrs.0.next" \
1041	"\\^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 \\*\"\}\\\]" \
1042	"get children of psnp->ptrs.0.next"
1043
1044#} {char_ptr long_ptr ptrs next}
1045
1046# Test: c_variable-5.36
1047# Desc: number of children of psnp->ptrs[0]->next
1048mi_gdb_test "-var-info-num-children psnp->ptrs.0.next" \
1049	"\\^done,numchild=\"4\"" \
1050	"get number of children of psnp->ptrs.0.next"
1051
1052
1053# Test: c_variable-5.37
1054# Desc: children of psnp->ptrs[0]->next->char_ptr
1055mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr" \
1056	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr\",exp=\"\\*char_ptr\",numchild=\"1\",type=\"char \\*\\*\\*\"\}\\\]" \
1057	"get children of psnp->ptrs.0.next.char_ptr"
1058
1059#gdbtk_test c_variable-5.37 {children of psnp->ptrs[0]->next->char_ptr} {
1060#  get_children psnp->ptrs.0.next.char_ptr
1061#} {*char_ptr}
1062
1063# Test: c_variable-5.38
1064# Desc: number of children of psnp->ptrs[0]->next->char_ptr
1065mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr" \
1066	"\\^done,numchild=\"1\"" \
1067	"get number of children of psnp->ptrs.0.next.char_ptr"
1068
1069# Test: c_variable-5.39
1070# Desc: children of *psnp->ptrs[0]->next->char_ptr
1071mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr" \
1072	"\\^done,numchild=\"1\",children=\\\[child=\{name=\"psnp->ptrs.0.next.char_ptr.\\*char_ptr.\\*\\*char_ptr\",exp=\"\\*\\*char_ptr\",numchild=\"1\",type=\"char \\*\\*\"\}\\\]" \
1073	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr"
1074
1075# Test: c_variable-5.40
1076# Desc: number of children of *psnp->ptrs[0]->next->char_ptr
1077mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr" \
1078	"\\^done,numchild=\"1\"" \
1079	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr"
1080
1081# Test: c_variable-5.41
1082# Desc: children of **psnp->ptrs[0]->next->char_ptr
1083mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr" \
1084	"\\^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 \\*\"\}\\\]" \
1085	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr"
1086
1087# Test: c_variable-5.41B
1088# Desc: children of ***psnp->ptrs[0]->next->char_ptr
1089mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr" \
1090	"\\^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\"\}\\\]" \
1091	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr"
1092
1093# Test: c_variable-5.42
1094# Desc: number of children of **psnp->ptrs[0]->next->char_ptr
1095mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr" \
1096	"\\^done,numchild=\"1\"" \
1097	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr"
1098
1099# Test: c_variable-5.43
1100# Desc: children of ***psnp->ptrs[0]->next->char_ptr
1101mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr" \
1102	"\\^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\"\}\\\]" \
1103	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
1104
1105# Test: c_variable-5.44
1106# Desc: number of children of ***psnp->ptrs[0]->next->char_ptr
1107mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr" \
1108	"\\^done,numchild=\"1\"" \
1109	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
1110
1111# Test: c_variable-5.43B
1112# Desc: children of ****psnp->ptrs[0]->next->char_ptr
1113mi_gdb_test "-var-list-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr" \
1114	"\\^done,numchild=\"0\"" \
1115	"get children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
1116
1117# Test: c_variable-5.44B
1118# Desc: number of children of ****psnp->ptrs[0]->next->char_ptr
1119mi_gdb_test "-var-info-num-children psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr.****char_ptr" \
1120	"\\^done,numchild=\"0\"" \
1121	"get number of children of psnp->ptrs.0.next.char_ptr.*char_ptr.**char_ptr.***char_ptr"
1122
1123# Test: c_variable-5.45
1124# Desc: children of psnp->ptrs[0]->next->next
1125mi_gdb_test "-var-list-children psnp->ptrs.0.next.next" \
1126	"\\^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 \\*\"\}\\\]" \
1127	"get children of psnp->ptrs.0.next.next"
1128
1129# Test: c_variable-5.46
1130# Desc: children of psnp->ptrs[0]->next->next->ptrs
1131mi_gdb_test "-var-list-children psnp->ptrs.0.next.next.ptrs" \
1132	"\\^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 \\*\"\}\\\]" \
1133	"get children of psnp->ptrs.0.next.next.ptrs"
1134
1135#  Step over "snp0.char_ptr = &b3;"
1136mi_step_to do_children_tests {} {.*var-cmd.c} \
1137    [expr $line_dct_snp0 + 2] "step \$line_dct_snp0 + 2"
1138
1139# Test: c_variable-5.47
1140# Desc: check that psnp->char_ptr (and [0].char_ptr) changed
1141mi_gdb_test "-var-update *" \
1142	"\\^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\"\}\\\]" \
1143	"update all vars psnp->char_ptr (and 0.char_ptr) changed"
1144
1145#  Step over "snp1.char_ptr = &c3;"
1146mi_step_to do_children_tests {} {.*var-cmd.c} \
1147    [expr $line_dct_snp0 + 3] "step \$line_dct_snp0 + 3"
1148
1149# Test: c_variable-5.48
1150# Desc: check that psnp->next->char_ptr (and [1].char_ptr) changed
1151mi_gdb_test "-var-update *" \
1152	"\\^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\"\}\\\]" \
1153	"update all vars psnp->next->char_ptr (and 1.char_ptr) changed"
1154
1155
1156#  Step over "snp2.char_ptr = &a3;"
1157mi_step_to do_children_tests {} {.*var-cmd.c} \
1158    [expr $line_dct_snp0 + 4] "step \$line_dct_snp0 + 4"
1159
1160# Test: c_variable-5.49
1161# Desc: check that psnp->next->next->char_ptr (and [2].char_ptr) changed
1162mi_gdb_test "-var-update *" \
1163	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.next.char_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
1164	"update all vars psnp->next->next->char_ptr (and 2.char_ptr) changed"
1165
1166
1167#  Step over "snp0.long_ptr = &y3;"
1168mi_step_to do_children_tests {} {.*var-cmd.c} \
1169    [expr $line_dct_snp0 + 5] "step \$line_dct_snp0 + 5"
1170
1171# Test: c_variable-5.50
1172# Desc: check that psnp->long_ptr (and [0].long_ptr) changed
1173mi_gdb_test "-var-update *" \
1174	"\\^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\"\}\\\]" \
1175	"update all vars psnp->long_ptr (and 0.long_ptr) changed"
1176
1177
1178#  Step over "snp1.long_ptr = &x3;"
1179mi_step_to do_children_tests {} {.*var-cmd.c} \
1180    [expr $line_dct_snp0 + 6] "step \$line_dct_snp0 + 6"
1181
1182# Test: c_variable-5.51
1183# Desc: check that psnp->next->long_ptr (and [1].long_ptr) changed
1184# Why does this have a FIXME?
1185setup_xfail *-*-*
1186mi_gdb_test "-var-update *" \
1187	"FIXME\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
1188	"update all vars psnp->next->long_ptr (and 1.long_ptr) changed"
1189clear_xfail *-*-*
1190
1191# This command produces this error message:
1192# &"warning: varobj_list: assertion failed - mycount <> 0\n"
1193#
1194
1195#  Step over "snp2.long_ptr = &z3;"
1196mi_step_to do_children_tests {} {.*var-cmd.c} \
1197    [expr $line_dct_snp0 + 7] "step \$line_dct_snp0 + 7"
1198
1199# Test: c_variable-5.52
1200# Desc: check that psnp->next->next->long_ptr (and [2].long_ptr) changed
1201mi_gdb_test "-var-update *" \
1202	"\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.next.long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
1203	"update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed"
1204
1205
1206
1207
1208mi_gdb_exit
1209return 0
1210