diff options
Diffstat (limited to 'gdb/testsuite/lib/prompt.exp')
-rw-r--r-- | gdb/testsuite/lib/prompt.exp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/gdb/testsuite/lib/prompt.exp b/gdb/testsuite/lib/prompt.exp new file mode 100644 index 0000000..727bbb3 --- /dev/null +++ b/gdb/testsuite/lib/prompt.exp @@ -0,0 +1,92 @@ +# Copyright (C) 2011 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/>. + +# Specialized subroutines for launching gdb and testing the very first prompt. + + +# +# start gdb -- start gdb running, prompt procedure +# this procedure differs from the default in that you must pass 'set height 0', +# and 'set width 0', yourself in GDBFLAGS, and it has a gdb_prompt_fail variable, +# +# uses pass if it sees $gdb_prompt, and fail if it sees $gdb_prompt_fail. +# +proc default_prompt_gdb_start { } { + global verbose + global GDB + global INTERNAL_GDBFLAGS GDBFLAGS + global gdb_prompt + global gdb_prompt_fail + global timeout + global gdb_spawn_id; + + gdb_stop_suppressing_tests; + + verbose "Spawning $GDB $INTERNAL_GDBFLAGS $GDBFLAGS" + + if [info exists gdb_spawn_id] { + return 0; + } + + if ![is_remote host] { + if { [which $GDB] == 0 } then { + perror "$GDB does not exist." + exit 1 + } + } + set res [remote_spawn host "$GDB $INTERNAL_GDBFLAGS $GDBFLAGS [host_info gdb_opts]"]; + if { $res < 0 || $res == "" } { + perror "Spawning $GDB failed." + return 1; + } + gdb_expect 360 { + -re ".*$gdb_prompt_fail.*$gdb_prompt_fail.*" { + fail "double prompted fail prompt" + } + -re ".*$gdb_prompt.*$gdb_prompt.*" { + fail "double prompted" + } + -re "\[\r\n\]$gdb_prompt_fail $" { + fail "GDB initializing first prompt" + } + -re "\[\r\n\]$gdb_prompt $" { + pass "GDB initializing first prompt" + } + -re "$gdb_prompt $" { + perror "GDB never initialized." + return -1 + } + -re "$gdb_prompt_fail $" { + perror "GDB never initialized." + return -1 + } + timeout { + perror "(timeout) GDB never initialized after 10 seconds." + remote_close host; + return -1 + } + } + set gdb_spawn_id -1; + return 0; +} + +# +# Overridable function. You can override this function in your +# baseboard file. +# +proc prompt_gdb_start { } { + default_prompt_gdb_start +} + |