diff options
author | Tom Tromey <tromey@adacore.com> | 2023-10-05 06:27:50 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-10-31 11:50:03 -0600 |
commit | 87e3cc466e8ea352639beb6db40a36e339d608d1 (patch) | |
tree | 8a280e2292065bfd46d3cd2d7ebbd9cf8be3e775 /gdb/testsuite/gdb.dap/assign.py | |
parent | 8170af78e17e1ec8b14b40d3ff4c979ccccb8f44 (diff) | |
download | binutils-87e3cc466e8ea352639beb6db40a36e339d608d1.zip binutils-87e3cc466e8ea352639beb6db40a36e339d608d1.tar.gz binutils-87e3cc466e8ea352639beb6db40a36e339d608d1.tar.bz2 |
Implement DAP setVariable request
This patch implements the DAP setVariable request.
setVariable is a bit odd in that it specifies the variable to modify
by passing in the variable's container and the name of the variable.
This approach can't handle variable shadowing (there are a couple of
open DAP bugs on this topic), so this patch renames duplicates to
avoid the problem.
Diffstat (limited to 'gdb/testsuite/gdb.dap/assign.py')
-rw-r--r-- | gdb/testsuite/gdb.dap/assign.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.dap/assign.py b/gdb/testsuite/gdb.dap/assign.py new file mode 100644 index 0000000..d7b4868 --- /dev/null +++ b/gdb/testsuite/gdb.dap/assign.py @@ -0,0 +1,54 @@ +# Copyright (C) 2022-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/>. + + +import gdb + + +class EmptyPrinter(gdb.ValuePrinter): + """Pretty print a structure""" + + def __init__(self, val): + self._val = val + + def to_string(self): + return "empty" + + +class FullPrinter(gdb.ValuePrinter): + """Pretty print a structure""" + + def __init__(self, val): + self._val = val + + def to_string(self): + return "full" + + def children(self): + # This is used to test the renaming code. + yield "datum", self._val["datum"] + yield "datum", self._val["datum"] + + +def lookup_function(val): + if val.type.tag == "special_type": + if val["disc"] == 0: + return EmptyPrinter(val) + else: + return FullPrinter(val) + return None + + +gdb.pretty_printers.append(lookup_function) |