diff options
author | Pedro Alves <palves@redhat.com> | 2012-01-27 13:02:22 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2012-01-27 13:02:22 +0000 |
commit | 048fe15a05cfc41215623ec67483c1dc56c8419f (patch) | |
tree | 675117f7919ee2e24f90db5d28234648be3030aa /gdb/testsuite/boards | |
parent | 4220b2f845b8e4474064c52c3be6804eecd6ab25 (diff) | |
download | gdb-048fe15a05cfc41215623ec67483c1dc56c8419f.zip gdb-048fe15a05cfc41215623ec67483c1dc56c8419f.tar.gz gdb-048fe15a05cfc41215623ec67483c1dc56c8419f.tar.bz2 |
2012-01-27 Pedro Alves <palves@redhat.com>
* config/extended-gdbserver.exp: New file.
* lib/gdbserver-support.exp (gdbserver_start_extended): Extend
comment.
(gdbserver_start_multi, mi_gdbserver_start_multi): New.
* boards/native-extended-gdbserver.exp: New file.
Diffstat (limited to 'gdb/testsuite/boards')
-rw-r--r-- | gdb/testsuite/boards/native-extended-gdbserver.exp | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/gdb/testsuite/boards/native-extended-gdbserver.exp b/gdb/testsuite/boards/native-extended-gdbserver.exp new file mode 100644 index 0000000..e7d3838 --- /dev/null +++ b/gdb/testsuite/boards/native-extended-gdbserver.exp @@ -0,0 +1,150 @@ +# Copyright 2011-2012 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 is a dejagnu "board file" and is used to run the testsuite +# natively with gdbserver, in extended-remote mode. +# +# To use this file: +# bash$ touch ${my_dejagnu_dir}/my-dejagnu.exp +# bash$ export DEJAGNU=${my_dejagnu_dir}/my-dejagnu.exp +# bash$ mkdir ${my_dejagnu_dir}/boards +# bash$ cp ${src_dir}/gdb/testsuite/boards/native-extended-gdbserver.exp \ +# ${my_dejagnu_dir}/boards +# bash$ cd ${build_dir}/gdb +# bash$ make check RUNTESTFLAGS="--target_board=native-extended-gdbserver" + +load_generic_config "extended-gdbserver" + +# By default, dejagnu makes the board remote unless the board name +# matches localhost. Force it to be NOT remote. +global board +global board_info +set board_info($board,isremote) 0 + +process_multilib_options "" + +# The default compiler for this target. +set_board_info compiler "[find_gcc]" + +# Can't do input (or output) in the current gdbserver. +set_board_info gdb,noinferiorio 1 + +# gdbserver does not intercept target file operations and perform them +# on the host. +set_board_info gdb,nofileio 1 + +set_board_info sockethost "localhost:" + +# We will be using the extended GDB remote protocol. +set_board_info gdb_protocol "extended-remote" + +# Test the copy of gdbserver in the build directory. +set_board_info gdb_server_prog "../gdbserver/gdbserver" + +send_user "configuring for gdbserver local testing (extended-remote)\n"; + +# We must load this explicitly here, and rename the procedures we want +# to override. If we didn't do this, given that mi-support.exp is +# loaded later in the test files, the procedures loaded then would +# override our definitions. +load_lib mi-support.exp + +# Overriden in order to start a "gdbserver --multi" instance whenever +# GDB is started. Note nothing is needed for gdb_exit, since +# gdbserver is started with --once, causing it to exit once GDB +# disconnects. +proc gdb_start { } { + # Spawn GDB. + default_gdb_start + + # And then GDBserver, ready for extended-remote mode. + gdbserver_start_multi + + return 0 +} + +# Likewise, for MI. +# +if { [info procs extended_gdbserver_mi_gdb_start] == "" } { + rename mi_gdb_start extended_gdbserver_mi_gdb_start +} +proc mi_gdb_start { args } { + # Spawn GDB. + set res [extended_gdbserver_mi_gdb_start $args] + if { $res } { + return $res + } + + # And then GDBserver, ready for extended-remote mode. + mi_gdbserver_start_multi + return 0 +} + +# Overriden in order to set the remote exec-file whenever a file is +# loaded to gdb. +# +proc gdb_load { arg } { + global gdb_prompt + + if { $arg != "" } { + if [gdb_file_cmd $arg] then { return -1 } + } + + send_gdb "set remote exec-file $arg\n" + gdb_expect { + -re "$gdb_prompt $" {} + timeout { + perror "couldn't set the remote exec-file (timed out)." + return -1 + } + } + + return 0 +} + +# Likewise, for MI. +# +if { [info procs extended_gdbserver_mi_gdb_load] == "" } { + rename mi_gdb_load extended_gdbserver_mi_gdb_load +} +proc mi_gdb_load { arg } { + global mi_gdb_prompt + + set res [extended_gdbserver_mi_gdb_load $arg] + if { $res } then { return -1 } + + send_gdb "100-gdb-set remote exec-file $arg\n" + gdb_expect 10 { + -re ".*100-gdb-set remote exec-file $arg\r\n100\\\^done\r\n$mi_gdb_prompt$" { + verbose "set the remote exec-file to $arg." + } + timeout { + perror "couldn't set the remote exec-file (timed out)." + } + } + + return 0 +} + +proc ${board}_download { board host dest } { + return $host +} + +proc ${board}_file { dest op args } { + if { $op == "delete" } { + return 0 + } + return [eval [list standard_file $dest $op] $args] +} |