From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16809 invoked by alias); 13 Sep 2002 18:15:43 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 16801 invoked from network); 13 Sep 2002 18:15:43 -0000 Received: from unknown (HELO crack.them.org) (65.125.64.184) by sources.redhat.com with SMTP; 13 Sep 2002 18:15:43 -0000 Received: from nevyn.them.org ([66.93.61.169] ident=mail) by crack.them.org with asmtp (Exim 3.12 #1 (Debian)) id 17pvur-0002E6-00 for ; Fri, 13 Sep 2002 14:15:46 -0500 Received: from drow by nevyn.them.org with local (Exim 3.35 #1 (Debian)) id 17puz0-00078k-00 for ; Fri, 13 Sep 2002 14:15:58 -0400 Date: Fri, 13 Sep 2002 11:15:00 -0000 From: Daniel Jacobowitz To: gdb@sources.redhat.com Subject: Re: Expect fails to recognize regexp Message-ID: <20020913181558.GA27282@nevyn.them.org> Mail-Followup-To: gdb@sources.redhat.com References: <20020913200643.I1574@cygbert.vinschen.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20020913200643.I1574@cygbert.vinschen.de> User-Agent: Mutt/1.5.1i X-SW-Source: 2002-09/txt/msg00158.txt.bz2 On Fri, Sep 13, 2002 at 08:06:43PM +0200, Corinna Vinschen wrote: > Hi, > > I'm trying to fix an error in the testsuite lib but I'm stuck at one > point. For some mysterious reason, I can't get a regexp right. > > Ok, the original preoblem I'm trying to solve is, that in lib/gdb.exp, > proc rerun_to_main() the procedure doesn't take into account, that > some targets never actually exit, but instead are programatically > trapped in some _exit function. > > This means that rerun_to_main() must be able to manage the situation > that gdb not just reruns, but first asks > > The program being debugged has been started already. > Start it from the beginning? (y or n) > > What I did was adding the following patch to gdb.exp: > > Index: lib/gdb.exp > =================================================================== > RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v > retrieving revision 1.26 > diff -u -p -r1.26 gdb.exp > --- lib/gdb.exp 13 Sep 2002 17:20:11 -0000 1.26 > +++ lib/gdb.exp 13 Sep 2002 17:59:35 -0000 > @@ -1685,6 +1685,10 @@ proc rerun_to_main {} { > } else { > send_gdb "run\n" > gdb_expect { > + -re "The program .* has been started already.*y or n. $" { > + send_gdb "y\n" > + exp_continue > + } > -re "Starting program.*$gdb_prompt $"\ > {pass "rerun to main" ; return 0} > -re "$gdb_prompt $"\ > > but it doesn't work! I tried various... uhm... variations of the > expression, include simple stuff as > > -re "The program.*" > > or moving the -re back and forth in the gdb_expect expression but to > no avail. The result in gdb.log was always the same: > > (gdb) PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop > run^M > The program being debugged has been started already.^M > Start it from the beginning? (y or n) FAIL: gdb.base/ena-dis-br.exp: > (timeout) rerun to main > > As you can see, there's no 'y' in the log so expect didn't recognize > the expression at all. > > Does anybody have an idea what's going on here? What do you get if you put "exp_internal 1" before this expression? [This is why I loathe DejaGNU sometimes. TCL/Expect are very... picky.] -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer