gdb/testsuite: Add a way to send multiple init commands
Right now we provide a board info entry, `gdb_init_command', that allows one to send a single command to GDB before the program to be debugged is started. This is useful e.g. for slow remote targets to change the default "remotetimeout" setting. Occasionally I found a need to send multiple commands instead, however this cannot be achieved with `gdb_init_command'. This change therefore extends the mechanism by adding a TCL list of GDB commands to send, via a board info entry called `gdb_init_commands'. There is no limit as to the number of commands put there. The old `gdb_init_command' mechanism remains supported for compatibility with existing people's environments. * lib/gdb-utils.exp: New file. * lib/gdb.exp (gdb_run_cmd): Call gdb_init_commands, replacing inline `gdb_init_command' processing. (gdb_start_cmd): Likewise. * lib/mi-support.exp (mi_run_cmd): Likewise. * README: Document `gdb_init_command' and `gdb_init_commands'.
This commit is contained in:
parent
2836d43109
commit
a25eb0280d
5 changed files with 59 additions and 6 deletions
|
@ -1,3 +1,13 @@
|
|||
2014-07-12 Maciej W. Rozycki <macro@mips.com>
|
||||
Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* lib/gdb-utils.exp: New file.
|
||||
* lib/gdb.exp (gdb_run_cmd): Call gdb_init_commands, replacing
|
||||
inline `gdb_init_command' processing.
|
||||
(gdb_start_cmd): Likewise.
|
||||
* lib/mi-support.exp (mi_run_cmd): Likewise.
|
||||
* README: Document `gdb_init_command' and `gdb_init_commands'.
|
||||
|
||||
2014-07-11 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Fix false FAIL running under a very long directory name.
|
||||
|
|
|
@ -271,6 +271,16 @@ gdb,use_precord
|
|||
|
||||
The board supports process record.
|
||||
|
||||
gdb_init_command
|
||||
gdb_init_commands
|
||||
|
||||
Commands to send to GDB every time a program is about to be run. The
|
||||
first of these settings defines a single command as a string. The
|
||||
second defines a TCL list of commands being a string each. The commands
|
||||
are sent one by one in a sequence, first from `gdb_init_command', if any,
|
||||
followed by individual commands from `gdb_init_command', if any, in this
|
||||
list's order.
|
||||
|
||||
gdb_server_prog
|
||||
|
||||
The location of GDBserver. If GDBserver somewhere other than its
|
||||
|
|
30
gdb/testsuite/lib/gdb-utils.exp
Normal file
30
gdb/testsuite/lib/gdb-utils.exp
Normal file
|
@ -0,0 +1,30 @@
|
|||
# Copyright 2014 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/>.
|
||||
|
||||
# Utility procedures, shared between test suite domains.
|
||||
|
||||
# A helper procedure to retrieve commands to send to GDB before a program
|
||||
# is started.
|
||||
|
||||
proc gdb_init_commands {} {
|
||||
set commands ""
|
||||
if [target_info exists gdb_init_command] {
|
||||
lappend commands [target_info gdb_init_command]
|
||||
}
|
||||
if [target_info exists gdb_init_commands] {
|
||||
set commands [concat $commands [target_info gdb_init_commands]]
|
||||
}
|
||||
return $commands
|
||||
}
|
|
@ -27,6 +27,7 @@ if {$tool == ""} {
|
|||
|
||||
load_lib libgloss.exp
|
||||
load_lib cache.exp
|
||||
load_lib gdb-utils.exp
|
||||
|
||||
global GDB
|
||||
|
||||
|
@ -209,8 +210,8 @@ proc delete_breakpoints {} {
|
|||
proc gdb_run_cmd {args} {
|
||||
global gdb_prompt use_gdb_stub
|
||||
|
||||
if [target_info exists gdb_init_command] {
|
||||
send_gdb "[target_info gdb_init_command]\n"
|
||||
foreach command [gdb_init_commands] {
|
||||
send_gdb "$command\n"
|
||||
gdb_expect 30 {
|
||||
-re "$gdb_prompt $" { }
|
||||
default {
|
||||
|
@ -311,8 +312,8 @@ proc gdb_run_cmd {args} {
|
|||
proc gdb_start_cmd {args} {
|
||||
global gdb_prompt use_gdb_stub
|
||||
|
||||
if [target_info exists gdb_init_command] {
|
||||
send_gdb "[target_info gdb_init_command]\n"
|
||||
foreach command [gdb_init_commands] {
|
||||
send_gdb "$command\n"
|
||||
gdb_expect 30 {
|
||||
-re "$gdb_prompt $" { }
|
||||
default {
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
|
||||
# Test setup routines that work with the MI interpreter.
|
||||
|
||||
load_lib gdb-utils.exp
|
||||
|
||||
# The variable mi_gdb_prompt is a regexp which matches the gdb mi prompt.
|
||||
# Set it if it is not already set.
|
||||
global mi_gdb_prompt
|
||||
|
@ -859,8 +861,8 @@ proc mi_run_cmd_full {use_mi_command args} {
|
|||
set run_match ""
|
||||
}
|
||||
|
||||
if [target_info exists gdb_init_command] {
|
||||
send_gdb "[target_info gdb_init_command]\n"
|
||||
foreach command [gdb_init_commands] {
|
||||
send_gdb "$command\n"
|
||||
gdb_expect 30 {
|
||||
-re "$mi_gdb_prompt$" { }
|
||||
default {
|
||||
|
|
Loading…
Reference in a new issue