[RFC 3/6] mingw-hdep: Add "maint set testuite-mode on/off" command.

Pedro Alves palves@redhat.com
Mon Sep 30 09:38:00 GMT 2013


On 09/29/2013 11:57 PM, Pierre Muller wrote:
> I found out that this patch
> 
> $ cvs diff -up
> cvs diff: Diffing .
> Index: gdb.exp
> ===================================================================
> RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v
> retrieving revision 1.246
> diff -u -p -r1.246 gdb.exp
> --- gdb.exp     20 Sep 2013 21:47:05 -0000      1.246
> +++ gdb.exp     29 Sep 2013 22:50:10 -0000
> @@ -1454,6 +1454,9 @@ proc default_gdb_start { } {
>         perror "Spawning $GDB failed."
>         return 1
>      }
> +    if [ishost "*-*-mingw*"] {
> +       fconfigure $res -translation {crlf crlf}
> +    }
>      gdb_expect 360 {
>         -re "\[\r\n\]$gdb_prompt $" {
>             verbose "GDB initialized."
> 
> 
> works... 

That's great news!

> but only for cygwin dejagnu...
> 
> It doesn't on the dejagnu I found for msys system :(
> After a looong debugging, it seems to turn out to be because
> 
> (on msys)$ runtest --version
> WARNING: Couldn't find the global config file.
> Expect version is       5.26
> Tcl version is          8.4
> Framework version is    1.4.2.x
> 
> while on cygwin:
> $ runtest --version
> Expect version is       5.45
> Tcl version is          8.5
> Framework version is    1.5
> 
> Which leads to the fact that remote_spawn directly calls spawn in 5.26,
> while it uses open command in version 5.45...
> The problem is that only the open command returns a channeled suitable for
> fconfigure...
> which leads to the following error on msys:
> 
> ERROR: tcl error sourcing ../../../puresrc/gdb/testsuite/gdb.base/co1.exp.
> ERROR: can not find channel named "6"
>     while executing
> "fconfigure $res -translation {crlf crlf}"
>     invoked from within
> "if [ishost "*-*-mingw*"] {
>         fconfigure $res -translation {crlf crlf}
>     }"
>     (procedure "default_gdb_start" line 37)
>     invoked from within
> "default_gdb_start"
>     (procedure "gdb_start" line 2)
>     invoked from within
> "gdb_start"
>     (procedure "clean_restart" line 7)
>     invoked from within
> "clean_restart $executable"
>     (procedure "prepare_for_testing" line 6)
>     invoked from within
> "prepare_for_testing $testfile.exp $testfile  [list $srcfile $srcfile2] {debug n
> owarnings}"
>     (file "../../../puresrc/gdb/testsuite/gdb.base/co1.exp" line 1)
>     ("uplevel" body line 1)
>     invoked from within
> "catch "uplevel #0 source $test_file_name""
> 
> Any suggestions, other that throwing away the old dejagnu ...

You can always try overriding remote_spawn -- in tcl, whatever definition
of a procedure is loaded last overrides previous definitions.  You could try
copying new newer remote_spawn that uses open to your board file.  Or copy
the older remote_spawn, and tweak it just enough to use open.  I have no idea
if that would require a cascading series of replacements or other functions,
but maybe still worth a try.

But, anyway, if an easy workaround is not found, just requiring a
newer dejagnu is reasonable and the way to go, IMO.

-- 
Pedro Alves



More information about the Gdb-patches mailing list