From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11152 invoked by alias); 13 Aug 2013 09:35:38 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 11105 invoked by uid 89); 13 Aug 2013 09:35:38 -0000 X-Spam-SWARE-Status: No, score=-4.6 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL autolearn=ham version=3.3.2 Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 13 Aug 2013 09:35:36 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1V9B0p-0000zP-8K from Yao_Qi@mentor.com for gdb-patches@sourceware.org; Tue, 13 Aug 2013 02:35:35 -0700 Received: from SVR-ORW-FEM-04.mgc.mentorg.com ([147.34.97.41]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Tue, 13 Aug 2013 02:35:34 -0700 Received: from qiyao.dyndns.org (147.34.91.1) by svr-orw-fem-04.mgc.mentorg.com (147.34.97.41) with Microsoft SMTP Server id 14.2.247.3; Tue, 13 Aug 2013 02:35:35 -0700 From: Yao Qi To: Subject: [PATCH 3/3] Set stdout/stderr to binary mode in cygwin. Date: Tue, 13 Aug 2013 09:35:00 -0000 Message-ID: <1376386468-26249-4-git-send-email-yao@codesourcery.com> In-Reply-To: <1376386468-26249-1-git-send-email-yao@codesourcery.com> References: <1376386468-26249-1-git-send-email-yao@codesourcery.com> MIME-Version: 1.0 Content-Type: text/plain X-SW-Source: 2013-08/txt/msg00337.txt.bz2 I see the following fail on a remote windows host, info tracepoints^M Num Type Disp Enb Address What^M^M 1 tracepoint keep y 0x0040143f in gdb_c_test at actions.c:74^M^M not installed on target^M^M 2 tracepoint keep y 0x00401687 in gdb_asm_test at actions.c:121^M^M not installed on target^M^M 3 tracepoint keep y 0x004013d2 in gdb_recursion_test at actions.c:61^M^M not installed on target^M^M (gdb) FAIL: gdb.trace/deltrace.exp: 3.1a: set three tracepoints this fail is caused by an extra '\r' at end of each line. on Windows, when a file is opened in text mode, a "\n" is always expanded to "\r\n", so gdb on Windows is outputting "\r\n", and when that goes throught the PTY, the '\n' is being expanded to "\r\n", hence "\r\r\n". This patch is to force stdout/stderr to binary mode prevents that expansion. gdb: 2013-08-13 Pedro Alves Daniel Jacobowitz Yao Qi * main.c [__MINGW32__]: Include fcntl.h and windows.h. (captured_main) [__MINGW32__]: Set stdout and stderr to binary mode if GDB is using cygwin pty. --- gdb/main.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/gdb/main.c b/gdb/main.c index 0174992..76be6ce 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -47,6 +47,11 @@ #include "filenames.h" #include "filestuff.h" +#ifdef __MINGW32__ +#include +#include +#endif + /* The selected interpreter. This will be used as a set command variable, so it should always be malloc'ed - since do_setshow_command will free it. */ @@ -384,6 +389,13 @@ captured_main (void *data) other operation is performed. */ setvbuf (stdout, NULL, _IONBF, BUFSIZ); setvbuf (stderr, NULL, _IONBF, BUFSIZ); + + /* In textmode, a '\n' is automatically expanded into "\r\n". This + results in expect seeing "\r\r\n". The tests aren't prepared + currently for other forms of eol. As a workaround, we force the + output to binary mode. */ + setmode (fileno (stdout), O_BINARY); + setmode (fileno (stderr), O_BINARY); } #endif -- 1.7.7.6