aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.base/interrupt.c5
-rw-r--r--gdb/testsuite/lib/unbuffer_output.c39
3 files changed, 50 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index a5896be..efc74f6 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2015-02-27 Pedro Alves <palves@redhat.com>
+
+ * lib/unbuffer_output.c: New file.
+ * gdb.base/interrupt.c: Include "../lib/unbuffer_output.c".
+ (main): Call gdb_unbuffer_output.
+
2015-02-27 Yao Qi <yao.qi@linaro.org>
* gdb.base/catch-syscall.exp: Don't skip it on hppa*-hp-hpux*
diff --git a/gdb/testsuite/gdb.base/interrupt.c b/gdb/testsuite/gdb.base/interrupt.c
index d7bb271..6426015 100644
--- a/gdb/testsuite/gdb.base/interrupt.c
+++ b/gdb/testsuite/gdb.base/interrupt.c
@@ -3,6 +3,8 @@
#include <unistd.h>
#include <stdlib.h>
+#include "../lib/unbuffer_output.c"
+
#ifdef SIGNALS
#include <signal.h>
@@ -17,6 +19,9 @@ main ()
{
char x;
int nbytes;
+
+ gdb_unbuffer_output ();
+
#ifdef SIGNALS
signal (SIGINT, sigint_handler);
#endif
diff --git a/gdb/testsuite/lib/unbuffer_output.c b/gdb/testsuite/lib/unbuffer_output.c
new file mode 100644
index 0000000..5093299
--- /dev/null
+++ b/gdb/testsuite/lib/unbuffer_output.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2008-2015 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Force output to unbuffered mode if not connected to a terminal. */
+
+#include <stdio.h>
+#ifndef __MINGW32__
+#include <unistd.h>
+#endif
+
+static int
+gdb_unbuffer_output (void)
+{
+ /* Always force this for Windows testing. To a native Windows
+ program running under a Cygwin shell/ssh, stdin is really a
+ Windows pipe, thus not a tty and its outputs ends up fully
+ buffered. */
+#ifndef __MINGW32__
+ if (!isatty (fileno (stdin)))
+#endif
+ {
+ setvbuf (stdout, NULL, _IONBF, BUFSIZ);
+ setvbuf (stderr, NULL, _IONBF, BUFSIZ);
+ }
+}