diff --git a/gdb/python/lib/gdb/dap/events.py b/gdb/python/lib/gdb/dap/events.py index 10c8a34890e..aca25120ca0 100644 --- a/gdb/python/lib/gdb/dap/events.py +++ b/gdb/python/lib/gdb/dap/events.py @@ -32,6 +32,7 @@ def _on_exit(event): "exitCode": code, }, ) + send_event("terminated") @in_gdb_thread diff --git a/gdb/python/lib/gdb/dap/server.py b/gdb/python/lib/gdb/dap/server.py index b1c75ab967f..db7893a387b 100644 --- a/gdb/python/lib/gdb/dap/server.py +++ b/gdb/python/lib/gdb/dap/server.py @@ -151,7 +151,7 @@ class Server: self.done = True -def send_event(event, body): +def send_event(event, body=None): """Send an event to the DAP client. EVENT is the name of the event, a string. BODY is the body of the event, an arbitrary object.""" diff --git a/gdb/testsuite/gdb.dap/terminate.exp b/gdb/testsuite/gdb.dap/terminate.exp new file mode 100644 index 00000000000..bc222ab73c2 --- /dev/null +++ b/gdb/testsuite/gdb.dap/terminate.exp @@ -0,0 +1,39 @@ +# 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 . + +# Test that the 'terminated' event is delivered. + +require allow_dap_tests + +load_lib dap-support.exp + +# The test doesn't matter much, since we aren't going to set any +# breakpoints -- it just has to exit. +standard_testfile scopes.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 + +dap_wait_for_event_and_check "terminated event" terminated + +dap_shutdown