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…
x
Reference in New Issue
Block a user