summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@ericsson.com>2017-08-12 10:33:00 +0200
committerSimon Marchi <simon.marchi@ericsson.com>2017-08-12 10:33:00 +0200
commitc2c2dd9f09130fcdfc6bee999705206644f1f17f (patch)
treec92ff934e45bcb664a7196dc6af81aedbc68a727
parent483767a333faed7ac25783459c0c9b0be4800932 (diff)
downloadbinutils-gdb-c2c2dd9f09130fcdfc6bee999705206644f1f17f.tar.gz
testsuite: Exclude end-of-line characters from get_valueof result
The get_valueof procedure allows tests to conveniently make gdb evaluate an expression an return the value as a string. However, it includes an end-of-line character in its result. I stumbled on this when trying to use that result as part of a regex further in a test. You can see this for example by adding a puts in gdb.dwarf2/implref-struct.exp:get_members: set members [get_valueof "" ${var} ""] puts "<$members>" The output is <{a = 0, b = 1, c = 2} > This is because the regex in get_valueof is too greedy, the captured portion matches anything up to the gdb_prompt, including the end of line characters. This patch changes it to capture everything but end of line characters. The output of the puts becomes: <{a = 0, b = 1, c = 2}> I tested this by running gdb.dwarf2/implref-array.exp and gdb.dwarf2/implref-struct.exp, the two only current users of that procedure. gdb/testsuite/ChangeLog: * lib/gdb.exp (get_valueof): Don't capture end-of-line characters.
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/lib/gdb.exp2
2 files changed, 6 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 31f419faf5d..23658b098e8 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-08-12 Simon Marchi <simon.marchi@ericsson.com>
+
+ * lib/gdb.exp (get_valueof): Don't capture end-of-line
+ characters.
+
2017-08-05 Tom Tromey <tom@tromey.com>
* gdb.rust/simple.exp: Allow String to appear in a different
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 3d3eaab2583..d0265fc2117 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -5537,7 +5537,7 @@ proc get_valueof { fmt exp default {test ""} } {
set val ${default}
gdb_test_multiple "print${fmt} ${exp}" "$test" {
- -re "\\$\[0-9\]* = (.*)\[\r\n\]*$gdb_prompt $" {
+ -re "\\$\[0-9\]* = (\[^\r\n\]*)\[\r\n\]*$gdb_prompt $" {
set val $expect_out(1,string)
pass "$test ($val)"
}