Unbuffer all tests that rely on stdio
This forces all tests that rely on stdio to be unbuffered, like
interrupt.exp was adjusted in 6f98576f
.
To recap, in some scenarios, GDB or GDBserver can be spawned with
input _not_ connected to a tty, and then tests that rely on stdio fail
with timeouts, because the inferior's stdout and stderr streams end up
fully buffered. Calling gdb_unbuffer_output forces output to be
unbuffered.
See https://sourceware.org/ml/gdb-patches/2015-02/msg00809.html and
https://sourceware.org/ml/gdb-patches/2015-02/msg00819.html.
Tested on x86_64 Fedora 20, native, and against a remote gdbserver
board file that connects to the target with ssh, with and without -t
(create pty).
gdb/testsuite/ChangeLog:
2015-07-29 Pedro Alves <palves@redhat.com>
* gdb.base/call-ar-st.c: Include "../lib/unbuffer_output.c".
(main): Call gdb_unbuffer_output.
* gdb.base/call-rt-st.c: Include "../lib/unbuffer_output.c".
(main): Call gdb_unbuffer_output.
* gdb.base/call-strs.c: Include "../lib/unbuffer_output.c".
(main): Call gdb_unbuffer_output.
* gdb.base/call-strs.exp: Adjust to step over the
gdb_unbuffer_output call.
* gdb.base/catch-gdb-caused-signals.c: Include
"../lib/unbuffer_output.c".
(main): Call gdb_unbuffer_output.
* gdb.base/dprintf.c: Include "../lib/unbuffer_output.c".
(main): Call gdb_unbuffer_output.
* gdb.base/ending-run.c: Include "../lib/unbuffer_output.c".
(main): Call gdb_unbuffer_output.
* gdb.base/run.c: Include "../lib/unbuffer_output.c".
(main): Call gdb_unbuffer_output.
* gdb.base/shlib-call.exp: Adjust to step over the
gdb_unbuffer_output call.
* gdb.base/shmain.c: Include "../lib/unbuffer_output.c".
(main): Call gdb_unbuffer_output.
* gdb.base/sizeof.c: Include "../lib/unbuffer_output.c".
(main): Call gdb_unbuffer_output.
* gdb.base/varargs.c: Include "../lib/unbuffer_output.c".
(main): Rename to ...
(test): ... this.
(main): Reimplement.
* gdb.base/varargs.exp: Run to test instead of to main.
* gdb.mi/mi-dprintf.c: Include "../lib/unbuffer_output.c".
(main): Call gdb_unbuffer_output.
This commit is contained in:
parent
58789a917b
commit
dedad4e3d2
|
@ -1,3 +1,36 @@
|
|||
2015-07-29 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* gdb.base/call-ar-st.c: Include "../lib/unbuffer_output.c".
|
||||
(main): Call gdb_unbuffer_output.
|
||||
* gdb.base/call-rt-st.c: Include "../lib/unbuffer_output.c".
|
||||
(main): Call gdb_unbuffer_output.
|
||||
* gdb.base/call-strs.c: Include "../lib/unbuffer_output.c".
|
||||
(main): Call gdb_unbuffer_output.
|
||||
* gdb.base/call-strs.exp: Adjust to step over the
|
||||
gdb_unbuffer_output call.
|
||||
* gdb.base/catch-gdb-caused-signals.c: Include
|
||||
"../lib/unbuffer_output.c".
|
||||
(main): Call gdb_unbuffer_output.
|
||||
* gdb.base/dprintf.c: Include "../lib/unbuffer_output.c".
|
||||
(main): Call gdb_unbuffer_output.
|
||||
* gdb.base/ending-run.c: Include "../lib/unbuffer_output.c".
|
||||
(main): Call gdb_unbuffer_output.
|
||||
* gdb.base/run.c: Include "../lib/unbuffer_output.c".
|
||||
(main): Call gdb_unbuffer_output.
|
||||
* gdb.base/shlib-call.exp: Adjust to step over the
|
||||
gdb_unbuffer_output call.
|
||||
* gdb.base/shmain.c: Include "../lib/unbuffer_output.c".
|
||||
(main): Call gdb_unbuffer_output.
|
||||
* gdb.base/sizeof.c: Include "../lib/unbuffer_output.c".
|
||||
(main): Call gdb_unbuffer_output.
|
||||
* gdb.base/varargs.c: Include "../lib/unbuffer_output.c".
|
||||
(main): Rename to ...
|
||||
(test): ... this.
|
||||
(main): Reimplement.
|
||||
* gdb.base/varargs.exp: Run to test instead of to main.
|
||||
* gdb.mi/mi-dprintf.c: Include "../lib/unbuffer_output.c".
|
||||
(main): Call gdb_unbuffer_output.
|
||||
|
||||
2015-07-29 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* gdb.mi/mi-dprintf.exp (mi_expect_dprintf): New procedure,
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../lib/unbuffer_output.c"
|
||||
|
||||
/**************************************************************************
|
||||
* TESTS :
|
||||
* -- function arguments that are enumerated types
|
||||
|
@ -912,6 +914,8 @@ int main () {
|
|||
static struct two_floats_t *f2;
|
||||
static struct two_floats_t *f3;
|
||||
|
||||
gdb_unbuffer_output ();
|
||||
|
||||
/* Initialize arrays
|
||||
*/
|
||||
for (index = 0; index < 120; index++) {
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../lib/unbuffer_output.c"
|
||||
|
||||
/**************************************************************************
|
||||
* TESTS :
|
||||
* function returning large structures, which go on the stack
|
||||
|
@ -562,6 +564,7 @@ int main () {
|
|||
struct one_double_t *d1;
|
||||
struct two_floats_t *f3;
|
||||
|
||||
gdb_unbuffer_output ();
|
||||
|
||||
/* Allocate space for large structures
|
||||
*/
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../lib/unbuffer_output.c"
|
||||
|
||||
char buf[100];
|
||||
char bigbuf[1000];
|
||||
char * s;
|
||||
|
@ -47,6 +49,8 @@ link_malloc ()
|
|||
|
||||
int main()
|
||||
{
|
||||
gdb_unbuffer_output ();
|
||||
|
||||
s = &buf[0];
|
||||
strcpy(buf, "test string");
|
||||
str_func("abcd", "efgh", "ijkl", "mnop", "qrst", "uvwx", "yz12");
|
||||
|
|
|
@ -57,8 +57,7 @@ if ![runto_main] then {
|
|||
set prev_timeout $timeout
|
||||
set timeout 120
|
||||
|
||||
#step
|
||||
gdb_test "step" \
|
||||
gdb_test "next 2" \
|
||||
"strcpy\\(buf, \"test string\"\\);" \
|
||||
"step after assignment to s"
|
||||
|
||||
|
|
|
@ -20,11 +20,15 @@
|
|||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "../lib/unbuffer_output.c"
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
gdb_unbuffer_output ();
|
||||
|
||||
i++; /* set dprintf here */
|
||||
return 0; /* set breakpoint here */
|
||||
}
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "../lib/unbuffer_output.c"
|
||||
|
||||
static int g;
|
||||
|
||||
void
|
||||
|
@ -32,6 +34,8 @@ main (int argc, char *argv[])
|
|||
{
|
||||
int loc = 1234;
|
||||
|
||||
gdb_unbuffer_output ();
|
||||
|
||||
/* Ensure these functions are available. */
|
||||
printf ("kickoff %d\n", loc);
|
||||
fprintf (stderr, "also to stderr %d\n", loc);
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../lib/unbuffer_output.c"
|
||||
|
||||
int callee (int x)
|
||||
{
|
||||
int y = x * x; /* -break1- */
|
||||
|
@ -16,6 +18,8 @@ int main()
|
|||
int *p;
|
||||
int i;
|
||||
|
||||
gdb_unbuffer_output ();
|
||||
|
||||
p = (int *) malloc( 4 );
|
||||
|
||||
for (i = 1; i < 10; i++)
|
||||
|
|
|
@ -6,11 +6,15 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../lib/unbuffer_output.c"
|
||||
|
||||
int factorial (int);
|
||||
|
||||
int
|
||||
main (int argc, char **argv, char **envp)
|
||||
{
|
||||
gdb_unbuffer_output ();
|
||||
|
||||
#ifdef FAKEARGV
|
||||
printf ("%d\n", factorial (1)); /* commands.exp: hw local_var out of scope */
|
||||
#else
|
||||
|
|
|
@ -71,7 +71,7 @@ if ![runto_main] then {
|
|||
|
||||
#step -over
|
||||
|
||||
gdb_test "next" "g = shr1\\(g\\);" "next to shr1"
|
||||
gdb_test "next 2" "g = shr1\\(g\\);" "next to shr1"
|
||||
|
||||
#print g
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
#include "ss.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#include "../lib/unbuffer_output.c"
|
||||
|
||||
extern int structarg(struct s);
|
||||
extern int pstructarg(struct s*);
|
||||
extern int shr1(int);
|
||||
|
@ -31,6 +33,9 @@ int mainshr1(int g)
|
|||
int main()
|
||||
{
|
||||
struct s y;
|
||||
|
||||
gdb_unbuffer_output ();
|
||||
|
||||
g = 1;
|
||||
g = shr1(g);
|
||||
g = shr2(g);
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include "../lib/unbuffer_output.c"
|
||||
|
||||
typedef char padding[16];
|
||||
|
||||
struct {
|
||||
|
@ -98,6 +100,8 @@ fill_structs (void)
|
|||
int
|
||||
main ()
|
||||
{
|
||||
gdb_unbuffer_output ();
|
||||
|
||||
fill_structs ();
|
||||
|
||||
printf ("sizeof (char) == %d\n", (int) sizeof (char));
|
||||
|
|
|
@ -48,7 +48,7 @@ if ![runto_main] then {
|
|||
# Query GDB for the size of various types
|
||||
#
|
||||
|
||||
gdb_test "next"
|
||||
gdb_test "next 2"
|
||||
|
||||
set sizeof_char [get_sizeof "char" 1]
|
||||
set sizeof_short [get_sizeof "short" 2]
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "../lib/unbuffer_output.c"
|
||||
|
||||
int find_max1(int, ...);
|
||||
int find_max2(int, int, ...);
|
||||
double find_max_double(int, double, ...);
|
||||
|
@ -45,7 +47,9 @@ long double _Complex ldc4 = 4.0L + 4.0Li;
|
|||
|
||||
#endif
|
||||
|
||||
int main() {
|
||||
int
|
||||
test (void)
|
||||
{
|
||||
c = -1;
|
||||
uc = 1;
|
||||
s = -2;
|
||||
|
@ -70,6 +74,13 @@ int main() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
gdb_unbuffer_output ();
|
||||
test ();
|
||||
}
|
||||
|
||||
/* Integer varargs, 1 declared arg */
|
||||
|
||||
int find_max1(int num_vals, ...) {
|
||||
|
|
|
@ -66,7 +66,7 @@ if [gdb_skip_stdio_test "varargs.exp"] {
|
|||
return
|
||||
}
|
||||
|
||||
if ![runto_main] then {
|
||||
if ![runto test] then {
|
||||
perror "couldn't run to breakpoint"
|
||||
continue
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../lib/unbuffer_output.c"
|
||||
|
||||
static int g;
|
||||
|
||||
void
|
||||
|
@ -34,6 +36,8 @@ main (int argc, char *argv[])
|
|||
{
|
||||
int loc = 1234;
|
||||
|
||||
gdb_unbuffer_output ();
|
||||
|
||||
/* Ensure these functions are available. */
|
||||
printf ("kickoff %d\n", loc);
|
||||
fprintf (stderr, "also to stderr %d\n", loc);
|
||||
|
|
Loading…
Reference in New Issue