forked from Imagelibrary/binutils-gdb
DAP specifies that a request can fail with the "notStopped" message if the inferior is running but the request requires that it first be stopped. This patch implements this for gdb. Most requests are assumed to require a stopped inferior, and the exceptions are noted by a new 'request' parameter. You may notice that the implementation is a bit racy. I think this is inherent -- unless the client waits for a stop event before sending a request, the request may be processed at any time relative to a stop. https://sourceware.org/bugzilla/show_bug.cgi?id=31037 Reviewed-by: Kévin Le Gouguec <legouguec@adacore.com>
49 lines
1.5 KiB
Plaintext
49 lines
1.5 KiB
Plaintext
# Copyright 2023 Free Software Foundation, Inc.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# Test "pause" in DAP.
|
|
|
|
require allow_dap_tests
|
|
|
|
load_lib dap-support.exp
|
|
|
|
standard_testfile attach.c
|
|
|
|
if {[build_executable ${testfile}.exp $testfile $srcfile] == -1} {
|
|
return
|
|
}
|
|
|
|
if {[dap_launch $testfile] == ""} {
|
|
return
|
|
}
|
|
|
|
dap_check_request_and_response "start inferior" configurationDone
|
|
dap_wait_for_event_and_check "inferior started" thread "body reason" started
|
|
|
|
set resp [lindex [dap_request_and_response evaluate {o expression [s 23]}] \
|
|
0]
|
|
gdb_assert {[dict get $resp success] == "false"} \
|
|
"evaluate failed while inferior executing"
|
|
gdb_assert {[dict get $resp message] == "notStopped"} \
|
|
"evaluate issued notStopped"
|
|
|
|
dap_check_request_and_response pause pause \
|
|
{o threadId [i 1]}
|
|
|
|
dap_wait_for_event_and_check "stopped by pause" stopped \
|
|
"body reason" pause
|
|
|
|
dap_shutdown
|