| 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 |