aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2018-04-09 00:18:34 +0100
committerAndrew Burgess <andrew.burgess@embecosm.com>2018-05-04 15:38:18 +0100
commit11859c310cd6b6fd892337a5ee1d36921e6d08d8 (patch)
tree6062e4e6ee68c47033c384e85059f33e5b3956b2 /gdb
parentbf27f0e2c76839af8524e053cca271934150a90c (diff)
downloadgdb-11859c310cd6b6fd892337a5ee1d36921e6d08d8.zip
gdb-11859c310cd6b6fd892337a5ee1d36921e6d08d8.tar.gz
gdb-11859c310cd6b6fd892337a5ee1d36921e6d08d8.tar.bz2
gdb/testsuite: Handle targets with lots of registers
In gdb.base/maint.exp a test calls 'maint print registers'. If the target has lots of registers this may overflow expect's buffers, causing the test to fail. After this commit we process the output line at a time until we get back to the GDB prompt, this should prevent buffer overrun while still testing that the command works as required. gdb/testsuite/ChangeLog: * gdb.base/maint.exp: Process output from 'maint print registers' line at a time.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.base/maint.exp24
2 files changed, 27 insertions, 2 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index a66b8cc..73c4a2c 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2018-05-04 Andrew Burgess <andrew.burgess@embecosm.com>
+ * gdb.base/maint.exp: Process output from 'maint print registers'
+ line at a time.
+
+2018-05-04 Andrew Burgess <andrew.burgess@embecosm.com>
+
* lib/mi-support.exp (mi_run_cmd_full): Fix regexp and add a
timeout.
diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp
index 9322108..f576cb3 100644
--- a/gdb/testsuite/gdb.base/maint.exp
+++ b/gdb/testsuite/gdb.base/maint.exp
@@ -62,8 +62,28 @@ gdb_test_no_output "set height 0"
gdb_file_cmd ${binfile}
# Test for a regression where this command would internal-error if the
-# program wasn't running.
-gdb_test "maint print registers" "Name.*Nr.*Rel.*Offset.*Size.*Type.*"
+# program wasn't running. If there's a lot of registers then this
+# might overflow expect's buffers, so process the output line at a
+# time.
+set saw_registers 0
+set saw_headers 0
+set test "maint print registers"
+gdb_test_multiple $test $test {
+ -re "\[^\r\n\]+Name\[^\r\n\]+Nr\[^\r\n\]+Rel\[^\r\n\]+Offset\[^\r\n\]+Size\[^\r\n\]+Type\[^\r\n\]+\[\r\n\]+" {
+ set saw_headers 1
+ exp_continue
+ }
+ -re "^\[^\r\n\]+\[0-9\]+\[^\r\n\]+\[0-9\]+\[^\r\n\]+\[0-9\]+\[^\r\n\]+\[0-9\]+\[^\r\n\]+\[\r\n\]+" {
+ set saw_registers 1
+ exp_continue
+ }
+ -re "^\\*\[0-9\]+\[^\r\n\]+\[\r\n\]+" {
+ exp_continue
+ }
+ -re "$gdb_prompt $" {
+ gdb_assert { $saw_registers && $saw_headers } $test
+ }
+}
# Test "mt expand-symtabs" here as it's easier to verify before we
# run the program.