aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2024-12-10 11:53:31 +0100
committerTom de Vries <tdevries@suse.de>2024-12-10 11:53:31 +0100
commitc79fb66c7837cbc3b5f3915d8c23bb5747235c34 (patch)
treeb6ca85a488018983917ea8c3190a5f7244ae38fd
parent8c59e9b189560237811c1ac185e1941a7ae6f367 (diff)
downloadbinutils-c79fb66c7837cbc3b5f3915d8c23bb5747235c34.zip
binutils-c79fb66c7837cbc3b5f3915d8c23bb5747235c34.tar.gz
binutils-c79fb66c7837cbc3b5f3915d8c23bb5747235c34.tar.bz2
[gdb/testsuite] Fix gdb.dap/step-out.exp on s390x
With test-case gdb.dap/step-out.exp on s390x-linux, I get: ... >>> {"seq": 7, "type": "request", "command": "scopes", "arguments": {"frameId": 0}} Content-Length: 569^M ^M {"request_seq": 7, "type": "response", "command": "scopes", "body": {"scopes": [{"variablesReference": 1, "name": "Locals", "presentationHint": "locals", "expensive": false, "namedVariables": 1, "line": 35, "source": {"name": "step-out.c", "path": "/home/vries/gdb/src/gdb/testsuite/gdb.dap/step-out.c"}}, {"variablesReference": 2, "name": "Registers", "presentationHint": "registers", "expensive": false, "namedVariables": 114, "line": 35, "source": {"name": "step-out.c", "path": "/home/vries/gdb/src/gdb/testsuite/gdb.dap/step-out.c"}}]}, "success": true, "seq": 21}PASS: gdb.dap/step-out.exp: get scopes success FAIL: gdb.dap/step-out.exp: three scopes ... The problem is that the test-case expects three scopes: ... lassign $scopes scope reg_scope return_scope ... but the return_scope is missing because this doesn't work: ... $ gdb -q -batch outputs/gdb.dap/step-out/step-out \ -ex "b function_breakpoint_here" \ -ex run \ -ex finish ... Value returned has type: struct result. Cannot determine contents ... This is likely caused by a problem in gdb, but there's nothing wrong the DAP support. Fix this by: - allowing two scopes, and - declaring the tests of return_scope unsupported. Tested on s390x-linux. Approved-By: Tom Tromey <tom@tromey.com>
-rw-r--r--gdb/testsuite/gdb.dap/step-out.exp52
1 files changed, 29 insertions, 23 deletions
diff --git a/gdb/testsuite/gdb.dap/step-out.exp b/gdb/testsuite/gdb.dap/step-out.exp
index cfe730e..e9d7a25 100644
--- a/gdb/testsuite/gdb.dap/step-out.exp
+++ b/gdb/testsuite/gdb.dap/step-out.exp
@@ -60,31 +60,37 @@ set scopes [dap_check_request_and_response "get scopes" scopes \
[format {o frameId [i %d]} $frame_id]]
set scopes [dict get [lindex $scopes 0] body scopes]
-gdb_assert {[llength $scopes] == 3} "three scopes"
+gdb_assert {[llength $scopes] == 2 || [llength $scopes] == 3} "two or three scopes"
lassign $scopes scope reg_scope return_scope
-gdb_assert {[dict get $scope name] == "Locals"} "scope is locals"
-gdb_assert {[dict get $scope presentationHint] == "locals"} \
- "locals presentation hint"
-gdb_assert {[dict get $scope namedVariables] == 1} "one var in scope"
-
-gdb_assert {[dict get $return_scope name] == "Return"} "scope is return"
-gdb_assert {[dict get $return_scope presentationHint] == "returnValue"} \
- "returnValue presentation hint"
-gdb_assert {[dict get $return_scope namedVariables] == 1} \
- "one var in return scope"
-
-set num [dict get $return_scope variablesReference]
-set refs [lindex [dap_check_request_and_response "fetch arguments" \
- "variables" \
- [format {o variablesReference [i %d]} $num]] \
- 0]
-set varlist [lindex [dict get $refs body variables] 0]
-
-gdb_assert {[dict get $varlist variablesReference] > 0} \
- "variable has children"
-gdb_assert {[dict get $varlist name] == "(return)"} \
- "variable is return value"
+
+set test "scope is locals"
+if { $return_scope == "" } {
+ unsupported $test
+} else {
+ gdb_assert {[dict get $scope name] == "Locals"} $test
+ gdb_assert {[dict get $scope presentationHint] == "locals"} \
+ "locals presentation hint"
+ gdb_assert {[dict get $scope namedVariables] == 1} "one var in scope"
+
+ gdb_assert {[dict get $return_scope name] == "Return"} "scope is return"
+ gdb_assert {[dict get $return_scope presentationHint] == "returnValue"} \
+ "returnValue presentation hint"
+ gdb_assert {[dict get $return_scope namedVariables] == 1} \
+ "one var in return scope"
+
+ set num [dict get $return_scope variablesReference]
+ set refs [lindex [dap_check_request_and_response "fetch arguments" \
+ "variables" \
+ [format {o variablesReference [i %d]} $num]] \
+ 0]
+ set varlist [lindex [dict get $refs body variables] 0]
+
+ gdb_assert {[dict get $varlist variablesReference] > 0} \
+ "variable has children"
+ gdb_assert {[dict get $varlist name] == "(return)"} \
+ "variable is return value"
+}
set response_and_events [dap_request_and_response stepOut {o threadId [i 1]}]
set response [lindex $response_and_events 0]