RE: [RFC] Trying to fix testsuite/gdb.arch/i386-sse.exp pattern problem

Pierre Muller
2007-11-08T13:31:03Z

I simplified the test as much as I could:

$ cat ../../../src/gdb/testsuite/gdb.arch/test.exp
gdb_exit
gdb_start

gdb_test "print 1122233" \
".* = 1*2*.*" \
"Check int constant"

gdb_test "print 1122233" \
".* = 1{1,}2{1,}.*" \
"Check int constant with curly braces"

$ make check RUNTESTFLAGS="--debug gdb.arch/test.exp"
Nothing to be done for all...
rootme=`pwd`; export rootme; \
srcdir=../../../src/gdb/testsuite ; export srcdir ; \
EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo
${rootme}/..
/../expect/expect ; else echo expect ; fi` ; export EXPECT ; \
EXEEXT=.exe ; export EXEEXT ; \

LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../
../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$L
D_LI
BRARY_PATH; \
export LD_LIBRARY_PATH; \
if [ -f ${rootme}/../../expect/expect ] ; then \
TCL_LIBRARY=${srcdir}/../../tcl/library ; \
export TCL_LIBRARY ; fi ; \
` if [ -f ${srcdir}/../../dejagnu/runtest ]; then echo
${srcdir}/../../d
ejagnu/runtest; else if [ "i686-pc-cygwin" = "i686-pc-cygwin" ]; then echo
runte
st; else t='s,y,y,'; echo runtest | sed -e $t; fi; fi` --debug
gdb.arch/test.exp

WARNING: Couldn't find the global config file.
Test Run By Pierre on Thu Nov 8 14:18:02 2007
Native configuration is i686-pc-cygwin

=== gdb tests ===

Schedule of variations:
unix

Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for
targe
t.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for
target.
Using ../../../src/gdb/testsuite/config/unix.exp as tool-and-target-specific
int
erface file.
Running ../../../src/gdb/testsuite/gdb.arch/test.exp ...
FAIL: gdb.arch/test.exp: Check int constant with curly braces (gdb prompt
found
alone)
>>> Note that I modified gdb.log to get the (gdb prompt found alone) suffix.

=== gdb Summary ===

# of expected passes 1
# of unexpected failures 1
/usr/local/src/cvs/build/gdb/testsuite/../../gdb/gdb version
6.7.50.20071107-cv
s -nx

make: *** [just-check] Error 1

The dbg.log shows that:
expect: does "print 1122233\r\n$1 = 1122233\r\n(gdb) " (spawn_id 7) match
regula
r expression ".*A problem internal to GDB has been detected"? no^M
"\*\*\* DOSEXIT code.*"? no^M
"[\r\n]*(.* = 1*2*.*)[\r\n]+\(gdb\) $"? yes^M
But later:
expect: does "print 1122233\r\n$2 = 1122233\r\n(gdb) " (spawn_id 7) match
regula
r expression ".*A problem internal to GDB has been detected"? no^M
"\*\*\* DOSEXIT code.*"? no^M
"[\r\n]*(.* = 1{1,}2{1,}.*)[\r\n]+\(gdb\) $"? no^M

So even that simple test fails :(

Pierre

> -----Original Message-----
> From: gdb-patches-owner@sourceware.org [mailto:gdb-patches-
> owner@sourceware.org] On Behalf Of 'Daniel Jacobowitz'
> Sent: Thursday, November 08, 2007 1:38 PM
> To: Pierre Muller
> Cc: 'Andreas Schwab'; gdb-patches@sourceware.org
> Subject: Re: [RFC] Trying to fix testsuite/gdb.arch/i386-sse.exp
> pattern problem
>
> On Thu, Nov 08, 2007 at 11:54:56AM +0100, Pierre Muller wrote:
> > echo 'send_user "[regexp {[ni]{4}} {running}]\n"' | expect
> > as well as
> > echo 'send_user "[regexp "\[ni\]{4}" "running"]\n"' | expect
> >
> > return 1...
> >
> > So expect seems to work OK...
>
> In that case, we should figure out why that particular pattern does
> not. Try running it with runtest --debug and look at the dbg.log.
>
> --
> Daniel Jacobowitz
> CodeSourcery