diff options
Diffstat (limited to 'gdb/testsuite/gdb.base')
-rw-r--r-- | gdb/testsuite/gdb.base/execution-termios.c | 35 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/execution-termios.exp | 60 |
2 files changed, 95 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/execution-termios.c b/gdb/testsuite/gdb.base/execution-termios.c new file mode 100644 index 0000000..adeb1f1 --- /dev/null +++ b/gdb/testsuite/gdb.base/execution-termios.c @@ -0,0 +1,35 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2014 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/>. */ + +#include <stdio.h> +#include <termios.h> +#include <unistd.h> + +int +func (void) +{ + puts ("hello world\n"); + tcdrain (fileno (stdout)); + return 1; +} + +int +main (void) +{ + func (); + return 0; /* set break here */ +} diff --git a/gdb/testsuite/gdb.base/execution-termios.exp b/gdb/testsuite/gdb.base/execution-termios.exp new file mode 100644 index 0000000..cbdcce6 --- /dev/null +++ b/gdb/testsuite/gdb.base/execution-termios.exp @@ -0,0 +1,60 @@ +# Copyright 2014 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/>. */ + +standard_testfile + +if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} { + return -1 +} + +# Run to main, and execute BODY in the caller's context, with PREFIX +# set as test message prefix. + +proc test { prefix body } { + with_test_prefix $prefix { + if ![runto_main] { + fail "Can't run to main" + return 0 + } + uplevel 1 $body + } +} + +# If GDB forgets to put the inferior's terminal settings into effect +# while running any of these commands, the program will get a SIGTTOU. + +test "next" { + gdb_test "next" "set break here.*" "termios ok" +} + +test "infcall" { + if ![target_info exists gdb,cannot_call_functions] { + gdb_test "print func ()" " = 1" "termios ok" + } else { + unsupported "cannot call functions" + } +} + +test "continue" { + set lineno [gdb_get_line_number "set break here"] + gdb_test "break $lineno" + gdb_test "continue" ".*set break here.*" "termios ok" +} + +test "finish" { + gdb_test "break func" "func.*" + gdb_test "continue" "func .*" + gdb_test "finish" " = 1" "termios ok" +} |