aboutsummaryrefslogtreecommitdiff
path: root/gdb/python
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2023-09-05 06:55:54 -0600
committerTom Tromey <tromey@adacore.com>2023-09-12 10:31:26 -0600
commitf8ab027008863bd06513053ea9f84e1116c1cf73 (patch)
tree628e1cb3b83a5d9c9e0b5b3165fff319be75e768 /gdb/python
parentd1722abe60ca7c330210aa97c8ec52ff98644206 (diff)
downloadgdb-f8ab027008863bd06513053ea9f84e1116c1cf73.zip
gdb-f8ab027008863bd06513053ea9f84e1116c1cf73.tar.gz
gdb-f8ab027008863bd06513053ea9f84e1116c1cf73.tar.bz2
Avoid spurious breakpoint-setting failure in DAP
A user pointed out that if a DAP setBreakpoints request has a 'source' field in a SourceBreakpoint object, then the gdb DAP implementation will throw an exception. While SourceBreakpoint does not allow 'source' in the spec, it seems better to me to accept it. I don't think we should fully go down the "Postel's Law" path -- after all, we have the type-checker -- but at the same time, if we do send errors, they should be intentional and not artifacts of the implementation. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30820
Diffstat (limited to 'gdb/python')
-rw-r--r--gdb/python/lib/gdb/dap/breakpoint.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/gdb/python/lib/gdb/dap/breakpoint.py b/gdb/python/lib/gdb/dap/breakpoint.py
index 76ff129..1622ae6 100644
--- a/gdb/python/lib/gdb/dap/breakpoint.py
+++ b/gdb/python/lib/gdb/dap/breakpoint.py
@@ -273,7 +273,13 @@ def set_breakpoint(*, source, breakpoints: Sequence = (), **args):
if "path" not in source:
result = []
else:
- specs = [_rewrite_src_breakpoint(source=source, **bp) for bp in breakpoints]
+ # Setting 'source' in BP avoids any Python error if BP already
+ # has a 'source' parameter. Setting this isn't in the spec,
+ # but it is better to be safe. See PR dap/30820.
+ specs = []
+ for bp in breakpoints:
+ bp["source"] = source
+ specs.append(_rewrite_src_breakpoint(**bp))
# Be sure to include the path in the key, so that we only
# clear out breakpoints coming from this same source.
key = "source:" + source["path"]