[gdb/testsuite] Fix unbalanced quotes in mi_expect_stop argument

In proc mi_expect_stop there's a proc argument reason that's handled like so:
...
set r "reason=\"$reason\","
...

That's fine for say:
...
set reason "foo"
...
for which this evaluates to:
...
set r "reason=\"foo\","
...

But there are more complex uses, for instance:
...
set reason "breakpoint-hit\",disp=\"keep\",bkptno=\"$decimal"
...
which evaluates to:
...
set r "\"breakpoint-hit\",disp=\"keep\",bkptno=\"$decimal\""
...

Note how in this reason argument, the first two '\"' seems to form a pair
surrounding ',disp=', which is not the case, which is confusing.

Fix this by only adding the quotes in mi_expect_stop if the string doesn't
already contain quotes, such that we have the more readable:
...
set reason "\"breakpoint-hit\",disp=\"keep\",bkptno=\"$decimal\""
...

Tested on x86_64-linux.
This commit is contained in:
Tom de Vries
2023-03-24 10:45:37 +01:00
parent 1985d8cb70
commit c569a946f6
5 changed files with 13 additions and 9 deletions

View File

@@ -79,7 +79,7 @@ mi_gdb_test "-catch-assert -c \"Global_Var = 2\"" \
set bp_location [gdb_get_line_number "STOP" ${testdir}/bla.adb]
mi_execute_to "exec-continue" \
"breakpoint-hit\",disp=\"keep\",bkptno=\"$decimal" \
"\"breakpoint-hit\",disp=\"keep\",bkptno=\"$decimal\"" \
"bla" "" ".*" "$bp_location" \
".*" \
"continue to assert failure catchpoint hit"

View File

@@ -92,7 +92,7 @@ proc continue_to_exception { exception_name exception_message test } {
# Now MI stream output.
mi_expect_stop \
"breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"$exception_name\(\",exception-message=\"$exception_message\)?" \
"\"breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"$exception_name\(\",exception-message=\"$exception_message\)?\"" \
"foo" "" ".*" ".*" \
".*" \
$test
@@ -140,19 +140,19 @@ mi_gdb_test "-catch-exception -u" \
"catch unhandled exceptions"
mi_execute_to "exec-continue" \
"breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"PROGRAM_ERROR(\",exception-message=\"foo\\.adb:$decimal explicit raise)?" \
"\"breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"PROGRAM_ERROR(\",exception-message=\"foo\\.adb:$decimal explicit raise)?\"" \
"foo" "" ".*" ".*" \
".*" \
"continue to exception catchpoint hit"
mi_execute_to "exec-continue" \
"breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb" \
"\"breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\"" \
"foo" "" ".*" ".*" \
".*" \
"continue to assert failure catchpoint hit"
mi_execute_to "exec-continue" \
"breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"CONSTRAINT_ERROR" \
"\"breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"CONSTRAINT_ERROR\"" \
"foo" "" ".*" ".*" \
".*" \
"continue to unhandled exception catchpoint hit"

View File

@@ -82,7 +82,7 @@ proc continue_to_exception_handler { test line } {
# Now MI stream output.
mi_expect_stop \
"breakpoint-hit\",disp=\"keep\",bkptno=\"$decimal\",exception-name=\"exception\"?" \
"\"breakpoint-hit\",disp=\"keep\",bkptno=\"$decimal\",exception-name=\"exception\"" \
"foo" "" ".*" "$line" \
".*" \
$test
@@ -125,7 +125,7 @@ mi_gdb_test "-catch-handlers -e Constraint_Error" \
"catch Constraint_Error"
mi_execute_to "exec-continue" \
"breakpoint-hit\",disp=\"keep\",bkptno=\"$decimal\",exception-name=\"exception\"?" \
"\"breakpoint-hit\",disp=\"keep\",bkptno=\"$decimal\",exception-name=\"exception\"" \
"foo" "" ".*" "$bp_ce_location" \
".*" \
"continue to exception catchpoint hit"

View File

@@ -77,7 +77,7 @@ mi_gdb_test "-catch-exception -c \"i = 2\" -e constraint_error" \
mi_run_cmd
mi_expect_stop \
"breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"CONSTRAINT_ERROR(\",exception-message=\"foo\\.adb:$decimal explicit raise)?" \
"\"breakpoint-hit\",disp=\"keep\",bkptno=\"$any_nb\",exception-name=\"CONSTRAINT_ERROR(\",exception-message=\"foo\\.adb:$decimal explicit raise)?\"" \
"foo" "" ".*" ".*" \
".*" \
"run to exception catchpoint hit"

View File

@@ -1267,7 +1267,11 @@ proc mi_expect_stop { reason func args file line extra test } {
set r ""
if { $reason != "" } {
set r "reason=\"$reason\","
if { [regexp {"} $reason] } {
set r "reason=$reason,"
} else {
set r "reason=\"$reason\","
}
}