From f80a3b5fb48e8b2cf3cbad04fc1ff38e82bf64fa Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Tue, 5 Nov 2002 22:31:32 +0000 Subject: [PATCH] 2002-11-05 Jeff Johnston * gdb792.cc: New file to test patch for PR gdb/792. * gdb792.exp: Ditto. --- gdb/testsuite/gdb.mi/ChangeLog | 5 +++ gdb/testsuite/gdb.mi/gdb792.cc | 59 +++++++++++++++++++++++++++ gdb/testsuite/gdb.mi/gdb792.exp | 90 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 gdb/testsuite/gdb.mi/gdb792.cc create mode 100644 gdb/testsuite/gdb.mi/gdb792.exp diff --git a/gdb/testsuite/gdb.mi/ChangeLog b/gdb/testsuite/gdb.mi/ChangeLog index 12af3c2..8b4426b 100644 --- a/gdb/testsuite/gdb.mi/ChangeLog +++ b/gdb/testsuite/gdb.mi/ChangeLog @@ -1,3 +1,8 @@ +2002-11-05 Jeff Johnston + + * gdb792.cc: New file to test patch for PR gdb/792. + * gdb792.exp: Ditto. + 2002-11-04 Elena Zannoni * mi-console.exp: Use mi_runto, mi_run_to_main, mi_next_to, diff --git a/gdb/testsuite/gdb.mi/gdb792.cc b/gdb/testsuite/gdb.mi/gdb792.cc new file mode 100644 index 0000000..a698a12 --- /dev/null +++ b/gdb/testsuite/gdb.mi/gdb792.cc @@ -0,0 +1,59 @@ +#include +#include + +class Q +{ + int v; + protected: + int qx; + int qy; + int w; +}; + +class B +{ + int k; + public: + int bx; + int by; +}; + +class A +{ + int u; + + public: + A() + { + }; + int x; + char buffer[10]; + + protected: + int y; + B b; + + private: + float z; +}; + +class C : public A +{ + public: + C() + { + }; + int zzzz; + private: + int ssss; +}; + +int main() +{ + A a; + C c; + Q q; + strcpy( a.buffer, "test" ); + printf ( "%.10s\n", a.buffer ); + return 0; +} diff --git a/gdb/testsuite/gdb.mi/gdb792.exp b/gdb/testsuite/gdb.mi/gdb792.exp new file mode 100644 index 0000000..ce5ac31 --- /dev/null +++ b/gdb/testsuite/gdb.mi/gdb792.exp @@ -0,0 +1,90 @@ +# 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/792 +# + +load_lib mi-support.exp +set MIFLAGS "-i=mi" + +gdb_exit +if [mi_gdb_start] { + continue +} + +set testfile gdb792 +set srcfile "$testfile.cc" +set binfile $objdir/$subdir/$testfile + +if [get_compiler_info ${binfile} "c++"] { + return -1; +} + +if {[gdb_compile $srcdir/$subdir/$srcfile $binfile executable {debug c++}] != ""} { + gdb_suppress_entire_file "Testcase compile failed, so all test in this file will automatically fail." +} + +# Test that children of classes are properly reported + +# Run to main +mi_run_to_main + +mi_gdb_test "-var-create - * a" \ + "(&\".*\"\r\n)*\\^done,name=\"var1\",numchild=\"3\",type=\"A\"" \ + "create var for class A" + +mi_gdb_test "-var-list-children var1" \ + "(&\".*\"\r\n)*\\^done,numchild=\"3\",children=\{child=\{name=\"var1\.public\",exp=\"public\",numchild=\"2\"\},child=\{name=\"var1\.private\",exp=\"private\",numchild=\"2\"\},child=\{name=\"var1\.protected\",exp=\"protected\",numchild=\"2\"\}\}" \ + "list children of class A" + +mi_gdb_test "-var-list-children var1.public" \ + "(&\".*\"\r\n)*\\^done,numchild=\"2\",children=\{child=\{name=\"var1\.public\.x\",exp=\"x\",numchild=\"0\",type=\"int\"\},child=\{name=\"var1\.public\.buffer\",exp=\"buffer\",numchild=\"10\",type=\"char \\\[10\\\]\"\}\}" \ + "list children of A.public" + +mi_gdb_test "-var-list-children var1.private" \ + "(&\".*\"\r\n)*\\^done,numchild=\"2\",children=\{child=\{name=\"var1\.private\.u\",exp=\"u\",numchild=\"0\",type=\"int\"\},child=\{name=\"var1\.private\.z\",exp=\"z\",numchild=\"0\",type=\"float\"\}\}" \ + "list children of A.private" + +mi_gdb_test "-var-list-children var1.protected" \ + "(&\".*\"\r\n)*\\^done,numchild=\"2\",children=\{child=\{name=\"var1\.protected\.y\",exp=\"y\",numchild=\"0\",type=\"int\"\},child=\{name=\"var1\.protected\.b\",exp=\"b\",numchild=\"2\",type=\"B\"\}\}" \ + "list children of A.protected" + +mi_gdb_test "-var-list-children var1.protected.b" \ + "(&\".*\"\r\n)*\\^done,numchild=\"2\",children=\{child=\{name=\"var1\.protected\.b\.public\",exp=\"public\",numchild=\"2\"\},child=\{name=\"var1\.protected\.b\.private\",exp=\"private\",numchild=\"1\"\}\}" \ + "list children of A.protected.b" + +mi_gdb_test "-var-list-children var1.protected.b.public" \ + "(&\".*\"\r\n)*\\^done,numchild=\"2\",children=\{child=\{name=\"var1\.protected\.b\.public\.bx\",exp=\"bx\",numchild=\"0\",type=\"int\"\},child=\{name=\"var1\.protected\.b\.public\.by\",exp=\"by\",numchild=\"0\",type=\"int\"\}\}" \ + "list children of A.protected.b.public" + +mi_gdb_test "-var-list-children var1.protected.b.private" \ + "(&\".*\"\r\n)*\\^done,numchild=\"1\",children=\{child=\{name=\"var1\.protected\.b\.private\.k\",exp=\"k\",numchild=\"0\",type=\"int\"\}\}" \ + "list children of A.protected.b.private" + +mi_gdb_test "-var-create - * c" \ + "(&\".*\"\r\n)*\\^done,name=\"var2\",numchild=\"3\",type=\"C\"" \ + "create var for class C which has baseclass A" + +mi_gdb_test "-var-list-children var2" \ + "(&\".*\"\r\n)*\\^done,numchild=\"3\",children=\{child=\{name=\"var2\.A\",exp=\"A\",numchild=\"3\",type=\"A\"\},child=\{name=\"var2\.public\",exp=\"public\",numchild=\"1\"\},child=\{name=\"var2\.private\",exp=\"private\",numchild=\"1\"\}\}" \ + "list children of class C" + +mi_gdb_exit +return 0 -- 2.7.4