From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17885 invoked by alias); 13 Sep 2002 23:49:56 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 17878 invoked from network); 13 Sep 2002 23:49:55 -0000 Received: from unknown (HELO valrhona.uglyboxes.com) (64.1.192.220) by sources.redhat.com with SMTP; 13 Sep 2002 23:49:55 -0000 Received: from localhost.localdomain (IDENT:xkKTumham/MJdYwV7pHcoYVgCW6CoEye@localhost.localdomain [127.0.0.1]) by valrhona.uglyboxes.com (8.11.6/8.11.6) with ESMTP id g8DNqaA12834 for ; Fri, 13 Sep 2002 16:52:37 -0700 Date: Fri, 13 Sep 2002 16:49:00 -0000 From: Keith Seitz X-X-Sender: keiths@valrhona.uglyboxes.com To: gdb-patches@sources.redhat.com Subject: [RFA/MI testsuite] gdb/701 test (varobj) Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2002-09/txt/msg00284.txt.bz2 Hi, The test below tickles a crashing bug in gdb's varobj code, as reported in gdb/701. [I felt it was a lot easier to add a new test file than to try to integrate this into the existing tests -- too many line numbers to reorder if adding a line into var-cmd.c...] Keith ChangeLog 2002-09-13 Keith Seitz * gdb701.exp: New file for testing varobj target type bug. * gdb701.c: New file. Patch Index: testsuite/gdb.mi/gdb701.c =================================================================== RCS file: testsuite/gdb.mi/gdb701.c diff -N testsuite/gdb.mi/gdb701.c *** testsuite/gdb.mi/gdb701.c 1 Jan 1970 00:00:00 -0000 --- testsuite/gdb.mi/gdb701.c 13 Sep 2002 23:47:55 -0000 *************** *** 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); + } Index: testsuite/gdb.mi/gdb701.exp =================================================================== RCS file: testsuite/gdb.mi/gdb701.exp diff -N testsuite/gdb.mi/gdb701.exp *** testsuite/gdb.mi/gdb701.exp 1 Jan 1970 00:00:00 -0000 --- testsuite/gdb.mi/gdb701.exp 13 Sep 2002 23:47:55 -0000 *************** *** 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