This is the mail archive of the gdb-patches@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]

Re: [PATCH] Fix a bug in tstatus.exp matching tstatus output


On 03/05/2013 12:22 AM, Joel Brobecker wrote:
>> In gdb testsuite, both "\\\(" and "\\(" are used.  After reading
>> section "4.3. Backslashes" in book "Exploring Expect", I think they
>> are the same on effect.
> 
> I don't understand why the third backslash would be needed, though.
> The first two is the backslash escaping the '(' character in the
> regular expression. The third one escapes the '(' as the TCL string
> level, but I don't think it is a special character (like '[' is,
> for instance), is it?
> 

Right, of course we can use two backslashes here.

Backslash translation is done by Tcl and pattern matcher.  In Tcl,
"Sequences that have no special translation are replaced by the 
character without the backslash" [1], and in pattern matcher, use 
"backslashes to force the following character into its literal 
equivalent." [2]

For "\\(", Tcl will translate it to "\(" and pattern matcher will treat 
it as literal "(".
For "\\\(", Tcl will tranlate it "\(" as well, because it translates 
"\\" to "\" and "\(" to "(".

Here is the updated patch using two backslashes.

-- 
Yao (éå)


gdb/testsuite:

2013-03-05  Yao Qi  <yao@codesourcery.com>

	* gdb.trace/tstatus.exp (run_trace_experiment): Escape parentheses
	by "\\".
---
 gdb/testsuite/gdb.trace/tstatus.exp |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/gdb/testsuite/gdb.trace/tstatus.exp b/gdb/testsuite/gdb.trace/tstatus.exp
index 483bb20..3271ace 100644
--- a/gdb/testsuite/gdb.trace/tstatus.exp
+++ b/gdb/testsuite/gdb.trace/tstatus.exp
@@ -99,7 +99,7 @@ proc run_trace_experiment {} {
     gdb_test_no_output "tstop because I can" "trace stopped with note"
 
     gdb_test_multiple "tstatus" "check on trace status after stop" {
-	-re "Trace stopped by a tstop command (because I can)\..*Trace will stop if GDB disconnects\.\[\r\n\]+Trace user is me me me\.\[\r\n\]+Trace notes: different note\.\[\r\n\]+Not looking at any trace frame\..*\r\n$gdb_prompt $" {
+	-re "Trace stopped by a tstop command \\(because I can\\)\..*Trace will stop if GDB disconnects\.\[\r\n\]+Trace user is me me me\.\[\r\n\]+Trace notes: different note\.\[\r\n\]+Not looking at any trace frame\..*\r\n$gdb_prompt $" {
 	    pass "tstatus reports trace stop reason"
 	}
 	-re "Trace stopped by a tstop command\..*\r\n$gdb_prompt $" {
-- 
1.7.7.6


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