--- /dev/null
+# Test Framework Driver for GDB driving a builtin simulator
+# Copyright 1994 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+load_lib gdb.exp
+
+#
+# gdb_version -- extract and print the version number of gdb
+#
+proc gdb_version {} {
+ default_gdb_version
+}
+
+#
+# gdb_target_sim
+# Set gdb to target the simulator
+#
+proc gdb_target_sim { } {
+ global targetname
+ global prompt
+ global verbose
+ global exit_status
+
+ # force the height to "unlimited", so no pagers get used
+ send "set height 0\n"
+ expect -re ".*$prompt $" {}
+ # force the width to "unlimited", so no wraparound occurs
+ send "set width 0\n"
+ expect -re ".*$prompt $" {}
+
+ send "target sim\n"
+ set timeout 60
+ expect {
+ -re "Connected to the simulator.*$prompt $" {
+ verbose "Set target to sim"
+ }
+ timeout {
+ perror "Couldn't set target for simulator."
+ cleanup
+ exit $exit_status
+ }
+ }
+ set timeout 10
+}
+
+#
+# gdb_load -- load a file into the debugger.
+# return a -1 if anything goes wrong.
+#
+proc gdb_load { arg } {
+ global verbose
+ global loadpath
+ global loadfile
+ global GDB
+ global prompt
+
+ if [gdb_file_cmd $arg] then { return -1 }
+
+ gdb_target_sim
+
+ send "load\n"
+ set timeout 2400
+ expect {
+ -re ".*$prompt $" {
+ if $verbose>1 then {
+ send_user "Loaded $arg into $GDB\n"
+ }
+ set timeout 30
+ return 1
+ }
+ -re "$prompt $" {
+ if $verbose>1 then {
+ perror "GDB couldn't load."
+ }
+ }
+ timeout {
+ if $verbose>1 then {
+ perror "Timed out trying to load $arg."
+ }
+ }
+ }
+}
+
+#
+# gdb_start -- start GDB running.
+#
+proc gdb_start { } {
+ default_gdb_start
+ verbose "Setting up target, Please wait..."
+ gdb_target_sim
+}
+
+#
+# gdb_exit -- exit gdb
+#
+proc gdb_exit { } {
+ catch default_gdb_exit
+}
+
+gdb_start
+
+# make sure gdb has actually started, otherwise if the first test
+# timesout, DejaGnu crashes
+send "\n"
+expect {
+ -re "$prompt"
+ }