This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] testsuite: Exclude end-of-line characters from get_valueof result


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c2c2dd9f09130fcdfc6bee999705206644f1f17f

commit c2c2dd9f09130fcdfc6bee999705206644f1f17f
Author: Simon Marchi <simon.marchi@ericsson.com>
Date:   Sat Aug 12 10:33:00 2017 +0200

    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.

Diff:
---
 gdb/testsuite/ChangeLog   | 5 +++++
 gdb/testsuite/lib/gdb.exp | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 31f419f..23658b0 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 3d3eaab..d0265fc 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)"
 	}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]