aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2022-10-27 16:53:12 +0200
committerTom de Vries <tdevries@suse.de>2022-10-27 16:53:12 +0200
commit6b839dd3deea4de278ebd862edb9c91d335d63e2 (patch)
treebf4b0b767bc9b9b62faad46fbb58e078b2bf2c92 /gdb
parentb253899c901fed0ff56b2746945ffc824e412b81 (diff)
downloadfsf-binutils-gdb-6b839dd3deea4de278ebd862edb9c91d335d63e2.zip
fsf-binutils-gdb-6b839dd3deea4de278ebd862edb9c91d335d63e2.tar.gz
fsf-binutils-gdb-6b839dd3deea4de278ebd862edb9c91d335d63e2.tar.bz2
[gdb/testsuite] Fix silent timeouts in gdb.mi/mi-exec-run.exp with remote host
I noticed that running test-case gdb.mi/mi-exec-run.exp with host board local-remote-host.exp takes about 44 seconds. I found two silent timeouts responsible for this. The first is in mi_gdb_exit, where we have: ... if { [is_remote host] && [board_info host exists fileid] } { send_gdb "999-gdb-exit\n" gdb_expect 10 { -re "y or n" { send_gdb "y\n" exp_continue } -re "Undefined command.*$gdb_prompt $" { send_gdb "quit\n" exp_continue } -re "DOSEXIT code" { } } } ... so in gdb.log we see: ... 999-gdb-exit^M 999^exit^M =thread-exited,id="1",group-id="i1"^M =thread-group-exited,id="i1"^M ... after which expect just waits for the timeout. Fix this by adding a gdb_expect clause to parse the exit: ... -re "\r\n999\\^exit\r\n" { } ... Note that we're not parsing the thread-exited/thread-group-exited messages, because they may not be present: ... $ gdb -i=mi =thread-group-added,id="i1" (gdb) 999-gdb-exit 999^exit $ ... After fixing that, we have: ... (gdb) ^M saw mi error PASS: gdb.mi/mi-exec-run.exp: inferior-tty=separate: mi=separate: \ force-fail=1: run failure detected quit^M &"quit\n"^M ... What seems to be happening is that default_gdb_exit sends a cli interpreter quit command to an mi interpreter, after which again expect just waits for the timeout. Fix this by adding mi_gdb_exit to the end of the test-case, as in many other gdb.mi/*.exp test-cases. After these two fixes, the test-case takes about 4 seconds. Tested on x86_64-linux.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/testsuite/gdb.mi/mi-exec-run.exp2
-rw-r--r--gdb/testsuite/lib/mi-support.exp2
2 files changed, 3 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.mi/mi-exec-run.exp b/gdb/testsuite/gdb.mi/mi-exec-run.exp
index 3b373b2..01f52e2 100644
--- a/gdb/testsuite/gdb.mi/mi-exec-run.exp
+++ b/gdb/testsuite/gdb.mi/mi-exec-run.exp
@@ -180,3 +180,5 @@ foreach_with_prefix inferior-tty {"main" "separate"} {
}
}
}
+
+mi_gdb_exit
diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
index e537d3b..b114576 100644
--- a/gdb/testsuite/lib/mi-support.exp
+++ b/gdb/testsuite/lib/mi-support.exp
@@ -83,7 +83,7 @@ proc mi_uncatched_gdb_exit {} {
exp_continue
}
-re "DOSEXIT code" { }
- default { }
+ -re "\r\n999\\^exit\r\n" { }
}
}