[7/8] gdb/testsuite: fix failure in gdb.mi/mi-pending.exp with extended-remote
Commit Message
I currently see this failure when running the gdb.mi/mi-pending.exp
test using the native-extended-remote board:
-break-insert -f -c x==4 mi-pendshr.c:pendfunc2
&"No source file named mi-pendshr.c.\n"
^done,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="<PENDING>",pending="mi-pendshr.c:pendfunc2",cond="x==4",evaluated-by="host",times="0",original-location="mi-pendshr.c:pendfunc2"}
(gdb)
FAIL: gdb.mi/mi-pending.exp: MI pending breakpoint on mi-pendshr.c:pendfunc2 if x==4 (unexpected output)
The failure is caused by the 'evaluated-by="host"' string, which only
appears in the output when the test is run using the
native-extended-remote board.
I could fix this by just updating the pattern in
gdb.mi/mi-pending.exp, but I have instead updated mi-pending.exp to
make more use of the support procs in mi-support.exp. This did
require making a couple of adjustments to mi-support.exp, but I think
the result is that mi-pending.exp is now easier to read, and I see no
failures with native-extended-remote anymore.
One of the test names has changed after this work, I think the old
test name was wrong - it described a breakpoint as pending when the
breakpoint was not pending, I suspect a copy & paste error.
But there's no changes to what is actually being tested after this
patch.
---
gdb/testsuite/gdb.mi/mi-pending.exp | 34 +++++++++++++++++++++--------
gdb/testsuite/lib/mi-support.exp | 11 ++++++++--
2 files changed, 34 insertions(+), 11 deletions(-)
Comments
On 2023-02-20 2:13 p.m., Andrew Burgess via Gdb-patches wrote:
> I currently see this failure when running the gdb.mi/mi-pending.exp
> test using the native-extended-remote board:
>
> -break-insert -f -c x==4 mi-pendshr.c:pendfunc2
> &"No source file named mi-pendshr.c.\n"
> ^done,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="<PENDING>",pending="mi-pendshr.c:pendfunc2",cond="x==4",evaluated-by="host",times="0",original-location="mi-pendshr.c:pendfunc2"}
> (gdb)
> FAIL: gdb.mi/mi-pending.exp: MI pending breakpoint on mi-pendshr.c:pendfunc2 if x==4 (unexpected output)
>
> The failure is caused by the 'evaluated-by="host"' string, which only
> appears in the output when the test is run using the
> native-extended-remote board.
>
> I could fix this by just updating the pattern in
> gdb.mi/mi-pending.exp, but I have instead updated mi-pending.exp to
> make more use of the support procs in mi-support.exp. This did
> require making a couple of adjustments to mi-support.exp, but I think
> the result is that mi-pending.exp is now easier to read, and I see no
> failures with native-extended-remote anymore.
>
> One of the test names has changed after this work, I think the old
> test name was wrong - it described a breakpoint as pending when the
> breakpoint was not pending, I suspect a copy & paste error.
>
> But there's no changes to what is actually being tested after this
> patch.
> ---
> gdb/testsuite/gdb.mi/mi-pending.exp | 34 +++++++++++++++++++++--------
> gdb/testsuite/lib/mi-support.exp | 11 ++++++++--
> 2 files changed, 34 insertions(+), 11 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.mi/mi-pending.exp b/gdb/testsuite/gdb.mi/mi-pending.exp
> index a5c6ee5c906..71c3d45fe44 100644
> --- a/gdb/testsuite/gdb.mi/mi-pending.exp
> +++ b/gdb/testsuite/gdb.mi/mi-pending.exp
> @@ -52,19 +52,35 @@ mi_load_shlibs $lib_sl1
> mi_load_shlibs $lib_sl2
>
> # Set pending breakpoint via MI.
> -mi_gdb_test "-break-insert -f pendfunc1" \
> - ".*\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"<PENDING>\",pending=\"pendfunc1\",times=\"0\",original-location=\"pendfunc1\"\}"\
> - "MI pending breakpoint on pendfunc1"
> +mi_create_breakpoint_pending "-f pendfunc1" \
> + "MI pending breakpoint on pendfunc1" \
> + -number "1" \
> + -type "breakpoint" \
> + -disp "keep" \
> + -enabled "y" \
> + -pending "pendfunc1" \
> + -original-location "pendfunc1"
>
> # Set pending breakpoint with a condition via MI.
> -mi_gdb_test "-break-insert -f -c x==4 ${libfile1}.c:pendfunc2" \
> - ".*\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"<PENDING>\",pending=\"${libfile1}.c:pendfunc2\",cond=\"x==4\",times=\"0\",original-location=\"${libfile1}.c:pendfunc2\"\}"\
> - "MI pending breakpoint on ${libfile1}.c:pendfunc2 if x==4"
> +mi_create_breakpoint_pending "-f -c x==4 ${libfile1}.c:pendfunc2" \
> + "MI pending breakpoint on ${libfile1}.c:pendfunc2 if x==4" \
> + -number "2" \
> + -type "breakpoint" \
> + -disp "keep" \
> + -enabled "y" \
> + -pending "${libfile1}.c:pendfunc2" \
> + -cond "x==4" \
> + -original-location "${libfile1}.c:pendfunc2"
>
> # Set breakpoint so that we can stop when the thread is created
> -mi_gdb_test "-break-insert -f thread_func" \
> - ".*\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"${hex}\",func=\"thread_func\".*\}"\
> - "MI pending breakpoint on thread_func"
> +mi_create_breakpoint "-f thread_func" \
> + "MI breakpoint on thread_func" \
> + -number "3" \
> + -type "breakpoint" \
> + -disp "keep" \
> + -enabled "y" \
> + -addr "$hex" \
> + -func "thread_func"
>
> mi_run_cmd
>
> diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
> index 2ab751749e9..c072da08a04 100644
> --- a/gdb/testsuite/lib/mi-support.exp
> +++ b/gdb/testsuite/lib/mi-support.exp
> @@ -1390,6 +1390,14 @@ proc mi_create_breakpoint_multi {location test args} {
> return $bp
> }
>
> +# Like mi_create_breakpoint, but creates a pending breakpoint.
> +
> +proc mi_create_breakpoint_pending {location test args} {
> + set bp [eval mi_make_breakpoint_pending $args]
> + mi_gdb_test "222-break-insert $location" ".*\r\n222\\^done,$bp" $test
> + return $bp
> +}
> +
> # Creates varobj named NAME for EXPRESSION.
> # Name cannot be "-".
> proc mi_create_varobj { name expression testname } {
> @@ -2639,7 +2647,7 @@ proc mi_make_breakpoint_multi {args} {
>
> proc mi_make_breakpoint_pending {args} {
> parse_args {{number .*} {type .*} {disp .*} {enabled .*}
> - {pending .*} {original-location .*} {thread ""}}
> + {pending .*} {original-location .*} {thread ""} {cond ""}}
Intro comment needs update.
Otherwise:
Approved-By: Pedro Alves <pedro@palves.net>
Pedro Alves
>
> set attr_list {}
> foreach attr [list number type disp enabled] {
> @@ -2655,7 +2663,6 @@ proc mi_make_breakpoint_pending {args} {
> set ignore 0
> set times 0
> set script ""
> - set cond ""
> set evaluated-by ""
>
> set result [mi_make_breakpoint_1 \
>
@@ -52,19 +52,35 @@ mi_load_shlibs $lib_sl1
mi_load_shlibs $lib_sl2
# Set pending breakpoint via MI.
-mi_gdb_test "-break-insert -f pendfunc1" \
- ".*\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"<PENDING>\",pending=\"pendfunc1\",times=\"0\",original-location=\"pendfunc1\"\}"\
- "MI pending breakpoint on pendfunc1"
+mi_create_breakpoint_pending "-f pendfunc1" \
+ "MI pending breakpoint on pendfunc1" \
+ -number "1" \
+ -type "breakpoint" \
+ -disp "keep" \
+ -enabled "y" \
+ -pending "pendfunc1" \
+ -original-location "pendfunc1"
# Set pending breakpoint with a condition via MI.
-mi_gdb_test "-break-insert -f -c x==4 ${libfile1}.c:pendfunc2" \
- ".*\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"<PENDING>\",pending=\"${libfile1}.c:pendfunc2\",cond=\"x==4\",times=\"0\",original-location=\"${libfile1}.c:pendfunc2\"\}"\
- "MI pending breakpoint on ${libfile1}.c:pendfunc2 if x==4"
+mi_create_breakpoint_pending "-f -c x==4 ${libfile1}.c:pendfunc2" \
+ "MI pending breakpoint on ${libfile1}.c:pendfunc2 if x==4" \
+ -number "2" \
+ -type "breakpoint" \
+ -disp "keep" \
+ -enabled "y" \
+ -pending "${libfile1}.c:pendfunc2" \
+ -cond "x==4" \
+ -original-location "${libfile1}.c:pendfunc2"
# Set breakpoint so that we can stop when the thread is created
-mi_gdb_test "-break-insert -f thread_func" \
- ".*\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"${hex}\",func=\"thread_func\".*\}"\
- "MI pending breakpoint on thread_func"
+mi_create_breakpoint "-f thread_func" \
+ "MI breakpoint on thread_func" \
+ -number "3" \
+ -type "breakpoint" \
+ -disp "keep" \
+ -enabled "y" \
+ -addr "$hex" \
+ -func "thread_func"
mi_run_cmd
@@ -1390,6 +1390,14 @@ proc mi_create_breakpoint_multi {location test args} {
return $bp
}
+# Like mi_create_breakpoint, but creates a pending breakpoint.
+
+proc mi_create_breakpoint_pending {location test args} {
+ set bp [eval mi_make_breakpoint_pending $args]
+ mi_gdb_test "222-break-insert $location" ".*\r\n222\\^done,$bp" $test
+ return $bp
+}
+
# Creates varobj named NAME for EXPRESSION.
# Name cannot be "-".
proc mi_create_varobj { name expression testname } {
@@ -2639,7 +2647,7 @@ proc mi_make_breakpoint_multi {args} {
proc mi_make_breakpoint_pending {args} {
parse_args {{number .*} {type .*} {disp .*} {enabled .*}
- {pending .*} {original-location .*} {thread ""}}
+ {pending .*} {original-location .*} {thread ""} {cond ""}}
set attr_list {}
foreach attr [list number type disp enabled] {
@@ -2655,7 +2663,6 @@ proc mi_make_breakpoint_pending {args} {
set ignore 0
set times 0
set script ""
- set cond ""
set evaluated-by ""
set result [mi_make_breakpoint_1 \