[gdb/testsuite] Use setVariable in gdb.dap/scopes.exp

Message ID 20241210114537.12425-1-tdevries@suse.de
State Committed
Headers
Series [gdb/testsuite] Use setVariable in gdb.dap/scopes.exp |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 fail Patch failed to apply
linaro-tcwg-bot/tcwg_gdb_build--master-arm fail Patch failed to apply

Commit Message

Tom de Vries Dec. 10, 2024, 11:45 a.m. UTC
  The test-case gdb.dap/scopes.exp contains the following outdated comment:
...
 # setVariable isn't implemented yet, so use the register name.
...

Now that setVariable is implemented, use it to set variable scalar, and remove
the bit that sets the first register.  That part is known to fail on s390x,
because the first register isn't writeable [1].

Tested on x86_64-linux.

Suggested-By: Tom Tromey <tom@tromey.com>

[1] https://sourceware.org/pipermail/gdb-patches/2024-December/213823.html
---
 gdb/testsuite/gdb.dap/scopes.exp | 27 +++++++++------------------
 1 file changed, 9 insertions(+), 18 deletions(-)


base-commit: c79fb66c7837cbc3b5f3915d8c23bb5747235c34
  

Comments

Tom Tromey Dec. 10, 2024, 6:51 p.m. UTC | #1
>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:

Tom> The test-case gdb.dap/scopes.exp contains the following outdated comment:
Tom> ...
Tom>  # setVariable isn't implemented yet, so use the register name.
Tom> ...

Tom> Now that setVariable is implemented, use it to set variable scalar, and remove
Tom> the bit that sets the first register.  That part is known to fail on s390x,
Tom> because the first register isn't writeable [1].

Thanks for doing this.  This looks good to me.
Approved-By: Tom Tromey <tom@tromey.com>

Tom
  

Patch

diff --git a/gdb/testsuite/gdb.dap/scopes.exp b/gdb/testsuite/gdb.dap/scopes.exp
index a8a0c01690e..e0c7786f722 100644
--- a/gdb/testsuite/gdb.dap/scopes.exp
+++ b/gdb/testsuite/gdb.dap/scopes.exp
@@ -134,23 +134,14 @@  set val [dap_check_request_and_response "fetch first register" \
 	     "variables" \
 	     [format {o variablesReference [i %d] count [i 1]} $num]]
 
-# Try setting the value to something else.
-set val [dict get [lindex $val 0] body variables]
-set name [dict get [lindex $val 0] name]
-set val [dict get [lindex $val 0] value]
-# Just make sure it is different from the original value.
-set val [expr {$val ^ 7}]
-
-# setVariable isn't implemented yet, so use the register name.  Note
-# that we sneak the "$" into the name, written in a slightly funny way
-# to work around apparent TON limitations.
-set response [dap_check_request_and_response "set first register" \
-		  setExpression \
-		  [format {o expression [s \$%s] value [s %d] frameId [i %d]} \
-		       $name $val $frame_id]]
-set response [lindex $response 0]
-
-gdb_assert {[dict get $response body value] == $val} \
-    "setting register yields updated value"
+set num [dict get $scope variablesReference]
+set refs [lindex [dap_check_request_and_response "set variable scalar" \
+		      "setVariable" \
+		      [format {o variablesReference [i %d] name [s scalar] \
+				   value [s 32]} \
+			   $num]] \
+	      0]
+gdb_assert { [dict get $refs body value] == 32 } \
+    "setting variable yields updated value"
 
 dap_shutdown