public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: "Pierre Muller" <pierre.muller@ics-cnrs.unistra.fr>
To: "'gdb-patches'" <gdb-patches@sourceware.org>
Subject: [RFC 3/6] mingw-hdep: Add "maint set testuite-mode on/off" command.
Date: Thu, 26 Sep 2013 20:01:00 -0000	[thread overview]
Message-ID: <003201cebaf3$338a8b60$9a9fa220$@muller@ics-cnrs.unistra.fr> (raw)
In-Reply-To: <002901cebaf2$35ec65a0$a1c530e0$@muller@ics-cnrs.unistra.fr>

This patch is to add
maint set testsuite mode on/off
command.
  Finally, thanks to Yao's patch about handling of flushing of
stderr for mingw, it reduces to switching the
stdout and stderr between binary and text mode.

   Setting the file handles to binary mode avoid all the trouble
about double ^M that confuses DejaGnu so often when trying to
run the testsuite with a mingw compiled GDB.


Pierre Muller
GDB pascal language maintainer





2013-09-26  Pierre Muller  <muller@sourceware.org>

 	mingw-hdep.c (set_output_binary_mode): New function.
 	(set_output_normal_mode) : New function.
 	(maint_testsuite_mode): New static variable.
	(set_maint_testsuite_mode) : New function.
	(show_maint_testsuite_mode) : New function.
	(_initialize_mingw_hdep): Add "maint set testsuite-mode on/off"
 	command.

	(gdb_call_async_signal_handler):
	(void):


---
 gdb/mingw-hdep.c |   58
++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 58 insertions(+), 0 deletions(-)

diff --git a/gdb/mingw-hdep.c b/gdb/mingw-hdep.c
index 976e9e8..330f46b 100644
--- a/gdb/mingw-hdep.c
+++ b/gdb/mingw-hdep.c
@@ -21,6 +21,8 @@
 #include "main.h"
 #include "serial.h"
 #include "event-loop.h"
+#include "command.h"
+#include "gdbcmd.h"
 
 #include "gdb_assert.h"
 #include "gdb_select.h"
@@ -274,6 +276,50 @@ gdb_call_async_signal_handler (struct
async_signal_handler *handler,
   SetEvent (sigint_event);
 }
 
+/* Set stdout and stderr handles to binary unbuffered mode.  */
+
+static void
+set_output_binary_mode (void)
+{
+  /* 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);
+}
+
+/* Restore stdout and stderr handles to "normal" mode.  */
+
+static void
+set_output_normal_mode (void)
+{
+  setmode (fileno (stdout), O_TEXT);
+  setmode (fileno (stderr), O_TEXT);
+}
+
+static int maint_testsuite_mode = 0;
+
+/* Sets the maintenance testsuite mode using the static global
+   testuite_mode.  */
+
+static void
+set_maint_testsuite_mode (char *args, int from_tty,
+			       struct cmd_list_element *c)
+{
+  if (maint_testsuite_mode)
+    set_output_binary_mode ();
+  else
+    set_output_normal_mode ();
+}
+
+static void
+show_maint_testsuite_mode (struct ui_file *file, int from_tty,
+		struct cmd_list_element *c, const char *value)
+{
+  fprintf_filtered (file, _("Testsuite mode is %s.\n"), value);
+}
+
 /* -Wmissing-prototypes */
 extern initialize_file_ftype _initialize_mingw_hdep;
 
@@ -281,4 +327,16 @@ void
 _initialize_mingw_hdep (void)
 {
   sigint_event = CreateEvent (0, FALSE, FALSE, 0);
+  add_setshow_boolean_cmd ("testsuite-mode", class_maintenance,
+			   &maint_testsuite_mode, _("\
+Set to adapt to dejagnu testsuite runs."), _("\
+Show whether GDB is adapted to run testsuite."), _("\
+Use \"on\" to enable, \"off\" to disable.\n\
+If enabled, stdout and stderr are set to binary mode,\n\
+to allow better testing."),
+			   set_maint_testsuite_mode,
+			   show_maint_testsuite_mode,
+			   &maintenance_set_cmdlist,
+			   &maintenance_show_cmdlist);
+
 }
-- 
1.7.9

  parent reply	other threads:[~2013-09-26 20:01 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-26 19:54 [RFC 0/6] Handle several character priniting problems (mainly related to mingw hosts) Pierre Muller
2013-09-26 19:57 ` [RFC 1/6] Fix display of tabulation character for mingw hosts Pierre Muller
2013-10-01  1:19   ` Keith Seitz
2013-10-01  8:02     ` [RFC 1/6 -V2] " Pierre Muller
2013-10-22 18:24       ` Keith Seitz
     [not found]     ` <10182.1932978512$1380614580@news.gmane.org>
2013-11-06 21:24       ` Tom Tromey
2013-11-08 10:26         ` Pierre Muller
2013-09-26 19:57 ` [RFC 2/6] Avoid missing char before incomplete sequence in wchar_iterate Pierre Muller
2013-10-01  1:19   ` Keith Seitz
2013-10-01 12:48     ` Pierre Muller
2013-10-22 18:25       ` Keith Seitz
     [not found]     ` <33559.6669152894$1380631692@news.gmane.org>
2013-11-06 21:38       ` Tom Tromey
2013-11-08 11:21         ` Pierre Muller
     [not found]         ` <"007201cedc72$46a78810$d3f69830$@muller"@ics-cnrs.unistra.fr>
2013-11-08 11:43           ` Eli Zaretskii
2013-09-26 20:01 ` Pierre Muller [this message]
2013-09-26 20:03 ` [RFC 4/6] Always set testsuite mode and interactive mode for mingw hosts Pierre Muller
2013-09-26 20:04 ` [RFC 5/6] Handle "set print sevenbit-strings on" in print_wchar Pierre Muller
2013-10-01  1:19   ` Keith Seitz
2013-10-01 13:23     ` Pierre Muller
2013-10-22 18:25       ` Keith Seitz
2013-11-06 21:43         ` Tom Tromey
2013-09-26 20:05 ` [RFC 6/6] Fix remaining failures in gdb.base/printcmds.exp for mingw hosts Pierre Muller
2013-10-01  1:19   ` Keith Seitz
2013-10-01 13:39     ` Pierre Muller
2013-10-22 18:26       ` Keith Seitz
2013-11-06 21:53         ` Tom Tromey
     [not found] ` <33207.6293569573$1380225714@news.gmane.org>
2013-09-27  8:07   ` [RFC 3/6] mingw-hdep: Add "maint set testuite-mode on/off" command asmwarrior
2013-09-27  8:11     ` asmwarrior
2013-09-27 12:12       ` Pierre Muller
2013-09-27 15:07   ` Tom Tromey
2013-09-27 17:42     ` Pierre Muller
     [not found]     ` <5245c3a0.a3e2440a.4b98.ffffd279SMTPIN_ADDED_BROKEN@mx.google.com>
2013-09-27 19:36       ` Pedro Alves
2013-09-27 19:40         ` Pedro Alves
2013-09-27 21:12           ` Pierre Muller
2013-09-29 13:45         ` Yao Qi
2013-09-29 18:51           ` Pedro Alves
2013-09-29 23:00             ` Pierre Muller
2013-09-30  9:38               ` Pedro Alves
2013-09-30 12:33               ` Yao Qi
2013-10-01 19:42               ` Keith Seitz
     [not found]             ` <10148.9390749068$1380495630@news.gmane.org>
2013-09-29 23:54               ` asmwarrior
2013-09-30 19:23               ` Tom Tromey
2013-09-30 19:34                 ` Eli Zaretskii
2013-09-30 19:45                   ` Pedro Alves
2013-09-30 22:41                     ` Pierre Muller
     [not found] ` <11813.6176527061$1380225854@news.gmane.org>
2013-09-27 15:13   ` [RFC 5/6] Handle "set print sevenbit-strings on" in print_wchar Tom Tromey
2013-09-27 15:23     ` Pierre Muller
     [not found] ` <9177.88728042996$1380225912@news.gmane.org>
2013-11-06 21:50   ` [RFC 6/6] Fix remaining failures in gdb.base/printcmds.exp for mingw hosts Tom Tromey
     [not found] <"002901cebaf2$35ec65a0$a1c530e0$@muller"@ics-cnrs.unistra.fr>
     [not found] ` <"003201cebaf3$338a8b60$9a9fa220$@muller"@ics-cnrs.unistra.fr>
2013-09-26 20:08   ` [RFC 3/6] mingw-hdep: Add "maint set testuite-mode on/off" command Eli Zaretskii
2013-09-26 20:13     ` Pierre Muller
     [not found]     ` <"003e01cebaf4$e97923e0$bc6b6ba0$@muller"@ics-cnrs.unistra.fr>
2013-09-27  5:52       ` Eli Zaretskii
2013-09-27  6:53         ` Pierre Muller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='003201cebaf3$338a8b60$9a9fa220$@muller@ics-cnrs.unistra.fr' \
    --to=pierre.muller@ics-cnrs.unistra.fr \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).