public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH][gdb/testsuite] Detect change instead of init in gdb.mi/mi-var-block.exp
@ 2022-05-31 14:03 Tom de Vries
  2022-06-02 15:39 ` Tom Tromey
  0 siblings, 1 reply; 2+ messages in thread
From: Tom de Vries @ 2022-05-31 14:03 UTC (permalink / raw)
  To: gdb-patches

Hi,

On openSUSE Tumbleweed with target board unix/-m32, I run into:
...
PASS: gdb.mi/mi-var-block.exp: step at do_block_test 2
Expecting: ^(-var-update \*[^M
]+)?(\^done,changelist=\[{name="foo",in_scope="true",type_changed="false",has_more="0"},
{name="cb",in_scope="true",type_changed="false",has_more="0"}\][^M
]+[(]gdb[)] ^M
[ ]*)
-var-update *^M
^done,changelist=[{name="foo",in_scope="true",type_changed="false",has_more="0"}]^M
(gdb) ^M
FAIL: gdb.mi/mi-var-block.exp: update all vars: cb foo changed (unexpected output)
...

The problem is that the test-case attempts to detect a change in the cb
variable caused by this initialization:
...
void
do_block_tests ()
{
  int cb = 12;
...
but that only works if the stack location happens to be unequal to 12 before
the initialization.

Fix this by first initializing to 0, and then changing the value to 12:
...
-  int cb = 12;
+  int cb = 0;
+  cb = 12;
...
and detecting that change.

Tested on x86_64-linux.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29195

Any comments?

Thanks,
- Tom

[gdb/testsuite] Detect change instead of init in gdb.mi/mi-var-block.exp

---
 gdb/testsuite/gdb.mi/mi-var-block.exp | 5 +++++
 gdb/testsuite/gdb.mi/var-cmd.c        | 3 ++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/gdb/testsuite/gdb.mi/mi-var-block.exp b/gdb/testsuite/gdb.mi/mi-var-block.exp
index 2f8d39a6acd..a1ef2d1ad52 100644
--- a/gdb/testsuite/gdb.mi/mi-var-block.exp
+++ b/gdb/testsuite/gdb.mi/mi-var-block.exp
@@ -40,6 +40,11 @@ mi_gdb_load ${binfile}
 
 mi_runto do_block_tests
 
+# step to "cb = 12;"
+mi_step_to "do_block_tests" "" "var-cmd.c" \
+    [gdb_get_line_number "cb = 12;"] \
+    "step at do_block_test 0"
+
 # Test: c_variable-3.2
 # Desc: create cb and foo
 mi_create_varobj "cb" "cb" "create local variable cb"
diff --git a/gdb/testsuite/gdb.mi/var-cmd.c b/gdb/testsuite/gdb.mi/var-cmd.c
index fddb0d39a5e..f3312788a80 100644
--- a/gdb/testsuite/gdb.mi/var-cmd.c
+++ b/gdb/testsuite/gdb.mi/var-cmd.c
@@ -207,7 +207,8 @@ subroutine1 (int i, long *l)
 void
 do_block_tests ()
 {
-  int cb = 12;
+  int cb = 0;
+  cb = 12;
 
   {
     int foo;

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH][gdb/testsuite] Detect change instead of init in gdb.mi/mi-var-block.exp
  2022-05-31 14:03 [PATCH][gdb/testsuite] Detect change instead of init in gdb.mi/mi-var-block.exp Tom de Vries
@ 2022-06-02 15:39 ` Tom Tromey
  0 siblings, 0 replies; 2+ messages in thread
From: Tom Tromey @ 2022-06-02 15:39 UTC (permalink / raw)
  To: Tom de Vries via Gdb-patches

>>>>> Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> writes:

> Fix this by first initializing to 0, and then changing the value to 12:
> ...
> -  int cb = 12;
> +  int cb = 0;
> +  cb = 12;
> ...
> and detecting that change.

Seems good to me.  Thank you.

Tom

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-06-02 15:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-31 14:03 [PATCH][gdb/testsuite] Detect change instead of init in gdb.mi/mi-var-block.exp Tom de Vries
2022-06-02 15:39 ` Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).