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.
51 lines
587 B
C
51 lines
587 B
C
/* A test */
|
|
|
|
#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);
|
|
extern int shr2(int);
|
|
extern float sg;
|
|
|
|
int eglob;
|
|
|
|
struct {
|
|
int a;
|
|
int b;
|
|
} s;
|
|
|
|
int g;
|
|
|
|
int local_structarg(struct s x)
|
|
{
|
|
return x.b;
|
|
}
|
|
|
|
int mainshr1(int g)
|
|
{
|
|
return 2*g;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
struct s y;
|
|
|
|
gdb_unbuffer_output ();
|
|
|
|
g = 1;
|
|
g = shr1(g);
|
|
g = shr2(g);
|
|
g = mainshr1(g);
|
|
sg = 1.1;
|
|
y.a = 3;
|
|
y.b = 4;
|
|
g = local_structarg(y);
|
|
g = structarg(y);
|
|
g = pstructarg(&y);
|
|
return 0;
|
|
}
|