This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
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