2006-12-08 Vladimir Prus <vladimir@codesourcery.com>
Test for base in references. * gdb.mi/mi-var-cp.cc: Add test code. * gdb.mi/mi-var-cp.exp: Test for bases in references. * gdb.mi/mi-watch.exp: Adjust to mi_runto changes. * gdb.mi/mi2-watch.exp: Likewise. * lib/mi-support.exp (mi_runto): Use temporary breakpoint. (mi_list_varobj_children): New function.
This commit is contained in:
parent
a1b5960f51
commit
038224f618
|
@ -1,3 +1,13 @@
|
||||||
|
2006-12-08 Vladimir Prus <vladimir@codesourcery.com>
|
||||||
|
|
||||||
|
Test for base in references.
|
||||||
|
* gdb.mi/mi-var-cp.cc: Add test code.
|
||||||
|
* gdb.mi/mi-var-cp.exp: Test for bases in references.
|
||||||
|
* gdb.mi/mi-watch.exp: Adjust to mi_runto changes.
|
||||||
|
* gdb.mi/mi2-watch.exp: Likewise.
|
||||||
|
* lib/mi-support.exp (mi_runto): Use temporary breakpoint.
|
||||||
|
(mi_list_varobj_children): New function.
|
||||||
|
|
||||||
2006-12-08 Vladimir Prus <vladimir@codesourcery.com>
|
2006-12-08 Vladimir Prus <vladimir@codesourcery.com>
|
||||||
|
|
||||||
* lib/mi-support.exp
|
* lib/mi-support.exp
|
||||||
|
|
|
@ -23,8 +23,26 @@ void reference_update_tests ()
|
||||||
x = 567;
|
x = 567;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct S { int i; int j; };
|
||||||
|
struct S2 : S {};
|
||||||
|
|
||||||
|
int base_in_reference_test (S2& s2)
|
||||||
|
{
|
||||||
|
return s2.i;
|
||||||
|
}
|
||||||
|
|
||||||
|
void base_in_reference_test_main ()
|
||||||
|
{
|
||||||
|
S2 s;
|
||||||
|
s.i = 67;
|
||||||
|
s.j = 89;
|
||||||
|
base_in_reference_test (s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int main ()
|
int main ()
|
||||||
{
|
{
|
||||||
reference_update_tests ();
|
reference_update_tests ();
|
||||||
|
base_in_reference_test_main ();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,6 @@ mi_gdb_load ${binfile}
|
||||||
|
|
||||||
# Test that children of classes are properly reported
|
# Test that children of classes are properly reported
|
||||||
|
|
||||||
# Run to main
|
|
||||||
mi_runto reference_update_tests
|
mi_runto reference_update_tests
|
||||||
|
|
||||||
mi_create_varobj "RX" "rx" "create varobj for rx"
|
mi_create_varobj "RX" "rx" "create varobj for rx"
|
||||||
|
@ -69,5 +68,24 @@ mi_next_to "reference_update_tests" {} ".*${srcfile}" [expr $x_assignment+2] \
|
||||||
|
|
||||||
mi_varobj_update RX {} "update RX (3)"
|
mi_varobj_update RX {} "update RX (3)"
|
||||||
|
|
||||||
|
mi_runto base_in_reference_test
|
||||||
|
|
||||||
|
mi_create_varobj "S2" "s2" "create varobj for s2"
|
||||||
|
|
||||||
|
mi_list_varobj_children "S2" {{"S2.S" "S" "1" "S"}} "list children of s2"
|
||||||
|
|
||||||
|
mi_list_varobj_children "S2.S" {{"S2.S.public" "public" "2"}} \
|
||||||
|
"list children of s2.s"
|
||||||
|
|
||||||
|
mi_list_varobj_children "S2.S.public"\
|
||||||
|
{
|
||||||
|
{"S2.S.public.i" "i" "0" "int"}
|
||||||
|
{"S2.S.public.j" "j" "0" "int"}
|
||||||
|
} "list children of s2.s.public"
|
||||||
|
|
||||||
|
mi_check_varobj_value "S2.S.public.i" "67" "check S2.S.public.i"
|
||||||
|
mi_check_varobj_value "S2.S.public.j" "89" "check S2.S.public.j"
|
||||||
|
|
||||||
|
|
||||||
mi_gdb_exit
|
mi_gdb_exit
|
||||||
return 0
|
return 0
|
||||||
|
|
|
@ -64,7 +64,7 @@ proc test_watchpoint_creation_and_listing {} {
|
||||||
"break-watch operation"
|
"break-watch operation"
|
||||||
|
|
||||||
mi_gdb_test "222-break-list" \
|
mi_gdb_test "222-break-list" \
|
||||||
"222\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"$line_callee4_body\",times=\"1\"\},bkpt=\{number=\"2\",type=\".*watchpoint\",disp=\"keep\",enabled=\"y\",addr=\"\",what=\"C\",times=\"0\"\}\\\]\}" \
|
"222\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"2\",type=\".*watchpoint\",disp=\"keep\",enabled=\"y\",addr=\"\",what=\"C\",times=\"0\"\}\\\]\}" \
|
||||||
"list of watchpoints"
|
"list of watchpoints"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,7 @@ proc test_watchpoint_creation_and_listing {} {
|
||||||
"break-watch operation"
|
"break-watch operation"
|
||||||
|
|
||||||
mi_gdb_test "222-break-list" \
|
mi_gdb_test "222-break-list" \
|
||||||
"222\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"$line_callee4_body\",times=\"1\"\},bkpt=\{number=\"2\",type=\".*watchpoint\",disp=\"keep\",enabled=\"y\",addr=\"\",what=\"C\",times=\"0\"\}\\\]\}" \
|
"222\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[bkpt=\{number=\"2\",type=\".*watchpoint\",disp=\"keep\",enabled=\"y\",addr=\"\",what=\"C\",times=\"0\"\}\\\]\}" \
|
||||||
"list of watchpoints"
|
"list of watchpoints"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -868,8 +868,8 @@ proc mi_runto {func} {
|
||||||
global hex decimal fullname_syntax
|
global hex decimal fullname_syntax
|
||||||
|
|
||||||
set test "mi runto $func"
|
set test "mi runto $func"
|
||||||
mi_gdb_test "200-break-insert $func" \
|
mi_gdb_test "200-break-insert -t $func" \
|
||||||
"200\\^done,bkpt=\{number=\"\[0-9\]+\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"$func\(\\\(.*\\\)\)?\",file=\".*\",line=\"\[0-9\]*\",times=\"0\"\}" \
|
"200\\^done,bkpt=\{number=\"\[0-9\]+\",type=\"breakpoint\",disp=\"del\",enabled=\"y\",addr=\"$hex\",func=\"$func\(\\\(.*\\\)\)?\",file=\".*\",line=\"\[0-9\]*\",times=\"0\"\}" \
|
||||||
"breakpoint at $func"
|
"breakpoint at $func"
|
||||||
|
|
||||||
if {![regexp {number="[0-9]+"} $expect_out(buffer) str]
|
if {![regexp {number="[0-9]+"} $expect_out(buffer) str]
|
||||||
|
@ -879,7 +879,7 @@ proc mi_runto {func} {
|
||||||
|
|
||||||
mi_run_cmd
|
mi_run_cmd
|
||||||
gdb_expect {
|
gdb_expect {
|
||||||
-re ".*000\\*stopped,reason=\"breakpoint-hit\",bkptno=\"$bkptno\",thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=\(\\\[.*\\\]\|\{.*\}\),file=\".*\",fullname=\"${fullname_syntax}.*\",line=\"\[0-9\]*\"\}\r\n$mi_gdb_prompt$" {
|
-re ".*000\\*stopped,thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=\(\\\[.*\\\]\|\{.*\}\),file=\".*\",fullname=\"${fullname_syntax}.*\",line=\"\[0-9\]*\"\}\r\n$mi_gdb_prompt$" {
|
||||||
pass "$test"
|
pass "$test"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
@ -1034,3 +1034,49 @@ proc mi_check_varobj_value { name value testname } {
|
||||||
"\\^done,value=\"$value\"" \
|
"\\^done,value=\"$value\"" \
|
||||||
$testname
|
$testname
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check the results of the:
|
||||||
|
#
|
||||||
|
# -var-list-children VARNAME
|
||||||
|
#
|
||||||
|
# command. The CHILDREN parement should be a list of lists.
|
||||||
|
# Each inner list can have either 3 or 4 elements, describing
|
||||||
|
# fields that gdb is expected to report for child variable object,
|
||||||
|
# in the following order
|
||||||
|
#
|
||||||
|
# - Name
|
||||||
|
# - Expression
|
||||||
|
# - Number of children
|
||||||
|
# - Type
|
||||||
|
#
|
||||||
|
# If inner list has 3 elements, the gdb is expected to output no
|
||||||
|
# type for a child.
|
||||||
|
#
|
||||||
|
proc mi_list_varobj_children { varname children testname } {
|
||||||
|
|
||||||
|
set numchildren [llength $children]
|
||||||
|
set children_exp {}
|
||||||
|
set whatever "\"\[^\"\]+\""
|
||||||
|
|
||||||
|
foreach item $children {
|
||||||
|
|
||||||
|
set name [lindex $item 0]
|
||||||
|
set exp [lindex $item 1]
|
||||||
|
set numchild [lindex $item 2]
|
||||||
|
if {[llength $item] == 4} {
|
||||||
|
set type [lindex $item 3]
|
||||||
|
|
||||||
|
lappend children_exp\
|
||||||
|
"child={name=\"$name\",exp=\"$exp\",numchild=\"$numchild\",type=\"$type\"}"
|
||||||
|
} else {
|
||||||
|
lappend children_exp\
|
||||||
|
"child={name=\"$name\",exp=\"$exp\",numchild=\"$numchild\"}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set children_exp_j [join $children_exp ","]
|
||||||
|
set expected "\\^done,numchild=\"$numchildren\",children=\\\[$children_exp_j\\\]"
|
||||||
|
|
||||||
|
verbose -log "Expecting: $expected"
|
||||||
|
|
||||||
|
mi_gdb_test "-var-list-children $varname" $expected $testname
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue