diff options
author | Tom Tromey <tromey@adacore.com> | 2025-07-30 08:30:49 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2025-08-11 07:39:10 -0600 |
commit | 9ef3249a00f50ee00e3973e5901cd2936abc79b3 (patch) | |
tree | 60c3bdc16947c5634ac312a69c3b051e0b8985b0 /gdb/testsuite | |
parent | ddd2795c52228cbbdf11aa95e11b68647b10df88 (diff) | |
download | binutils-9ef3249a00f50ee00e3973e5901cd2936abc79b3.zip binutils-9ef3249a00f50ee00e3973e5901cd2936abc79b3.tar.gz binutils-9ef3249a00f50ee00e3973e5901cd2936abc79b3.tar.bz2 |
Emit DAPException when too many variable children are reqeusted
PR dap/33228 points out a failure that occurs when the DAP client
requests more children of a variable than actually exist. Currently,
gdb throws a somewhat confusing exception. This patch changes this
code to throw a DAPException instead, resulting in a more ordinary and
readable failure.
The spec seems to be silent on what to do in this case. I chose an
exception on the theory that it's easier to be strict now and lift the
restriction later (if needed) than vice versa.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33228
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/gdb.dap/scopes.exp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.dap/scopes.exp b/gdb/testsuite/gdb.dap/scopes.exp index b2066e5..bce7746 100644 --- a/gdb/testsuite/gdb.dap/scopes.exp +++ b/gdb/testsuite/gdb.dap/scopes.exp @@ -133,6 +133,13 @@ set refs [lindex [dap_check_request_and_response "fetch contents of dei" \ set deivals [dict get $refs body variables] gdb_assert {[llength $deivals] == 2} "dei has two members" +# Request more children than exist. See PR dap/33228. +set seq [dap_send_request variables \ + [format {o variablesReference [i %d] count [i 100]} $dei_ref]] +lassign [dap_read_response variables $seq] response ignore +gdb_assert {[dict get $response success] == "false"} \ + "variables with invalid count" + set num [dict get $reg_scope variablesReference] lassign [dap_check_request_and_response "fetch all registers" \ "variables" \ |