From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26883 invoked by alias); 19 Feb 2002 23:35:49 -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 26790 invoked from network); 19 Feb 2002 23:35:44 -0000 Received: from unknown (HELO nevyn.them.org) (128.2.145.6) by sources.redhat.com with SMTP; 19 Feb 2002 23:35:44 -0000 Received: from drow by nevyn.them.org with local (Exim 3.34 #1 (Debian)) id 16dJnK-0003Rd-00; Tue, 19 Feb 2002 18:35:34 -0500 Date: Tue, 19 Feb 2002 15:35:00 -0000 From: Daniel Jacobowitz To: Michael Elizabeth Chastain Cc: gdb-patches@sources.redhat.com Subject: Re: [RFA/c++testsuite] New test for constructor breakpoints Message-ID: <20020219183534.A10918@nevyn.them.org> Mail-Followup-To: Michael Elizabeth Chastain , gdb-patches@sources.redhat.com References: <200202182025.g1IKPpc04061@duracef.shout.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200202182025.g1IKPpc04061@duracef.shout.net> User-Agent: Mutt/1.3.23i X-SW-Source: 2002-02/txt/msg00512.txt.bz2 On Mon, Feb 18, 2002 at 02:25:51PM -0600, Michael Elizabeth Chastain wrote: > This patch is returned for rework. I like the patch, but there is > a cascade problem: > > "set_bp_overloaded foo::foo" tests FAIL > the breakpoints are not present > continue_to_bp_constructor issues "continue" unconditionally > the script loses synchronization with the program-under-test at this point > all the tests after that FAIL Well, I had to file a bug on expect's manual page to get this to work, but I did. How's this patch? The magic is in -notransfer. -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer 2002-02-19 Daniel Jacobowitz * gdb.c++/ovldbreak.exp: Test breakpoints on the constructors. Index: ovldbreak.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.c++/ovldbreak.exp,v retrieving revision 1.3 diff -u -r1.3 ovldbreak.exp --- ovldbreak.exp 2001/01/28 23:49:43 1.3 +++ ovldbreak.exp 2002/02/19 23:32:27 @@ -231,8 +231,6 @@ \[0-9\]+\[\t \]+breakpoint keep y\[\t \]+$hex in foo::overload1arg\\((void|)\\) at.*$srcfile:110" \ "breakpoint info (after cancel)" - - # Delete these breakpoints. send_gdb "delete breakpoints\n" @@ -309,13 +307,58 @@ "breakpoint info (after setting on all)" +# Set breakpoints on the overloaded constructor. +set menu_constructor "\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n\\\[2\\\] foo::foo\\(foo ?&\\) at.*$srcfile:104\r\n\\\[3\\\] foo::foo\\(int, char const ?\\*\\) at.*$srcfile:103\r\n\\\[4\\\] foo::foo\\(int\\) at.*$srcfile:102\r\n> $" +set_bp_overloaded "foo::foo" "$menu_constructor" 2 26 104 +set_bp_overloaded "foo::foo" "$menu_constructor" 3 27 103 +set_bp_overloaded "foo::foo" "$menu_constructor" 4 28 102 + # Run through each breakpoint. -proc continue_to_bp_overloaded {bpnumber argtype actuals} { +global last_bp_hit +set last_bp_hit 300 + +proc continue_to_bp_constructor {bpnumber argtypes args actuals} { global gdb_prompt hex decimal srcfile + global last_bp_hit + + if {$last_bp_hit < 26} { + fail "continue to bp overloaded constructor : ${argtypes} (overshot)" + return + } send_gdb "continue\n" + gdb_expect { + -re "Continuing.\r\n\r\nBreakpoint ${bpnumber}, (${hex} in )?foo::foo(\\(${argtypes}\\))? \\(this=${hex}(, )?${actuals}\\) at.*${srcfile}:${decimal}\r\n${decimal}\[\t \]+foo::foo *\\(${args}\\).*\r\n.*$gdb_prompt $" { + pass "continue to bp overloaded constructor : ${argtypes}" + } + -notransfer -re "Continuing.\r\n\r\nBreakpoint (\[0-9\]*).*$gdb_prompt $" { + set last_bp_hit $expect_out(1,string) + fail "continue to bp overloaded constructor : ${argtypes} (wrong breakpoint)" + } + -re ".*$gdb_prompt $" { + fail "continue to bp overloaded constructor : ${argtypes}" + } + timeout { + fail "continue to bp overloaded constructor : ${argtypes} (timeout)" + } + } +} + +continue_to_bp_constructor 28 "int" "int i" "i=111" +continue_to_bp_constructor 27 "int, char const ?\\*" \ + "int i, const char \\*ccp" "i=222, ccp=$hex \"A\"" +continue_to_bp_constructor 26 "foo ?&" "foo& afoo" "afoo=@$hex" + +proc continue_to_bp_overloaded {bpnumber argtype actuals} { + global gdb_prompt hex decimal srcfile + global last_bp_hit + + if { $last_bp_hit != $bpnumber } { + send_gdb "continue\n" + } + gdb_expect { -re "Continuing.\r\n\r\nBreakpoint ${bpnumber}, (${hex} in )?foo::overload1arg(\\(${argtype}\\))? \\(this=${hex}(, )?${actuals}\\) at.*${srcfile}:${decimal}\r\n${decimal}\[\t \]+int foo::overload1arg \\(${argtype}( arg)?\\).*\r\n.*$gdb_prompt $" { pass "continue to bp overloaded : ${argtype}"