OLD | NEW |
| (Empty) |
1 # Copyright 1999-2004, 2004, 2007-2012 Free Software Foundation, Inc. | |
2 # | |
3 # This program is free software; you can redistribute it and/or modify | |
4 # it under the terms of the GNU General Public License as published by | |
5 # the Free Software Foundation; either version 3 of the License, or | |
6 # (at your option) any later version. | |
7 # | |
8 # This program is distributed in the hope that it will be useful, | |
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 # GNU General Public License for more details. | |
12 # | |
13 # You should have received a copy of the GNU General Public License | |
14 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
15 | |
16 # Test essential Machine interface (MI) operations | |
17 # | |
18 # Verify that, using the MI, we can create, update, delete variables. | |
19 # | |
20 | |
21 | |
22 load_lib mi-support.exp | |
23 set MIFLAGS "-i=mi2" | |
24 | |
25 gdb_exit | |
26 if [mi_gdb_start] { | |
27 continue | |
28 } | |
29 | |
30 standard_testfile var-cmd.c | |
31 | |
32 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
ug}] != "" } { | |
33 untested mi2-var-cmd.exp | |
34 return -1 | |
35 } | |
36 | |
37 mi_delete_breakpoints | |
38 mi_gdb_reinitialize_dir $srcdir/$subdir | |
39 mi_gdb_load ${binfile} | |
40 | |
41 | |
42 ##### ##### | |
43 # # | |
44 # Variable Creation tests # | |
45 # # | |
46 ##### ##### | |
47 | |
48 # Test: c_variable-1.1 | |
49 # Desc: Create global variable | |
50 | |
51 mi_create_varobj "global_simple" "global_simple" "create global variable" | |
52 | |
53 # Test: c_variable-1.2 | |
54 # Desc: Create non-existent variable | |
55 | |
56 mi_gdb_test "112-var-create bogus_unknown_variable * bogus_unknown_variable" \ | |
57 "112\\^error,msg=\"-var-create: unable to create variable object\"" \ | |
58 "create non-existent variable" | |
59 | |
60 # Test: c_variable-1.3 | |
61 # Desc: Create out of scope variable | |
62 | |
63 mi_gdb_test "113-var-create argc * argc" \ | |
64 "113\\^error,msg=\"-var-create: unable to create variable object\"" \ | |
65 "create out of scope variable" | |
66 | |
67 mi_runto do_locals_tests | |
68 | |
69 set line_dlt_first_real [gdb_get_line_number "linteger = 1234;"] | |
70 | |
71 mi_continue_to_line $line_dlt_first_real "step to real start of do_locals_test" | |
72 | |
73 | |
74 # Test: c_variable-1.4 | |
75 # Desc: create local variables | |
76 | |
77 mi_create_varobj_checked linteger linteger int "create local variable linteger" | |
78 | |
79 mi_create_varobj_checked lpinteger lpinteger {int \*} "create local variable lpi
nteger" | |
80 | |
81 mi_create_varobj_checked lcharacter lcharacter\[0\] char "create local variable
lcharacter" | |
82 | |
83 mi_create_varobj_checked lpcharacter lpcharacter {char \*} "create local variabl
e lpcharacter" | |
84 | |
85 mi_create_varobj_checked llong llong "long int" "create local variable llong" | |
86 | |
87 mi_create_varobj_checked lplong lplong {long int \*} "create local variable lplo
ng" | |
88 | |
89 mi_create_varobj_checked lfloat lfloat float "create local variable lfloat" | |
90 | |
91 mi_create_varobj_checked lpfloat lpfloat {float \*} "create local variable lpflo
at" | |
92 | |
93 mi_create_varobj_checked ldouble ldouble double "create local variable ldouble" | |
94 | |
95 mi_create_varobj_checked lpdouble lpdouble {double \*} "create local variable lp
double" | |
96 | |
97 mi_create_varobj_checked lsimple lsimple "struct _simple_struct" "create local v
ariable lsimple" | |
98 | |
99 mi_create_varobj_checked lpsimple lpsimple {struct _simple_struct \*} "create lo
cal variable lpsimple" | |
100 | |
101 mi_create_varobj_checked func func {void \(\*\)\((void|)\)} "create local variab
le func" | |
102 | |
103 # Test: c_variable-1.5 | |
104 # Desc: create lsimple.character | |
105 mi_create_varobj_checked lsimple.character lsimple.character "char" \ | |
106 "create lsimple.character" | |
107 | |
108 # Test: c_variable-1.6 | |
109 # Desc: create lpsimple->integer | |
110 mi_create_varobj_checked lsimple->integer lsimple->integer "int" \ | |
111 "create lsimple->integer" | |
112 | |
113 # Test: c_variable-1.7 | |
114 # Desc: crate lsimple.integer | |
115 mi_create_varobj_checked lsimple.integer lsimple.integer "int" \ | |
116 "create lsimple.integer" | |
117 | |
118 | |
119 # Test: c_variable-1.9 | |
120 # Desc: create type name | |
121 # Type names (like int, long, etc..) are all proper expressions to gdb. | |
122 # make sure variable code does not allow users to create variables, though. | |
123 mi_gdb_test "-var-create int * int" \ | |
124 "&\"Attempt to use a type name as an expression.\\\\n\".*\\^error,msg=\"
-var-create: unable to create variable object\"" \ | |
125 "create int" | |
126 | |
127 | |
128 ##### ##### | |
129 # # | |
130 # Value changed tests # | |
131 # # | |
132 ##### ##### | |
133 | |
134 # Test: c_variable-2.1 | |
135 # Desc: check whether values changed at do_block_tests | |
136 mi_gdb_test "-var-update *" \ | |
137 "\\^done,changelist=\\\[\\\]" \ | |
138 "update all vars" | |
139 | |
140 # Step over "linteger = 1234;" | |
141 set line_dlt_linteger [gdb_get_line_number "lpinteger = &linteger;"] | |
142 mi_step_to "do_locals_tests" "" "var-cmd.c" $line_dlt_linteger "step at do_local
s_test" | |
143 | |
144 # Test: c_variable-2.2 | |
145 # Desc: check whether only linteger changed values | |
146 mi_gdb_test "-var-update *" \ | |
147 "\\^done,changelist=\\\[\{name=\"linteger\",in_scope=\"true\",type_chang
ed=\"false\",has_more=\"0\"\}\\\]" \ | |
148 "update all vars: linteger changed" | |
149 | |
150 # Step over "lpinteger = &linteger;" | |
151 mi_step_to "do_locals_tests" "" "var-cmd.c" [expr $line_dlt_linteger + 1] "step
at do_locals_tests (2)" | |
152 | |
153 # Test: c_variable-2.3 | |
154 # Desc: check whether only lpinteger changed | |
155 mi_gdb_test "-var-update *" \ | |
156 "\\^done,changelist=\\\[\{name=\"lpinteger\",in_scope=\"true\",type_chan
ged=\"false\",has_more=\"0\"\}\\\]" \ | |
157 "update all vars: lpinteger changed" | |
158 | |
159 # Step over "lcharacter = 'a';" | |
160 mi_step_to "do_locals_tests" "" "var-cmd.c" [expr $line_dlt_linteger + 2] "step
at do_locals_tests (3)" | |
161 | |
162 # Test: c_variable-2.4 | |
163 # Desc: check whether only lcharacter changed | |
164 mi_gdb_test "-var-update *" \ | |
165 "\\^done,changelist=\\\[\{name=\"lcharacter\",in_scope=\"true\",type_cha
nged=\"false\",has_more=\"0\"\}\\\]" \ | |
166 "update all vars: lcharacter changed" | |
167 | |
168 # Step over "lpcharacter = &lcharacter;" | |
169 mi_step_to "do_locals_tests" "" "var-cmd.c" [expr $line_dlt_linteger + 3] "step
at do_locals_tests (4)" | |
170 | |
171 # Test: c_variable-2.5 | |
172 # Desc: check whether only lpcharacter changed | |
173 mi_gdb_test "-var-update *" \ | |
174 "\\^done,changelist=\\\[\{name=\"lpcharacter\",in_scope=\"true\",type_ch
anged=\"false\",has_more=\"0\"\}\\\]" \ | |
175 "update all vars: lpcharacter changed" | |
176 | |
177 | |
178 # Step over: | |
179 # llong = 2121L; | |
180 # lplong = &llong; | |
181 # lfloat = 2.1; | |
182 # lpfloat = &lfloat; | |
183 # ldouble = 2.718281828459045; | |
184 # lpdouble = &ldouble; | |
185 # lsimple.integer = 1234; | |
186 # lsimple.unsigned_integer = 255; | |
187 # lsimple.character = 'a'; | |
188 | |
189 mi_execute_to "exec-step 9" "end-stepping-range" "do_locals_tests" "" \ | |
190 "var-cmd.c" [expr $line_dlt_linteger + 12] "" "step at do_locals_tests (
5)" | |
191 | |
192 # Test: c_variable-2.6 | |
193 # Desc: check whether llong, lplong, lfloat, lpfloat, ldouble, lpdouble, lsimple
.integer, | |
194 # lsimple.unsigned_character lsimple.integer lsimple.character changed | |
195 mi_gdb_test "-var-update *" \ | |
196 "\\^done,changelist=\\\[\{name=\"lsimple.integer\",in_scope=\"true\",typ
e_changed=\"false\",has_more=\"0\"\},\{name=\"lsimple->integer\",in_scope=\"true
\",type_changed=\"false\",has_more=\"0\"\},\{name=\"lsimple.character\",in_scope
=\"true\",type_changed=\"false\",has_more=\"0\"\},\{name=\"lpdouble\",in_scope=\
"true\",type_changed=\"false\",has_more=\"0\"\},\{name=\"ldouble\",in_scope=\"tr
ue\",type_changed=\"false\",has_more=\"0\"\},\{name=\"lpfloat\",in_scope=\"true\
",type_changed=\"false\",has_more=\"0\"\},\{name=\"lfloat\",in_scope=\"true\",ty
pe_changed=\"false\",has_more=\"0\"\},\{name=\"lplong\",in_scope=\"true\",type_c
hanged=\"false\",has_more=\"0\"\},\{name=\"llong\",in_scope=\"true\",type_change
d=\"false\",has_more=\"0\"\}\\\]" \ | |
197 "update all vars: many changed" | |
198 | |
199 # Step over: | |
200 # lsimple.signed_character = 21; | |
201 # lsimple.char_ptr = &lcharacter; | |
202 # lpsimple = &lsimple; | |
203 # func = nothing; | |
204 | |
205 set line_dlt_4321 [gdb_get_line_number "linteger = 4321;"] | |
206 | |
207 mi_execute_to "exec-step 4" "end-stepping-range" "do_locals_tests" "" \ | |
208 "var-cmd.c" $line_dlt_4321 "" "step at do_locals_tests (6)" | |
209 | |
210 # Test: c_variable-2.7 | |
211 # Desc: check whether (lsimple.signed_character, lsimple.char_ptr) lpsimple, fun
c changed | |
212 mi_gdb_test "-var-update *" \ | |
213 "\\^done,changelist=\\\[\{name=\"func\",in_scope=\"true\",type_changed=\
"false\",has_more=\"0\"\},\{name=\"lpsimple\",in_scope=\"true\",type_changed=\"f
alse\",has_more=\"0\"\}\\\]" \ | |
214 "update all vars: func and lpsimple changed" | |
215 | |
216 # Step over | |
217 # linteger = 4321; | |
218 # lcharacter = 'b'; | |
219 # llong = 1212L; | |
220 # lfloat = 1.2; | |
221 # ldouble = 5.498548281828172; | |
222 # lsimple.integer = 255; | |
223 # lsimple.unsigned_integer = 4321; | |
224 # lsimple.character = 'b'; | |
225 | |
226 mi_execute_to "exec-step 8" "end-stepping-range" "do_locals_tests" "" \ | |
227 "var-cmd.c" [expr $line_dlt_4321 + 8] "" "step at do_locals_tests (7)" | |
228 | |
229 # Test: c_variable-2.8 | |
230 # Desc: check whether linteger, lcharacter, llong, lfoat, ldouble, lsimple.integ
er, | |
231 # lpsimple.integer lsimple.character changed | |
232 # Note: this test also checks that lpsimple->integer and lsimple.integer have | |
233 # changed (they are the same) | |
234 mi_gdb_test "-var-update *" \ | |
235 "\\^done,changelist=\\\[\{name=\"lsimple.integer\",in_scope=\"true\",typ
e_changed=\"false\",has_more=\"0\"\},\{name=\"lsimple->integer\",in_scope=\"true
\",type_changed=\"false\",has_more=\"0\"\},\{name=\"lsimple.character\",in_scope
=\"true\",type_changed=\"false\",has_more=\"0\"\},\{name=\"ldouble\",in_scope=\"
true\",type_changed=\"false\",has_more=\"0\"\},\{name=\"lfloat\",in_scope=\"true
\",type_changed=\"false\",has_more=\"0\"\},\{name=\"llong\",in_scope=\"true\",ty
pe_changed=\"false\",has_more=\"0\"\},\{name=\"lpcharacter\",in_scope=\"true\",t
ype_changed=\"false\",has_more=\"0\"\},\{name=\"lcharacter\",in_scope=\"true\",t
ype_changed=\"false\",has_more=\"0\"\},\{name=\"linteger\",in_scope=\"true\",typ
e_changed=\"false\",has_more=\"0\"\}\\\]" \ | |
236 "update all vars: lsimple and others changed" | |
237 | |
238 | |
239 ### | |
240 # | |
241 # Test assignment to variables. More tests on assignment are in other files. | |
242 # | |
243 ### | |
244 mi_gdb_test "-var-assign global_simple 0" \ | |
245 "\\^error,msg=\"-var-assign: Variable object is not editable\"" \ | |
246 "assign to global_simple" | |
247 | |
248 mi_gdb_test "-var-assign linteger 3333" \ | |
249 "\\^done,value=\"3333\"" \ | |
250 "assign to linteger" | |
251 | |
252 # Allow lpcharacter to update, optionally. Because it points to a | |
253 # char variable instead of a zero-terminated string, if linteger is | |
254 # directly after it in memory the printed characters may appear to | |
255 # change. | |
256 set lpchar_update "\{name=\"lpcharacter\",in_scope=\"true\",type_changed=\"false
\"\}," | |
257 mi_gdb_test "-var-update *" \ | |
258 "\\^done,changelist=\\\[($lpchar_update)?\{name=\"linteger\",in_scope=\"
true\",type_changed=\"false\",has_more=\"0\"\}\\\]" \ | |
259 "update all vars: linteger changed after assign" | |
260 | |
261 mi_gdb_test "-var-assign linteger 3333" \ | |
262 "\\^done,value=\"3333\"" \ | |
263 "assign to linteger again, same value" | |
264 | |
265 mi_gdb_test "-var-update *" \ | |
266 "\\^done,changelist=\\\[\\\]" \ | |
267 "update all vars: linteger not changed after same assign" | |
268 | |
269 mi_gdb_test "-var-evaluate-expression linteger" \ | |
270 "\\^done,value=\"3333\"" \ | |
271 "eval linteger" | |
272 | |
273 mi_gdb_test "-var-assign lpinteger \"&linteger + 3\"" \ | |
274 "\\^done,value=\"$hex\"" \ | |
275 "assign to lpinteger" | |
276 | |
277 mi_gdb_test "-var-update *" \ | |
278 "\\^done,changelist=\\\[\{name=\"lpinteger\",in_scope=\"true\",type_chan
ged=\"false\",has_more=\"0\"\}\\\]" \ | |
279 "update all vars: lpinteger changed after assign" | |
280 | |
281 mi_gdb_test "-var-update *" \ | |
282 "\\^done,changelist=\\\[\\\]" \ | |
283 "update all vars: no changes on second update" | |
284 | |
285 mi_gdb_test "-var-evaluate-expression lpinteger" \ | |
286 "\\^done,value=\"$hex\"" \ | |
287 "eval lpinteger" | |
288 | |
289 # reset the values to the original ones so that the rest of the file doesn't suf
fer. | |
290 | |
291 mi_gdb_test "-var-assign linteger 4321" \ | |
292 "\\^done,value=\"4321\"" \ | |
293 "assign to linteger" | |
294 | |
295 mi_gdb_test "-var-assign lpinteger &linteger" \ | |
296 "\\^done,value=\"$hex\"" \ | |
297 "assign to lpinteger" | |
298 | |
299 mi_gdb_test "-var-assign lcharacter 'z'" \ | |
300 "\\^done,value=\"122 'z'\"" \ | |
301 "assign to lcharacter" | |
302 | |
303 mi_gdb_test "-var-evaluate-expression lcharacter" \ | |
304 "\\^done,value=\"122 'z'\"" \ | |
305 "eval lcharacter" | |
306 | |
307 mi_gdb_test "-var-assign llong 1313L" \ | |
308 "\\^done,value=\"1313\"" \ | |
309 "assign to llong" | |
310 mi_gdb_test "-var-evaluate-expression llong" \ | |
311 "\\^done,value=\"1313\"" \ | |
312 "eval llong" | |
313 mi_gdb_test "-var-assign llong 1212L" \ | |
314 "\\^done,value=\"1212\"" \ | |
315 "assign to llong" | |
316 | |
317 mi_gdb_test "-var-assign lplong &llong+4" \ | |
318 "\\^done,value=\"$hex\"" \ | |
319 "assign to lplong" | |
320 mi_gdb_test "-var-evaluate-expression lplong" \ | |
321 "\\^done,value=\"$hex\"" \ | |
322 "eval lplong" | |
323 mi_gdb_test "-var-assign lplong &llong" \ | |
324 "\\^done,value=\"$hex\"" \ | |
325 "assign to lplong" | |
326 | |
327 mi_gdb_test "-var-assign lfloat 3.4567" \ | |
328 "\\^done,value=\"3.45.*\"" \ | |
329 "assign to lfloat" | |
330 mi_gdb_test "-var-evaluate-expression lfloat" \ | |
331 "\\^done,value=\"3.45.*\"" \ | |
332 "eval lfloat" | |
333 mi_gdb_test "-var-assign lfloat 1.2345" \ | |
334 "\\^done,value=\"1.23.*\"" \ | |
335 "assign to lfloat" | |
336 | |
337 mi_gdb_test "-var-assign lpfloat &lfloat+4" \ | |
338 "\\^done,value=\"$hex\"" \ | |
339 "assign to lpfloat" | |
340 | |
341 mi_gdb_test "-var-assign ldouble 5.333318284590435" \ | |
342 "\\^done,value=\"5.333318284590435\"" \ | |
343 "assign to ldouble" | |
344 | |
345 mi_gdb_test "-var-assign func do_block_tests" \ | |
346 "\\^done,value=\"$hex <do_block_tests>\"" \ | |
347 "assign to func" | |
348 | |
349 mi_gdb_test "-var-assign lsimple.character 'd'" \ | |
350 "\\^done,value=\"100 'd'\"" \ | |
351 "assign to lsimple.character" | |
352 | |
353 mi_gdb_test "-var-assign lsimple->integer 222" \ | |
354 "\\^done,value=\"222\"" \ | |
355 "assign to lsimple->integer" | |
356 | |
357 mi_gdb_test "-var-assign lsimple.integer 333" \ | |
358 "\\^done,value=\"333\"" \ | |
359 "assign to lsimple.integer" | |
360 | |
361 ###### | |
362 # End of assign tests | |
363 ##### | |
364 | |
365 set line_subroutine1_body [gdb_get_line_number "global_simple.integer = i + 3;"] | |
366 | |
367 mi_continue_to "subroutine1" | |
368 | |
369 # Test: c_variable-2.10 | |
370 # Desc: create variable for locals i,l in subroutine1 | |
371 mi_create_varobj_checked i i int "create i" | |
372 | |
373 mi_create_varobj_checked l l {long int \*} "create l" | |
374 | |
375 # Test: c_variable-2.11 | |
376 # Desc: create do_locals_tests local in subroutine1 | |
377 mi_gdb_test "-var-create linteger * linteger" \ | |
378 "\\^error,msg=\"-var-create: unable to create variable object\"" \ | |
379 "create linteger" | |
380 | |
381 mi_step_to "subroutine1" "\{name=\"i\",value=\".*\"\},\{name=\"l\",value=\".*\"\
}" \ | |
382 "var-cmd.c" [expr $line_subroutine1_body + 1] "step at subroutine1" | |
383 | |
384 # Test: c_variable-2.12 | |
385 # Desc: change global_simple.integer | |
386 # Note: This also tests whether we are reporting changes in structs properly. | |
387 # gdb normally would say that global_simple has changed, but we | |
388 # special case that, since it is not what a human expects to | |
389 # see. | |
390 | |
391 setup_xfail *-*-* | |
392 mi_gdb_test "-var-update *" \ | |
393 "\\^done,changelist=\{FIXME: WHAT IS CORRECT HERE\}" \ | |
394 "update all vars: changed FIXME" | |
395 clear_xfail *-*-* | |
396 | |
397 mi_step_to "subroutine1" "\{name=\"i\",value=\".*\"\},\{name=\"l\",value=\".*\"\
}" \ | |
398 "var-cmd.c" [expr $line_subroutine1_body + 2] "step at subroutine1 (2)" | |
399 | |
400 # Test: c_variable-2.13 | |
401 # Desc: change subroutine1 local i | |
402 mi_gdb_test "-var-update *" \ | |
403 "\\^done,changelist=\\\[\{name=\"i\",in_scope=\"true\",type_changed=\"fa
lse\",has_more=\"0\"\}\\\]" \ | |
404 "update all vars: i changed" | |
405 | |
406 mi_step_to "subroutine1" "\{name=\"i\",value=\".*\"\},\{name=\"l\",value=\".*\"\
}" \ | |
407 "var-cmd.c" [expr $line_subroutine1_body + 3] "step at subroutine1 (3)" | |
408 | |
409 # Test: c_variable-2.14 | |
410 # Desc: change do_locals_tests local llong | |
411 mi_gdb_test "-var-update *" \ | |
412 "\\^done,changelist=\\\[\{name=\"llong\",in_scope=\"true\",type_changed=
\"false\",has_more=\"0\"\}\\\]" \ | |
413 "update all vars: llong changed" | |
414 | |
415 set line_dlt_call_subroutine1 [gdb_get_line_number "subroutine1 (linteger, &llon
g);"] | |
416 mi_next_to "do_locals_tests" "" "var-cmd.c" \ | |
417 [expr $line_dlt_call_subroutine1 + 1] "next out of subroutine1" | |
418 | |
419 # Test: c_variable-2.15 | |
420 # Desc: check for out of scope subroutine1 locals | |
421 mi_gdb_test "-var-update *" \ | |
422 "\\^done,changelist=\\\[\{name=\"l\",in_scope=\"false\"\,type_changed=\"
false\",has_more=\"0\"},\{name=\"i\",in_scope=\"false\",type_changed=\"false\",h
as_more=\"0\"\}\\\]" \ | |
423 "update all vars: all now out of scope" | |
424 | |
425 # Done with locals/globals tests. Erase all variables | |
426 #delete_all_variables | |
427 mi_gdb_test "-var-delete global_simple" \ | |
428 "\\^done,ndeleted=\"1\"" \ | |
429 "delete var" | |
430 | |
431 mi_gdb_test "-var-delete linteger" \ | |
432 "\\^done,ndeleted=\"1\"" \ | |
433 "delete var linteger" | |
434 | |
435 mi_gdb_test "-var-delete lpinteger" \ | |
436 "\\^done,ndeleted=\"1\"" \ | |
437 "delete var lpinteger" | |
438 | |
439 mi_gdb_test "-var-delete lcharacter" \ | |
440 "\\^done,ndeleted=\"1\"" \ | |
441 "delete var lcharacter" | |
442 | |
443 mi_gdb_test "-var-delete lpcharacter" \ | |
444 "\\^done,ndeleted=\"1\"" \ | |
445 "delete var lpcharacter" | |
446 | |
447 mi_gdb_test "-var-delete llong" \ | |
448 "\\^done,ndeleted=\"1\"" \ | |
449 "delete var llong" | |
450 | |
451 mi_gdb_test "-var-delete lplong" \ | |
452 "\\^done,ndeleted=\"1\"" \ | |
453 "delete var lplong" | |
454 | |
455 mi_gdb_test "-var-delete lfloat" \ | |
456 "\\^done,ndeleted=\"1\"" \ | |
457 "delete var lfloat" | |
458 | |
459 mi_gdb_test "-var-delete lpfloat" \ | |
460 "\\^done,ndeleted=\"1\"" \ | |
461 "delete var lpfloat" | |
462 | |
463 mi_gdb_test "-var-delete ldouble" \ | |
464 "\\^done,ndeleted=\"1\"" \ | |
465 "delete var ldouble" | |
466 | |
467 mi_gdb_test "-var-delete lpdouble" \ | |
468 "\\^done,ndeleted=\"1\"" \ | |
469 "delete var lpdouble" | |
470 | |
471 mi_gdb_test "-var-delete lsimple" \ | |
472 "\\^done,ndeleted=\"1\"" \ | |
473 "delete var lsimple" | |
474 | |
475 mi_gdb_test "-var-delete lpsimple" \ | |
476 "\\^done,ndeleted=\"1\"" \ | |
477 "delete var lpsimple" | |
478 | |
479 mi_gdb_test "-var-delete func" \ | |
480 "\\^done,ndeleted=\"1\"" \ | |
481 "delete var func" | |
482 | |
483 mi_gdb_test "-var-delete lsimple.character" \ | |
484 "\\^done,ndeleted=\"1\"" \ | |
485 "delete var lsimple.character" | |
486 | |
487 mi_gdb_test "-var-delete lsimple->integer" \ | |
488 "\\^done,ndeleted=\"1\"" \ | |
489 "delete var lsimple->integer" | |
490 | |
491 mi_gdb_test "-var-delete lsimple.integer" \ | |
492 "\\^done,ndeleted=\"1\"" \ | |
493 "delete var lsimple.integer" | |
494 | |
495 mi_gdb_test "-var-delete i" \ | |
496 "\\^done,ndeleted=\"1\"" \ | |
497 "delete var i" | |
498 | |
499 mi_gdb_test "-var-delete l" \ | |
500 "\\^done,ndeleted=\"1\"" \ | |
501 "delete var l" | |
502 | |
503 # Test whether we can follow the name of a variable through multiple | |
504 # stack frames. | |
505 mi_continue_to do_special_tests | |
506 | |
507 mi_gdb_test "-var-create selected_a @ a" \ | |
508 {\^done,name="selected_a",numchild="0",value=".*",type="int".*} \ | |
509 "create selected_a" | |
510 | |
511 mi_continue_to incr_a | |
512 | |
513 mi_gdb_test "-var-update selected_a" \ | |
514 "\\^done,changelist=\\\[\{name=\"selected_a\",in_scope=\"true\",type_cha
nged=\"true\",new_type=\"char\",new_num_children=\"0\"\,has_more=\"0\"}\\\]" \ | |
515 "update selected_a in incr_a" | |
516 | |
517 mi_next "step a line in incr_a" | |
518 mi_next "return from incr_a to do_special_tests" | |
519 | |
520 mi_gdb_test "-var-update selected_a" \ | |
521 "\\^done,changelist=\\\[\{name=\"selected_a\",in_scope=\"true\",type_cha
nged=\"true\",new_type=\"int\",new_num_children=\"0\",has_more=\"0\"\}\\\]" \ | |
522 "update selected_a in do_special_tests" | |
523 | |
524 mi_gdb_test "-file-exec-and-symbols ${binfile}" "\\^done" \ | |
525 "floating varobj invalidation" | |
526 | |
527 | |
528 mi_gdb_exit | |
529 return 0 | |
OLD | NEW |