X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ftestsuite%2Fconfig%2Fslite.exp;h=c0278e8d7d8829e34b7644be7d1d7c968b49a796;hb=7b6bb8daaceb9ecf3f42dea57ae82733d6a3b2f6;hp=771a9e1dbb7038154be8fc954a010bb2a0bc3045;hpb=0e865b395050d2d644ab7b51b18d5254ad3c33dd;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/testsuite/config/slite.exp b/gdb/testsuite/config/slite.exp index 771a9e1dbb..c0278e8d7d 100644 --- a/gdb/testsuite/config/slite.exp +++ b/gdb/testsuite/config/slite.exp @@ -1,21 +1,18 @@ -# Copyright (C) 1993 Free Software Foundation, Inc. +# Copyright 1993, 1997, 1998, 2007, 2008, 2009, 2010, 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 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. */ - -# Please email any bugs, comments, and/or additions to this file to: -# DejaGnu@cygnus.com +# along with this program. If not, see . # This file was written by Ian Lance Taylor . @@ -32,7 +29,7 @@ load_lib remote.exp load_lib gdb.exp -set prompt "\\(gdb\\)" +set gdb_prompt "\\(gdb\\)" # # gdb_load -- load a file into the GDB. @@ -43,28 +40,14 @@ proc gdb_load { arg } { global verbose global loadpath global loadfile - global prompt + global gdb_prompt global GDB global expect_out - global gdb_spawn_id set loadfile [file tail $arg] set loadpath [file dirname $arg] - send_gdb "file $arg\n" - expect { - -i $gdb_spawn_id -re "A program is being debugged already..*Kill it.*y or n. $" { - send_gdb "y\n" - exp_continue - } - -i $gdb_spawn_id -re "Load new symbol table.*y or n. $" { - send_gdb "y\n" - exp_continue - } - -i $gdb_spawn_id -re "Reading symbols from.*done..*$prompt $" {} - -i $gdb_spawn_id -re "$prompt $" { perror "GDB couldn't read file" } - -i $gdb_spawn_id timeout { perror "(timeout) read symbol file" ; return -1 } - } + gdb_file_cmd $arg if [target_info exists gdb_protocol] { set protocol [target_info gdb_protocol]; @@ -74,25 +57,38 @@ proc gdb_load { arg } { if [target_info exists serial] { set targetname [target_info serial]; - send_gdb "target $protocol [target_info serial]\n"; + set command "target $protocol [target_info serial]\n"; } else { if ![target_info exists netport] { perror "Need either netport or gdb_serial entry for [target_info name]."; return -1; } set targetname [target_info netport]; - send_gdb "target $protocol udp [target_info netport]\n"; + set command "target $protocol udp [target_info netport]\n"; } set timeout 60 verbose "Timeout is now $timeout seconds" 2 - expect { - -i $gdb_spawn_id -re "Remote target.*$prompt $" { } - -i $gdb_spawn_id -re ".*SPARClite appears to be alive.*$prompt $" { + set try_count 0; + send_gdb $command; + gdb_expect { + -re "Unknown response.*resetting the board.|remote timeout" { + incr try_count; + if { $try_count > 3 } { + set try_count 0; + reboot_target; + sleep 5; + } + sleep 1; + send_gdb $command; + exp_continue; + } + -re "Remote target.*$gdb_prompt $" { } + -re ".*SPARClite appears to be alive.*$gdb_prompt $" { if $verbose>1 then { send_user "Set target to $targetname\n" } } - -i $gdb_spawn_id timeout { + timeout { perror "Couldn't set SLITE target." set timeout 10 verbose "Timeout is now $timeout seconds" 2 @@ -106,38 +102,51 @@ proc gdb_load { arg } { set offset ""; } if { 1 } { + if [is_remote host] { + set arg [remote_download host $arg]; + if { $arg == "" } { + error "download failed" + return -1; + } + } send_gdb "load $arg $offset\n" verbose "Loading $arg into $GDB" 2 set timeout 2400 verbose "Timeout is now $timeout seconds" 2 - expect { - -i $gdb_spawn_id -re "Loading.*$prompt $" { + gdb_expect { + -re "Loading.*$gdb_prompt $" { verbose "Loaded $arg into $GDB" 1 set timeout 30 verbose "Timeout is now $timeout seconds" 2 } - -i $gdb_spawn_id -re "$prompt $" { + -re "$gdb_prompt $" { if $verbose>1 then { perror "GDB couldn't load." } } - -i $gdb_spawn_id timeout { + timeout { if $verbose>1 then { perror "Timed out trying to load $arg." } } } } - set timeout 10 - verbose "Timeout is now $timeout seconds, doing monitor run" 2 - send_gdb "monitor run\n"; - sleep 2; - send_gdb ""; - expect { - -i $gdb_spawn_id -re ".*$prompt $" { verbose "Run command succeded" } - -i $gdb_spawn_id default { - perror "error sending monitor run command"; + # Some SPARClite boards automagically do a run after the program is + # loaded. + if [target_info exists need_monitor_run] { + set timeout 10 + verbose "Timeout is now $timeout seconds, doing monitor run" 2 + send_gdb "monitor run\n"; + sleep 2; + send_gdb ""; + gdb_expect { + -re ".*$gdb_prompt $" { verbose "Run command succeded" } + default { + perror "error sending monitor run command"; + } } + } else { + sleep 2; } if [target_info exists gdb_serial] { @@ -148,15 +157,15 @@ proc gdb_load { arg } { send_gdb "target remote $serial\n" set timeout 60 verbose "Timeout is now $timeout seconds" 2 - expect { - -i $gdb_spawn_id -re ".*Kill it?.*y or n.*" { + gdb_expect { + -re ".*Kill it?.*y or n.*" { send_gdb "y\n"; exp_continue } - -i $gdb_spawn_id -re ".*$prompt $" { + -re ".*$gdb_prompt $" { verbose "Set remote target to [target_info serial]" 2 } - -i $gdb_spawn_id timeout { + timeout { perror "Couldn't set remote target." set timeout 10 verbose "Timeout is now $timeout seconds" 2