diff options
author | Maciej W. Rozycki <macro@codesourcery.com> | 2014-07-12 01:22:25 +0100 |
---|---|---|
committer | Maciej W. Rozycki <macro@codesourcery.com> | 2014-07-12 01:39:40 +0100 |
commit | a25eb0280d6ae5a791e0e613f42e3197c82d3030 (patch) | |
tree | 7816d90bd5741ce6edbf90953f16833ba7920249 /gdb | |
parent | 2836d43109bdad96f14b405b8996011b5f8879a9 (diff) | |
download | gdb-a25eb0280d6ae5a791e0e613f42e3197c82d3030.zip gdb-a25eb0280d6ae5a791e0e613f42e3197c82d3030.tar.gz gdb-a25eb0280d6ae5a791e0e613f42e3197c82d3030.tar.bz2 |
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'.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/testsuite/README | 10 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb-utils.exp | 30 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 9 | ||||
-rw-r--r-- | gdb/testsuite/lib/mi-support.exp | 6 |
5 files changed, 59 insertions, 6 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 253eeeb..0652230 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -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. diff --git a/gdb/testsuite/README b/gdb/testsuite/README index eadab57..466993d 100644 --- a/gdb/testsuite/README +++ b/gdb/testsuite/README @@ -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 diff --git a/gdb/testsuite/lib/gdb-utils.exp b/gdb/testsuite/lib/gdb-utils.exp new file mode 100644 index 0000000..7e03cbf --- /dev/null +++ b/gdb/testsuite/lib/gdb-utils.exp @@ -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 +} diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 30463a9..3388e1f 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -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 { diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp index f1b5749..204f1e8 100644 --- a/gdb/testsuite/lib/mi-support.exp +++ b/gdb/testsuite/lib/mi-support.exp @@ -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 { |