aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.python/py-parameter.exp
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-09-15 01:09:22 -0600
committerTom Tromey <tom@tromey.com>2018-09-23 23:15:12 -0600
commitae778caf097e08497f2e9218cf68b254b8da38f1 (patch)
tree4d9491413ed523cd72c541def36f1bafba954dca /gdb/testsuite/gdb.python/py-parameter.exp
parent2b4ad2fe4300489fd40dbe07e1675ff1cf0bee58 (diff)
downloadbinutils-ae778caf097e08497f2e9218cf68b254b8da38f1.zip
binutils-ae778caf097e08497f2e9218cf68b254b8da38f1.tar.gz
binutils-ae778caf097e08497f2e9218cf68b254b8da38f1.tar.bz2
Allow setting a parameter to raise gdb.GdbError
A convention in the Python layer is that raising a gdb.GdbError will not print the Python stack -- instead the exception is treated as any other gdb exception. PR python/18852 asks that this treatment be extended the the get_set_value method of gdb.Parameter. This makes sense, because it lets Python-created parameters act like gdb parameters. 2018-09-23 Tom Tromey <tom@tromey.com> PR python/18852: * python/py-param.c (get_set_value): Use gdbpy_handle_exception. gdb/doc/ChangeLog 2018-09-23 Tom Tromey <tom@tromey.com> PR python/18852: * python.texi (Parameters In Python): Document exception behavior of get_set_string. gdb/testsuite/ChangeLog 2018-09-23 Tom Tromey <tom@tromey.com> PR python/18852: * gdb.python/py-parameter.exp: Add test for parameter that throws on "set".
Diffstat (limited to 'gdb/testsuite/gdb.python/py-parameter.exp')
-rw-r--r--gdb/testsuite/gdb.python/py-parameter.exp15
1 files changed, 15 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.python/py-parameter.exp b/gdb/testsuite/gdb.python/py-parameter.exp
index 0508544..9a36e63 100644
--- a/gdb/testsuite/gdb.python/py-parameter.exp
+++ b/gdb/testsuite/gdb.python/py-parameter.exp
@@ -203,3 +203,18 @@ foreach kind {PARAM_ZUINTEGER PARAM_ZUINTEGER_UNLIMITED} {
"check that PARAM_ZUINTEGER value is -1 after setting"
}
}
+
+gdb_py_test_multiple "Throwing gdb parameter" \
+ "python" "" \
+ "class TestThrowParam (gdb.Parameter):" "" \
+ " def __init__ (self, name):" "" \
+ " super (TestThrowParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_STRING)" "" \
+ " self.value = True" "" \
+ " def get_set_string (self):" "" \
+ " raise gdb.GdbError('Ordinary gdb error')" "" \
+ "test_throw_param = TestThrowParam ('print test-throw-param')" ""\
+ "end"
+
+gdb_test "set print test-throw-param whoops" \
+ "Ordinary gdb error" \
+ "gdb.GdbError does not show Python stack"