diff --git a/gdb/python/lib/gdb/__init__.py b/gdb/python/lib/gdb/__init__.py index 17ee6a19e14..9e9978ef30e 100644 --- a/gdb/python/lib/gdb/__init__.py +++ b/gdb/python/lib/gdb/__init__.py @@ -239,6 +239,13 @@ def find_pc_line(pc): def set_parameter(name, value): """Set the GDB parameter NAME to VALUE.""" + # Handle the specific case of booleans here, because gdb.parameter + # can return them, but they can't be passed to 'set' this way. + if isinstance(value, bool): + if value: + value = 'on' + else: + value = 'off' execute("set " + name + " " + str(value), to_string=True) diff --git a/gdb/testsuite/gdb.python/py-parameter.exp b/gdb/testsuite/gdb.python/py-parameter.exp index db158ddec26..d6db6ac3bb1 100644 --- a/gdb/testsuite/gdb.python/py-parameter.exp +++ b/gdb/testsuite/gdb.python/py-parameter.exp @@ -126,6 +126,10 @@ proc_with_prefix test_boolean_parameter { } { "The state of the Test Parameter is off.*" "show parameter off" gdb_test "python print (test_param.value)" "False" \ "test boolean parameter value is False" + gdb_test_no_output "python gdb.set_parameter('print test-param', True)" \ + "set boolean parameter using set_parameter" + gdb_test "python print(gdb.parameter('print test-param'))" "True" \ + "get boolean parameter using gdb.parameter" gdb_test "help show print test-param" \ [multi_line \ "Show the state of the boolean test-param" \