2002-11-05 Jeff Johnston <jjohnstn@redhat.com>

* gdb792.cc: New file to test patch for PR gdb/792.
        * gdb792.exp: Ditto.
This commit is contained in:
Jeff Johnston 2002-11-05 22:31:32 +00:00
parent 6e382aa38c
commit f80a3b5fb4
3 changed files with 154 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2002-11-05 Jeff Johnston <jjohnstn@redhat.com>
* gdb792.cc: New file to test patch for PR gdb/792.
* gdb792.exp: Ditto.
2002-11-04 Elena Zannoni <ezannoni@redhat.com>
* mi-console.exp: Use mi_runto, mi_run_to_main, mi_next_to,

View File

@ -0,0 +1,59 @@
#include <string.h>
#include <stdio.h>
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;
}

View File

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