diff options
Diffstat (limited to 'gdb/testsuite/config/vx.exp')
-rw-r--r-- | gdb/testsuite/config/vx.exp | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/gdb/testsuite/config/vx.exp b/gdb/testsuite/config/vx.exp new file mode 100644 index 0000000..c2b2632 --- /dev/null +++ b/gdb/testsuite/config/vx.exp @@ -0,0 +1,151 @@ +# Copyright (C) 1988, 1990, 1991, 1992, 1995 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +# Please email any bugs, comments, and/or additions to this file to: +# DejaGnu@cygnus.com + +# This file was written by Rob Savoye. (rob@cygnus.com) + +# +# load support libraries +# +load_lib remote.exp +load_lib gdb.exp +load_lib vxworks.exp + +set shell_prompt "->" +set prompt "\\(vxgdb\\)" + +# +# gdb_version -- extract and print the version number of gcc +# +proc gdb_version {} { + default_gdb_version +} + +# +# gdb_load -- load a file into the debugger. +# We have to stop and start gdb each time we do this, because when +# vxgdb loads two files in a row, the symbols in the first file loaded +# take precedence. Returns -1 on error, else 0. +# +proc gdb_load { arg } { + set result 0 + + if { [vxworks_ld target $arg] != 0 } { + perror "Couldn't load $arg" + return -1 + } + + return [gdb_file_cmd $arg] +} + +# +# gdb_start -- start gdb running +# +proc gdb_start { } { + global prompt + global verbose + global connectmode + global reboot + + # get a connection to the board + set shell_id [remote_open target] + if { $shell_id < 0 } then { + perror "Couldn't connect to target." + return -1 + } + verbose "Spawn id for remote shell is $shell_id" + + # reboot vxworks to get a clean start + if $reboot then { + verbose "Rebooting VxWorks, Please wait...\n" + + send -i $shell_id "\030" + set timeout 120 + verbose "Timeout is now $timeout seconds" 2 + expect { + -i $shell_id -re "Connection closed.*$" { + verbose "\nVxWorks has closed the shell" + } + -i $shell_id eof { + perror "(eof) never disconnected from VxWorks shell." + return -1 + } + -i $shell_id timeout { + perror "(timeout) never disconnected from VxWorks shell." + return -1 + } + } + catch "close -i $shell_id" tmp + wait -i $shell_id + } + set timeout 10 + verbose "Timeout is now $timeout seconds" 2 + + catch "spawn_vxgdb" +} + +proc spawn_vxgdb { } { + global prompt + global verbose + + default_gdb_start + + # set the default arguments to "main", so that "run" with no + # arguments will work correctly. + send "set args main\n" + expect -re ".*$prompt $" {} + + verbose "Setting up target, Please wait..." + # set targets hostname + send "target vxworks [target_info netport]\n" + set timeout 60 + verbose "Timeout is now $timeout seconds" 2 + expect { + -re "Done\..*$prompt $" { + verbose "Set target to [target_info netport]" 1 + } + -re "net_connect: RPC: Program not registered.*$" { + perror "Couldn't set GDB to target [target_info netport]." + exit 1 + } + timeout { + perror "Couldn't set target for vxworks." + set timeout 10 + verbose "Timeout is now $timeout seconds" 2 + return -1 + } + } + set timeout 10 + verbose "Timeout is now $timeout seconds" 2 +} + +proc gdb_exit { } { + remote_close target; + catch default_gdb_exit +} + +#expect_after { +# "<return>" { send "\n"; perror "Window too small." } +# -re "\(y or n\) " { send "n\n"; perror "Got interactive prompt." } +# buffer_full { perror "internal buffer is full." } +# eof { perror "eof -- pty is hosed." } +# timeout { perror "timeout." } +# "virtual memory exhausted" { perror "virtual memory exhausted." } +# "Undefined command" { perror "send string probably wrong." } +#} + |