# Test Framework Driver for GDB driving a ROM monitor (via monitor.c).
-# Copyright 1995, 1997 Free Software Foundation, Inc.
+# Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2007, 2008
+# 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
+# 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, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
load_lib gdb.exp
+# puts "***** DID USE MONITOR ******"
+
+#
+# gdb_target_cmd
+# Send gdb the "target" command
+#
+proc gdb_target_cmd { targetname serialport } {
+ global gdb_prompt
+
+ for {set i 1} {$i <= 3} {incr i} {
+ send_gdb "target $targetname $serialport\n"
+ gdb_expect 60 {
+ -re "A program is being debugged already.*ill it.*y or n. $" {
+ send_gdb "y\n";
+ exp_continue;
+ }
+ -re "Couldn't establish connection to remote.*$gdb_prompt" {
+ verbose "Connection failed";
+ }
+ -re "Remote MIPS debugging.*$gdb_prompt" {
+ verbose "Set target to $targetname";
+ return 0;
+ }
+ -re "Remote debugging using .*$serialport.*$gdb_prompt" {
+ verbose "Set target to $targetname";
+ return 0;
+ }
+ -re "Remote target $targetname connected to.*$gdb_prompt" {
+ verbose "Set target to $targetname";
+ return 0;
+ }
+ -re "Connected to.*$gdb_prompt" {
+ verbose "Set target to $targetname";
+ return 0;
+ }
+ -re "Ending remote.*$gdb_prompt" { }
+ -re "Connection refused.*$gdb_prompt" {
+ verbose "Connection refused by remote target. Pausing, and trying again."
+ sleep 30
+ continue
+ }
+ -re "Timeout reading from remote system.*$gdb_prompt" {
+ verbose "Got timeout error from gdb.";
+ }
+ timeout {
+ send_gdb "\ 3";
+ break
+ }
+ }
+ }
+ return 1
+}
+
+
#
# gdb_target_monitor
if [target_info exists baud] {
gdb_test "set remotebaud [target_info baud]" "" ""
}
+ if [target_info exists binarydownload] {
+ gdb_test "set remotebinarydownload [target_info binarydownload]" "" ""
+ }
+ if { [ target_info exists disable_x_packet ] } {
+ gdb_test "set remote X-packet disable" ""
+ }
+ if { [ target_info exists disable_z_packet ] } {
+ gdb_test "set remote Z-packet disable" ""
+ }
if [target_info exists gdb_serial] {
set serialport "[target_info gdb_serial]";
} elseif [target_info exists netport] {
for {set j 1} {$j <= 2} {incr j} {
if [gdb_file_cmd $exec_file] { return -1; }
- for {set i 1} {$i <= 3} {incr i} {
- send_gdb "target $targetname $serialport\n"
- gdb_expect 60 {
- -re "A program is being debugged already.*ill it.*y or n. $" {
- send_gdb "y\n";
- exp_continue;
- }
- -re "Couldn't establish connection to remote.*$gdb_prompt" {
- verbose "Connection failed";
- }
- -re "Remote MIPS debugging.*$gdb_prompt" {
- verbose "Set target to $targetname";
- return 0;
- }
- -re "Remote debugging using .*$serialport.*$gdb_prompt" {
- verbose "Set target to $targetname";
- return 0;
- }
- -re "Remote target $targetname connected to.*$gdb_prompt" {
- verbose "Set target to $targetname";
- return 0;
- }
- -re "Connected to.*$gdb_prompt" {
- verbose "Set target to $targetname";
- return 0;
- }
- -re "Ending remote.*$gdb_prompt" { }
- -re "Connection refused.*$gdb_prompt" {
- verbose "Connection refused by remote target. Pausing, and trying again."
- sleep 30
- continue
- }
- -re "Timeout reading from remote system.*$gdb_prompt" {
- verbose "Got timeout error from gdb.";
- }
- timeout {
- send_gdb "\ 3";
- break
- }
- }
- }
+ if ![gdb_target_cmd $targetname $serialport] { return 0; }
gdb_target_exec;
} else {
set command "load $farg\n";
}
+ if [target_info exists gdb_load_timeout] {
+ set loadtimeout [target_info gdb_load_timeout]
+ } else {
+ set loadtimeout 1600
+ }
+
send_gdb $command;
- gdb_expect 1600 {
+ gdb_expect $loadtimeout {
-re "\[Ff\]ailed.*$gdb_prompt $" {
verbose "load failed";
}