public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
* [SCM]  archer-muller-windows-multi:  * Testsuite CR/LF fixes
@ 2011-03-25 23:46 muller
  0 siblings, 0 replies; only message in thread
From: muller @ 2011-03-25 23:46 UTC (permalink / raw)
  To: archer-commits

The branch, archer-muller-windows-multi has been updated
       via  58fd2bf8ec3090fe702dfe1e18d8cd2fa93a1738 (commit)
       via  d0d0ef7d2734a33469847b0e522628ab164a5b89 (commit)
      from  fc94792508b4d7836607b026aef7d660db68c685 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 58fd2bf8ec3090fe702dfe1e18d8cd2fa93a1738
Author: Pierre Muller <muller@ics.u-strasbg.fr>
Date:   Sat Mar 26 00:26:12 2011 +0100

     * Testsuite CR/LF fixes

commit d0d0ef7d2734a33469847b0e522628ab164a5b89
Author: Pierre Muller <muller@ics.u-strasbg.fr>
Date:   Sat Mar 26 00:25:30 2011 +0100

     * Special code to get better testuite results

-----------------------------------------------------------------------

Summary of changes:
 gdb/mingw-hdep.c                   |    5 +
 gdb/testsuite/gdb.base/annota1.exp |    4 +-
 gdb/testsuite/gdb.base/annota3.exp |    2 +-
 gdb/testsuite/lib/gdb.exp          |  153 ++++++++++++++++++++++++++++++++++++
 gdb/testsuite/lib/pascal.exp       |   23 ++++++
 5 files changed, 184 insertions(+), 3 deletions(-)

First 500 lines of diff:
diff --git a/gdb/mingw-hdep.c b/gdb/mingw-hdep.c
index 1a1d1df..d2571c6 100644
--- a/gdb/mingw-hdep.c
+++ b/gdb/mingw-hdep.c
@@ -27,6 +27,7 @@
 #include "gdb_string.h"
 #include "readline/readline.h"
 
+#include <stdio.h>
 #include <windows.h>
 
 /* This event is signalled whenever an asynchronous SIGINT handler
@@ -256,4 +257,8 @@ void
 _initialize_mingw_hdep (void)
 {
   sigint_event = CreateEvent (0, FALSE, FALSE, 0);
+  SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX
+		| SEM_NOOPENFILEERRORBOX);
+  setvbuf (stdout, NULL, _IONBF, BUFSIZ);
+  setvbuf (stderr, NULL, _IONBF, BUFSIZ);
 }
diff --git a/gdb/testsuite/gdb.base/annota1.exp b/gdb/testsuite/gdb.base/annota1.exp
index b800758..6afd2c0 100644
--- a/gdb/testsuite/gdb.base/annota1.exp
+++ b/gdb/testsuite/gdb.base/annota1.exp
@@ -79,7 +79,7 @@ gdb_test "break main" \
 #
 
 set old_gdb_prompt $gdb_prompt
-set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n"
+set gdb_prompt "\r+\n\032\032pre-prompt\r+\n$gdb_prompt \r+\n\032\032prompt\r+\n"
 
 #
 # Escape all the characters in the path that need it. For instance 
@@ -144,7 +144,7 @@ gdb_test_multiple "info break" "breakpoint info" {
 #exp_internal 1
 set binexp [string_to_regexp $binfile]
 gdb_test_multiple "run" "run until main breakpoint" {
-    -re "\r\n\032\032post-prompt\r\nStarting program: $binexp \(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)*\r\n\r\n\032\032breakpoint 1\r\n\r\nBreakpoint 1, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nmain\r\n\032\032frame-args\r\n \\(\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*annota1.c\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n$main_line\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*$srcfile:$main_line:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped.*$gdb_prompt$" {
+    -re "\r\n\032\032post-prompt\r\nStarting program: $binexp \(\(\r\n\(|.*New thread.*\)\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)*\r\n\r\n\032\032breakpoint 1\r\n\r\nBreakpoint 1, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nmain\r\n\032\032frame-args\r\n \\(\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*annota1.c\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n$main_line\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*$srcfile:$main_line:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped.*$gdb_prompt$" {
 	pass "run until main breakpoint" 
     }
 }
diff --git a/gdb/testsuite/gdb.base/annota3.exp b/gdb/testsuite/gdb.base/annota3.exp
index 7fd2270..1cb3cd9 100644
--- a/gdb/testsuite/gdb.base/annota3.exp
+++ b/gdb/testsuite/gdb.base/annota3.exp
@@ -79,7 +79,7 @@ gdb_test "break main" \
 # use send_gdb and gdb_expect or gdb_expect_list.
 
 set old_gdb_prompt $gdb_prompt
-set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n"
+set gdb_prompt "\r+\n\032\032pre-prompt\r+\n$gdb_prompt \r+\n\032\032prompt\r+\n"
 
 
 
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 6a2f1a2..9cfdc47 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -97,6 +97,135 @@ if ![info exists env(EXEEXT)] {
     set EXEEXT $env(EXEEXT)
 }
 
+global cygpath
+global use_cygpath
+
+set use_cygpath "no"
+set cygpath ""
+if { [catch {exec which "cygpath"} cygpath] != 0 } {
+  set use_cygpath "no"
+} else {
+  if { [file exists $cygpath] } {
+    set use_cygpath "yes"
+  }
+}
+ 
+verbose "cygpath is '$cygpath'"
+verbose "use_cygpath is '$use_cygpath'"
+
+global transform_gdb_expect_code
+set transform_gdb_expect_code ""
+
+if { [istarget "*-*-mingw*"] || [istarget "*djgpp"] || [istarget "*-*-cygwin*"]
+     || [istarget "*-*-solaris*"] } {
+  set transform_gdb_expect_code "adapt_expcode_to_text_mode";
+  verbose "Using adapt_expcode_to_text_mode proc for target"
+}
+
+# Special code used to transform regular expressions inside
+# gdb_expect to be able to cope with the two \r appearing if 
+# stdout is open in text mode.
+# This simply replaces all \r\n by \r+\n, expect if the pattern is within
+# square brackets.
+# FIXME: if expcode contains variables that themselves contain \r\n
+# patterns, those patterns are not correctly converted.
+
+proc adapt_expcode_to_text_mode { expcode } {
+    global gdb_prompt
+    verbose "Special replacement in gdb_expect entry expcode=\"$expcode\"" 3
+    # Protect all '\r\n' inside square brackets by
+    # replacing those '\r\n' by '\rzz\n'
+    set subst1a [regsub -all {\[([^]]*)\\r\\n([^]]*)\]} "$expcode" \
+		{[\1\\rzz\\n\2]} expcode1a]
+    if { $subst1a > 0 } {
+	verbose "subst1a $subst1a"
+	verbose "before \"$expcode\""
+	verbose "after \"$expcode1a\""
+    }
+    set subst1b [regsub -all {\[([^]]*)\r\n([^]]*)\]} $expcode1a \
+		{[\1\rZZ\n\2]} expcode1b]
+    if { $subst1b > 0 } {
+	verbose "subst1b $subst1b"
+	verbose "before \"$expcode1a\""
+	verbose "after \"$expcode1b\""
+    }
+
+    set substp0 [regsub -all {\\[(\\]gdb\\[)\\]} [subst -nobackslashes {$gdb_prompt}] {.*gdb.*} modprompt0]
+    set substp1 [regsub -all {\\} [subst -nobackslashes {$modprompt0}] {\\\\} modprompt1]
+    set substp2 [regsub -all {\r\n} [subst -nobackslashes {$modprompt1}] {\\r\\n} modprompt2]
+
+    set substp3 [regsub -all {\\\\} [subst -nobackslashes {$modprompt2}] {\\} modprompt]
+    if { $substp2 > 0 } {
+	verbose "Subst found in gdb_prompt"
+	verbose [subst -nobackslashes $gdb_prompt]
+	verbose "modprompt1 [subst -nobackslashes $modprompt1]"
+	verbose "modprompt2"
+	verbose [subst -nobackslashes $modprompt2]
+	verbose "modprompt"
+	verbose [subst  $modprompt]
+        set subst1gdb [regsub -all {\$gdb_prompt} $expcode1b "$modprompt" \
+	    expcode1c]
+    if { $subst1gdb > 0 } {
+	verbose "subst1gdb $subst1gdb"
+	verbose "before \"$expcode1b\""
+	verbose "after \"$expcode1c\""
+    }
+
+
+	verbose "Subst for gdb_prompt found = $subst1gdb"
+	set expcode1 "$expcode1c"
+    } else {
+	verbose "No subst for gdb_prompt found"
+	set expcode1 "$expcode1b"
+    }
+    verbose "expcode1 is \"$expcode1\"" 
+    set subst2a [regsub -all {\\r\\n} $expcode1 {\\r+\\n} expcode2a]
+    if { $subst2a > 0 } {
+	verbose "subst2a $subst2a"
+	verbose "before \"$expcode1\""
+	verbose "after \"$expcode2a\""
+    }
+    set subst2b [regsub -all {\r\n} $expcode2a "\r+\n" expcode2]
+    if { $subst2b > 0 } {
+	verbose "subst2b $subst2b"
+	verbose "before \"$expcode2a\""
+	verbose "after \"$expcode2\""
+    }
+
+    set subst3a [regsub -all {\[([^]]*)\\rzz\\n([^]]*)\]} $expcode2 \
+		{[\1\r\n\2]} expcode3a]
+    if { $subst3a > 0 } {
+	verbose "subst3a $subst3a"
+	verbose "before \"$expcode2\""
+	verbose "after \"$expcode3a\""
+    }
+
+    set subst3b [regsub -all {\[([^]]*)\\rZZ\\n([^]]*)\]} $expcode3a \
+		"\[\\1\r\n\\2\]" expcode3]
+    if { $subst3b > 0 } {
+	verbose "subst3b $subst3b"
+	verbose "before \"$expcode3a\""
+	verbose "after \"$expcode3\""
+    }
+
+    set subst1 [expr $subst1a + $subst1b];
+    set subst2 [expr $subst2a + $subst2b];
+    set subst3 [expr $subst3a + $subst3b];
+    set subst [expr $subst1 + $subst2 + $subst3];
+    if { $subst1 != $subst3 } {
+	verbose "Problem with substitution expcode3=\"$expcode3\""
+    }
+    if { $subst2 != 0 } {
+	verbose "Special replacement gdb_expect substs=$subst"
+	set expcode $expcode3;
+	verbose "Special replacement in gdb_expect returned expcode=\"$expcode\""
+    }
+    if { $subst != 0 } {
+	verbose "subst1=$subst1 subst2=$subst2 subst3=$subst3" 3
+    }
+    return $expcode;
+}
+
 set octal "\[0-7\]+"
 
 set inferior_exited_re "(\\\[Inferior \[0-9\]+ \\(.*\\) exited)"
@@ -1219,6 +1348,8 @@ proc gdb_file_cmd { arg } {
     global verbose
     global GDB
     global last_loaded_file
+    global use_cygpath
+    global cygpath
 
     set last_loaded_file $arg
 
@@ -1245,10 +1376,28 @@ proc gdb_file_cmd { arg } {
 	    exp_continue
 	}
 	-re "$gdb_prompt $" {
+	    verbose "Killing OK"
 	    # OK.
 	}
     }
 
+    if { $use_cygpath == "yes" && [istarget *-*-mingw*]} {
+      verbose "Calling cygpath"
+      set resarg [remote_exec host $cygpath "-m $arg"]
+      set narg [lindex $resarg 1]
+      regsub -all {(\r|\n)} $narg "" narg
+      regsub {^(\[A-Za-z\]):/} $narg "/\1/" narg
+      set arg "$narg" 
+    } else {
+      # Using 
+      if { [istarget *-*-mingw*] } {
+	set substcount [regsub "^/(\[A-Za-z\])/" $arg {\1:/}  narg] 
+        verbose "Converting path to mingw style from $arg to $narg count=$substcount"
+	set arg "$narg"
+      } else {
+        set narg "$arg"
+      }
+    }
     send_gdb "file $arg\n"
     gdb_expect 120 {
 	-re "Reading symbols from.*no debugging symbols found.*done.*$gdb_prompt $" {
@@ -2425,6 +2574,10 @@ proc gdb_expect { args } {
 	}
     }
 
+    global transform_gdb_expect_code;
+    if { "$transform_gdb_expect_code" != "" } {
+	set expcode [$transform_gdb_expect_code $expcode];
+    }
     global suppress_flag;
     global remote_suppress_flag;
     if [info exists remote_suppress_flag] {
diff --git a/gdb/testsuite/lib/pascal.exp b/gdb/testsuite/lib/pascal.exp
index 891da37..5db21e4 100644
--- a/gdb/testsuite/lib/pascal.exp
+++ b/gdb/testsuite/lib/pascal.exp
@@ -38,7 +38,17 @@ proc pascal_init {} {
     global gpc_compiler
     global fpc_compiler
     global env
+    global cygpath
+    global use_cygpath
+
+    set use_cygpath "no"
+    set cygpath [exec which "cygpath"]
+    if { [file exists $cygpath] } {
+      set use_cygpath "yes"
+      verbose "cygpath is '$cygpath'" 2
+    }
  
+
     if { $pascal_init_done == 1 } {
 	return
     }
@@ -99,6 +109,9 @@ proc gpc_compile {source dest type options} {
 
 proc fpc_compile {source dest type options} {
     global fpc_compiler
+    global use_cygpath
+    global cygpath
+
     set add_flags ""
     if {$type == "object"} {
 	append add_flags " -Cn"
@@ -121,6 +134,16 @@ proc fpc_compile {source dest type options} {
 	    }
 	}
     }
+    if { $use_cygpath == "yes" } {
+      set resdest [remote_exec host $cygpath "-m $dest"]
+      set dest [lindex $resdest 1]
+      regsub -all {(\r|\n)} $dest "" dest
+      set ressource [remote_exec host $cygpath "-m $source"]
+      set source [lindex $ressource 1]
+      regsub -all {(\r|\n)} $source "" source
+    }
+    verbose "Compiling '$source' to '$dest' using $fpc_compiler"
+    verbose "Using '$add_flags' options"
 
     set result [remote_exec host $fpc_compiler "-o$dest $add_flags $source"]
     return $result


hooks/post-receive
--
Repository for Project Archer.


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2011-03-25 23:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-25 23:46 [SCM] archer-muller-windows-multi: * Testsuite CR/LF fixes muller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).