This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] native mingw32 gdb, eol format


On 07/16/2013 10:50 AM, Eli Zaretskii wrote:
> No, it's not.  A MinGW GDB is a native Windows program, and should
> behave like one.  Windows programs generally don't expect text coming
> through pipes to have Unix EOL format.  Also, it is terribly confusing
> to have GDB behave differently with its standard handles redirected to
> a pipe as opposed to disk files or the console device.
> 

OK, that makes sense.  I also find something similar was discussed in
2009,

  [RFC] Improve testsuite for poor expect behavior
  http://sourceware.org/ml/gdb-patches/2009-06/msg00346.html

but patches didn't go in then.  I withdraw this patch.

> This is a problem with the test suite, so please fix it in the test
> suite.  If you_must_  make the change in GDB, please introduce some
> specialized option to do that.  But changing the default behavior like
> that is IMO a no-starter.

Looks fixing the testsuite to allow '\r\r\n' is a promising approach,
however it is not a small piece of work.  The patch below is a
proof-of-concept implementation, and we need to apply the change (\r
-> ${cr}) to the testsuite.  Please let me know is it what you
want, and then I can evaluate how much efforts are needed here.

-- 
Yao (éå)

gdb/testsuite:

	* gdb.trace/deltrace.exp: Match $cr at the end of each line.
	* lib/gdb.exp: Set cr.
---
 gdb/testsuite/gdb.trace/deltrace.exp |   20 ++++++++++----------
 gdb/testsuite/lib/gdb.exp            |    8 ++++++++
 2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/gdb/testsuite/gdb.trace/deltrace.exp b/gdb/testsuite/gdb.trace/deltrace.exp
index 1053629..3f2a8b7 100644
--- a/gdb/testsuite/gdb.trace/deltrace.exp
+++ b/gdb/testsuite/gdb.trace/deltrace.exp
@@ -82,12 +82,12 @@ if { $trcpt1 <= 0 || $trcpt2 <= 0 || $trcpt3 <= 0 } then {
 
 gdb_test "info tracepoints" \
     "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
-\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+.
-\[\t \]+not installed on target.
-\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+.
-\[\t \]+not installed on target.
-\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+.
-\[\t \]+not installed on target." \
+\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+${cr}
+\[\t \]+not installed on target${cr}
+\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+${cr}
+\[\t \]+not installed on target${cr}
+\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+${cr}
+\[\t \]+not installed on target${cr}" \
 			"3.2a: set three tracepoints"
 
 #gdb_test_no_output "delete tracepoint $trcpt1" ""
@@ -105,10 +105,10 @@ gdb_test_multiple "delete tracepoint $trcpt1" "3.2b: delete first tracepoint" {
 
 gdb_test "info tracepoints" \
     "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
-\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+.
-\[\t \]+not installed on target.
-\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+.
-\[\t \]+not installed on target." \
+\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+${cr}
+\[\t \]+not installed on target${cr}
+\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+${cr}
+\[\t \]+not installed on target${cr}" \
 			"3.2c: verify delete first tracepoint"
 
 #gdb_test_no_output "delete tracepoint $trcpt2" ""
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index cb92a94..5d2ad15 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -102,6 +102,14 @@ set octal "\[0-7\]+"
 
 set inferior_exited_re "(\\\[Inferior \[0-9\]+ \\(.*\\) exited)"
 
+# GDB configured for mingw or cygwin host can be run in a Cygwin PTY,
+# which expands '\n' to '\r\n', so the EOL ('\r\n') becomes '\r\r\n'.
+if { [ishost *-*-mingw*] || [ishost *cygwin*] } {
+    set cr "\r+"
+} else {
+    set cr "\r"
+}
+
 ### Only procedures should come after this point.
 
 #
-- 
1.7.7.6


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]