Check has_more in mi_create_dynamic_varobj
authorYao Qi <yao@codesourcery.com>
Sun, 10 Nov 2013 02:31:09 +0000 (10:31 +0800)
committerYao Qi <yao@codesourcery.com>
Fri, 22 Nov 2013 00:34:42 +0000 (08:34 +0800)
Hi,
I find "has_more" is not checked when a dynamic varobj is created in
proc mi_create_dynamic_varobj.  This patch adds the check to
"has_more".

gdb/testsuite:

2013-11-22  Yao Qi  <yao@codesourcery.com>

* lib/mi-support.exp (mi_create_dynamic_varobj): Update
comment and add one more argument "has_more".
* gdb.python/py-mi.exp: Callers update.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.python/py-mi.exp
gdb/testsuite/lib/mi-support.exp

index 9b78096d33e2dc7b2f7072785561a94b0c59c63e..58d2bc79cb244111577a50c967cde33ab81dea44 100644 (file)
@@ -1,3 +1,9 @@
+2013-11-22  Yao Qi  <yao@codesourcery.com>
+
+       * lib/mi-support.exp (mi_create_dynamic_varobj): Update
+       comment and add one more argument "has_more".
+       * gdb.python/py-mi.exp: Callers update.
+
 2013-11-22  Yao Qi  <yao@codesourcery.com>
 
        * gdb.python/py-mi.exp: Use mi_create_floating_varobj instead
index 69bc093622390e043f9286a40b5fcd237f33dbc2..b132a5602ff9827cbdbf03d9a729ea2467fe193e 100644 (file)
@@ -87,7 +87,9 @@ mi_gdb_test "-var-update string" \
     "\\^done,changelist=\\\[{name=\"string\",in_scope=\"true\",type_changed=\"false\",dynamic=\"1\",has_more=\"0\"}\\\]" \
     "update string varobj after assignment"
 
-mi_create_dynamic_varobj container c \
+# The "elements" field of "c" is still empty, so the attribute
+# "has_more" is expected to be zero.
+mi_create_dynamic_varobj container c 0 \
   "create container varobj"
 
 mi_list_varobj_children container {
@@ -202,7 +204,7 @@ mi_next "next over update 5"
 
 # Regression test: examine an object that has no children, then update
 # it to ensure that we don't print the children.
-mi_create_dynamic_varobj container2 c2 \
+mi_create_dynamic_varobj container2 c2 \
   "create second container varobj"
 
 mi_gdb_test "-var-update container2" \
@@ -223,7 +225,7 @@ mi_continue_to_line \
     [gdb_get_line_number {MI outer breakpoint here} ${srcfile}] \
     "step to outer breakpoint"
 
-mi_create_dynamic_varobj outer outer \
+mi_create_dynamic_varobj outer outer \
   "create outer varobj"
 
 mi_list_varobj_children outer {
@@ -253,7 +255,7 @@ mi_continue_to_line \
     [gdb_get_line_number {break to inspect struct and union} ${srcfile}] \
     "step to outer breakpoint"
 
-mi_create_dynamic_varobj nscont nstype \
+mi_create_dynamic_varobj nscont nstype \
   "create nstype varobj"
 
 mi_list_varobj_children nscont {
@@ -275,7 +277,7 @@ mi_gdb_test "-var-set-visualizer nscont gdb.default_visualizer" \
 
 mi_gdb_test "python exception_flag = True" ""
 
-mi_create_dynamic_varobj nstype2 nstype2 \
+mi_create_dynamic_varobj nstype2 nstype2 \
   "create nstype2 varobj"
 
 mi_list_varobj_children nstype2 {
@@ -290,7 +292,7 @@ mi_gdb_test "-var-evaluate-expression me" \
        "evaluate me varobj"
 
 # Regression test for python/14836.
-mi_create_dynamic_varobj children_as_list children_as_list \
+mi_create_dynamic_varobj children_as_list children_as_list \
     "printer whose children are returned as a list"
 
 # Regression test for bug 14741.
@@ -298,7 +300,7 @@ mi_continue_to_line \
     [gdb_get_line_number {breakpoint bug 14741} ${srcfile}] \
     "step to breakpoint for bug 14741"
 
-mi_create_dynamic_varobj c c \
+mi_create_dynamic_varobj c c \
   "create varobj for c"
 
 mi_gdb_test "-var-set-visualizer c ArrayPrinter" \
index 7f34c9b06a9164353908eee9670ae6d1dd1ee4cb..0c3cdbe1ab643eab9093ee5afe85c9ed30611061 100644 (file)
@@ -1277,9 +1277,10 @@ proc mi_create_varobj_checked { name expression type testname } {
 
 # Same as mi_create_floating_varobj, but assumes the test is creating
 # a dynamic varobj that has children, so the value must be "{...}".
-proc mi_create_dynamic_varobj {name expression testname} {
+# The "has_more" attribute is checked.
+proc mi_create_dynamic_varobj {name expression has_more testname} {
     mi_gdb_test "-var-create $name @ $expression" \
-       "\\^done,name=\"$name\",numchild=\"\(-1\|\[0-9\]+\)\",value=\"{\\.\\.\\.}\",type=.*" \
+       "\\^done,name=\"$name\",numchild=\"0\",value=\"{\\.\\.\\.}\",type=.*,has_more=\"${has_more}\"" \
        $testname
 }