old-cross-binutils/gdb/testsuite/gdb.base/varargs.exp
Pedro Alves dedad4e3d2 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.
2015-07-29 11:09:45 +01:00

128 lines
3.7 KiB
Text

# Copyright 1997-2015 Free Software Foundation, Inc.
# 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/>. */
# This file was written by Elena Zannoni (ezannoni@cygnus.com)
# this file tests command line calls with functions having variable
# args list
# corresponding source file: varargs.c
#print find_max1(5,1,2,3,4,5)
#print find_max1(1,3)
#call find_max1(10,1,2,3,4,5,6,7,8,29,0)
#print find_max2(3,1,2,3)
#print find_max_double(5,1.0,17.0,2.0,3.0,4.0)
#quit
set prototypes 0
standard_testfile .c
if [get_compiler_info] {
return -1
}
set additional_flags {debug}
if [support_complex_tests] {
lappend additional_flags "additional_flags=-DTEST_COMPLEX"
}
if {$hp_cc_compiler} {
lappend additional_flags "additional_flags=-Ae"
}
# build the first test case
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
executable ${additional_flags}] != "" } {
untested varargs.exp
return -1
}
# Start with a fresh gdb.
clean_restart ${binfile}
gdb_test_no_output "set print sevenbit-strings"
gdb_test_no_output "set print address off"
gdb_test_no_output "set width 0"
if [gdb_skip_stdio_test "varargs.exp"] {
# Nothing in this module is testable without printf.
return
}
if ![runto test] then {
perror "couldn't run to breakpoint"
continue
}
if { $hp_aCC_compiler } {
# When compiled w/ aCC we need to disable overload resolution
# for command line calls.
# We need it for vararg calls since the aCC compiler gives us no
# information about the undeclared arguments, or even that there
# _are_ undeclared arguments. As far as gdb is concerned it only
# knows about the declared arguments. So we need to force the call
# even though the overload resolution mechanism says that the types
# don't match.
# - guo
gdb_test_no_output "set overload-resolution 0"
}
gdb_test_stdio "print find_max1(5,1,2,3,4,5)" \
"find_max\\(5, 1, 2, 3, 4, 5\\) returns 5\[ \r\n\]+" \
".\[0-9\]+ = 5" \
"print find_max1(5,1,2,3,4,5)"
gdb_test_stdio "print find_max1(1,3)" \
"find_max\\(1, 3\\) returns 3\[ \r\n\]+" \
".\[0-9\]+ = 3" \
"print find_max1(1,3)"
gdb_test_stdio "print find_max1(10,1,2,3,4,5,6,7,8,29,0)" \
"find_max\\(10, 1, 2, 3, 4, 5, 6, 7, 8, 29, 0\\) returns 29\[ \r\n\]+" \
".\[0-9\]+ = 29" \
"print find_max1(10,1,2,3,4,5,6,7,8,29,0)"
gdb_test_stdio "print find_max2(3,1,2,3)" \
"find_max\\(3, 1, 2, 3\\) returns 3\[ \r\n\]+" \
".\[0-9\]+ = 3" \
"print find_max2(3,1,2,3)"
if {![target_info exists gdb,skip_float_tests]} {
gdb_test_stdio "print find_max_double(5,1.0,17.0,2.0,3.0,4.0)" \
"find_max\\(.*\\) returns 17\\.000000\[ \r\n\]+" \
".\[0-9\]+ = 17" \
"print find_max_double(5,1.0,17.0,2.0,3.0,4.0)"
}
# Test _Complex type here if supported.
if [support_complex_tests] {
global gdb_prompt
set test "print find_max_float_real(4, fc1, fc2, fc3, fc4)"
gdb_test $test ".*= 4 \\+ 4 \\* I" $test
set test "print find_max_double_real(4, dc1, dc2, dc3, dc4)"
gdb_test $test ".*= 4 \\+ 4 \\* I" $test
set test "print find_max_long_double_real(4, ldc1, ldc2, ldc3, ldc4)"
gdb_test $test ".*= 4 \\+ 4 \\* I" $test
}