From 8038ed97238744212d494cdb48c53b2fa1f0f086 Mon Sep 17 00:00:00 2001 From: Keith Seitz Date: Mon, 16 Sep 2002 19:01:43 +0000 Subject: [PATCH] * gdb701.exp: New file for testing varobj target type bug. * gdb701.c: New file. --- gdb/testsuite/gdb.mi/ChangeLog | 5 +++ gdb/testsuite/gdb.mi/gdb701.c | 15 ++++++++ gdb/testsuite/gdb.mi/gdb701.exp | 67 +++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 gdb/testsuite/gdb.mi/gdb701.c create mode 100644 gdb/testsuite/gdb.mi/gdb701.exp diff --git a/gdb/testsuite/gdb.mi/ChangeLog b/gdb/testsuite/gdb.mi/ChangeLog index c2934f863a7..15274e9ddbc 100644 --- a/gdb/testsuite/gdb.mi/ChangeLog +++ b/gdb/testsuite/gdb.mi/ChangeLog @@ -1,3 +1,8 @@ +2002-09-16 Keith Seitz + + * gdb701.exp: New file for testing varobj target type bug. + * gdb701.c: New file. + 2002-09-13 Keith Seitz * mi-var-child.exp: Use mi_step_to and mi_execute_to instead diff --git a/gdb/testsuite/gdb.mi/gdb701.c b/gdb/testsuite/gdb.mi/gdb701.c new file mode 100644 index 00000000000..16e5c297340 --- /dev/null +++ b/gdb/testsuite/gdb.mi/gdb701.c @@ -0,0 +1,15 @@ +struct _foo +{ + int x; + int y; + int z; +}; + +typedef struct _foo Foo; + +int +main (int argc, char *argv[]) +{ + Foo *foo = 0; + exit (0); +} diff --git a/gdb/testsuite/gdb.mi/gdb701.exp b/gdb/testsuite/gdb.mi/gdb701.exp new file mode 100644 index 00000000000..703ec6a9fc3 --- /dev/null +++ b/gdb/testsuite/gdb.mi/gdb701.exp @@ -0,0 +1,67 @@ +# Copyright 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# +# test gdb/701 +# + +load_lib mi-support.exp +set MIFLAGS "-i=mi" + +gdb_exit +if [mi_gdb_start] { + continue +} + +set testfile gdb701 +set srcfile "$testfile.c" +set binfile $objdir/$subdir/$testfile +if {[gdb_compile $srcdir/$subdir/$srcfile $binfile executable debug] != ""} { + gdb_suppress_entire_file "Testcase compile failed, so all test in this file will automatically fail." +} + +# When varobj reports the types of objects, it often isn't really reporting +# the type as GDB knows it. For example, in this testcase, we have a +# structure which has been typedefed. A varobj of this type would really have +# a type of "TYPE_CODE_TYPEDEF". It's target type is "TYPE_CODE_STRUCT". Varobj +# should skip over the TYPEDEF type when figuring out the varobj's children. +# If it doesn't, Bad Things Happen(TM). + +# Run to main +mi_run_to_main + +# Step over "foo = 0" +mi_next "step over \"foo = 0\"" + +mi_gdb_test "-var-create fooPtr * foo" \ + "(&\".*\"\r\n)*\\^done,name=\"fooPtr\",numchild=\"3\",type=\"Foo \\*\"" \ + "create fooPtr" + +mi_gdb_test "-var-list-children fooPtr" \ + "(&\".*\"\r\n)*\\^done,numchild=\"3\",.*" \ + "list children of fooPtr" + +foreach i [list x y z] { + mi_gdb_test "-var-list-children fooPtr.$i" \ + "(&\".*\"\r\n)*\\^done,numchild=\"0\"" \ + "list children of fooPtr.$i" +} + +mi_gdb_exit +return 0 -- 2.30.2