e22f8b7c8c
Switch the license of all .f and .f90 files to GPLv3. Switch the license of all .s and .S files to GPLv3.
127 lines
3.2 KiB
Text
127 lines
3.2 KiB
Text
# Copyright 1988, 1990, 1991, 1992, 1995, 1997, 2007
|
|
# 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 Rob Savoye. (rob@cygnus.com)
|
|
|
|
#
|
|
# load support libraries
|
|
#
|
|
load_lib remote.exp
|
|
load_lib gdb.exp
|
|
|
|
set shell_prompt "->"
|
|
set gdb_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 { [remote_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 gdb_prompt
|
|
global verbose
|
|
global connectmode
|
|
global reboot
|
|
|
|
# get a connection to the board
|
|
for { set x 0; } { $x < 3 } { incr x } {
|
|
set shell_id [remote_open target]
|
|
if { $shell_id > 0 } {
|
|
verbose "Spawn id for remote shell is $shell_id"
|
|
|
|
set timeout 10
|
|
verbose "Timeout is now $timeout seconds" 2
|
|
|
|
set state [spawn_vxgdb];
|
|
if { $state == "pass" } {
|
|
return 0;
|
|
}
|
|
if { $state == "fail" } {
|
|
return -1;
|
|
}
|
|
}
|
|
remote_reboot target;
|
|
}
|
|
}
|
|
|
|
proc spawn_vxgdb { } {
|
|
global gdb_prompt
|
|
|
|
default_gdb_start
|
|
|
|
# set the default arguments to "main", so that "run" with no
|
|
# arguments will work correctly.
|
|
send_gdb "set args main\n"
|
|
gdb_expect -re ".*$gdb_prompt $" {}
|
|
|
|
verbose "Setting up target, Please wait..."
|
|
# set targets hostname
|
|
send_gdb "target vxworks [target_info hostname]\n"
|
|
set timeout 60
|
|
verbose "Timeout is now $timeout seconds" 2
|
|
gdb_expect {
|
|
-re "Done\..*$gdb_prompt $" {
|
|
verbose "Set target to [target_info hostname]" 1
|
|
set timeout 10;
|
|
return "pass";
|
|
}
|
|
-re "net_connect: RPC: (Program not registered|.*Timed out).*$" {
|
|
warning "Couldn't set GDB to target [target_info netport]."
|
|
}
|
|
timeout {
|
|
warning "Couldn't set target for vxworks."
|
|
}
|
|
}
|
|
return "retry";
|
|
}
|
|
|
|
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." }
|
|
#}
|
|
|