From: Tom de Vries Date: Wed, 29 Sep 2021 13:53:52 +0000 (+0200) Subject: [gdb/testsuite] Fix gdb.python/py-breakpoint.exp with python 2 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6767cc642cffc86848887f9bdd1ffe57d93ef563;p=binutils-gdb.git [gdb/testsuite] Fix gdb.python/py-breakpoint.exp with python 2 With a gdb build using python 2.7, I run into: ... (gdb) python \ gdb.events.breakpoint_modified.connect(lambda bp: print(bp.enabled))^M File "", line 1^M gdb.events.breakpoint_modified.connect(lambda bp: print(bp.enabled))^M ^^M SyntaxError: invalid syntax^M Error while executing Python code.^M (gdb) FAIL: gdb.python/py-breakpoint.exp: test_bkpt_auto_disable: \ trap breakpoint_modified event ... This is caused by the following: - a lambda function body needs to be an expression - in python 2, print is a statement, while in python 3 it's a function - a function call is an expression, and a statement is not. Fix this by defining a function print_bp_enabled: ... def print_bp_enabled (bp): print (bp.enabled) end ... and using that instead. Tested on x86_64-linux. --- diff --git a/gdb/testsuite/gdb.python/py-breakpoint.exp b/gdb/testsuite/gdb.python/py-breakpoint.exp index 857480d4b61..bd99452dd5f 100644 --- a/gdb/testsuite/gdb.python/py-breakpoint.exp +++ b/gdb/testsuite/gdb.python/py-breakpoint.exp @@ -816,7 +816,15 @@ proc_with_prefix test_bkpt_auto_disable { } { set mult_line [gdb_get_line_number "Break at multiply."] gdb_breakpoint ${mult_line} gdb_test_no_output "enable count 1 2" "one shot enable" - gdb_test_no_output "python gdb.events.breakpoint_modified.connect(lambda bp: print(bp.enabled))" \ + # Python 2 doesn't support print in lambda function, so use a named + # function instead. + gdb_test_multiline "Define print_bp_enabled" \ + "python" "" \ + "def print_bp_enabled (bp):" "" \ + " print (bp.enabled)" "" \ + "end" "" + gdb_test_no_output \ + "python gdb.events.breakpoint_modified.connect(print_bp_enabled)" \ "trap breakpoint_modified event" gdb_test "continue" "False.*" "auto-disabling after enable count reached" }