aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@codesourcery.com>2014-07-12 01:22:25 +0100
committerMaciej W. Rozycki <macro@codesourcery.com>2014-07-12 01:39:40 +0100
commita25eb0280d6ae5a791e0e613f42e3197c82d3030 (patch)
tree7816d90bd5741ce6edbf90953f16833ba7920249 /gdb
parent2836d43109bdad96f14b405b8996011b5f8879a9 (diff)
downloadgdb-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/ChangeLog10
-rw-r--r--gdb/testsuite/README10
-rw-r--r--gdb/testsuite/lib/gdb-utils.exp30
-rw-r--r--gdb/testsuite/lib/gdb.exp9
-rw-r--r--gdb/testsuite/lib/mi-support.exp6
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 {