From d2266b2305c18538eddeb22fd89496910c8c4377 Mon Sep 17 00:00:00 2001 From: Gregory Anders Date: Fri, 1 Sep 2023 16:02:18 -0500 Subject: [PATCH] gdb/dap: ignore unused keyword args in step_out Some DAP clients may send additional parameters in the stepOut command (e.g. "granularity") which are not used by GDB, but should nonetheless be accepted without error. Approved-By: Tom Tromey --- gdb/python/lib/gdb/dap/next.py | 2 +- gdb/python/lib/gdb/dap/server.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gdb/python/lib/gdb/dap/next.py b/gdb/python/lib/gdb/dap/next.py index 5046963cb81..e5bb8d64da0 100644 --- a/gdb/python/lib/gdb/dap/next.py +++ b/gdb/python/lib/gdb/dap/next.py @@ -74,7 +74,7 @@ def step_in( @request("stepOut") -def step_out(*, threadId: int, singleThread: bool = False): +def step_out(*, threadId: int, singleThread: bool = False, **args): send_gdb(lambda: _handle_thread_step(threadId, singleThread, True)) send_gdb(ExecutionInvoker("finish", StopKinds.STEP)) diff --git a/gdb/python/lib/gdb/dap/server.py b/gdb/python/lib/gdb/dap/server.py index db7893a387b..d84bca5d1fc 100644 --- a/gdb/python/lib/gdb/dap/server.py +++ b/gdb/python/lib/gdb/dap/server.py @@ -13,6 +13,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +import inspect import json import queue import sys @@ -165,6 +166,12 @@ def request(name): def wrap(func): global _commands + code = func.__code__ + # We don't permit requests to have positional arguments. + assert code.co_posonlyargcount == 0 + assert code.co_argcount == 0 + # A request must have a **args parameter. + assert code.co_flags & inspect.CO_VARKEYWORDS # All requests must run in the DAP thread. # Also type-check the calls. func = in_dap_thread(type_check(func)) -- 2.30.2