aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2021-09-29 15:53:52 +0200
committerTom de Vries <tdevries@suse.de>2021-09-29 15:53:52 +0200
commit6767cc642cffc86848887f9bdd1ffe57d93ef563 (patch)
tree924a860dffbe3d72c91abf776237373819ff2194
parentf15ec499bf8c5328679e3f745b78ef03b83d6510 (diff)
downloadgdb-6767cc642cffc86848887f9bdd1ffe57d93ef563.zip
gdb-6767cc642cffc86848887f9bdd1ffe57d93ef563.tar.gz
gdb-6767cc642cffc86848887f9bdd1ffe57d93ef563.tar.bz2
[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 "<string>", 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.
-rw-r--r--gdb/testsuite/gdb.python/py-breakpoint.exp10
1 files changed, 9 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.python/py-breakpoint.exp b/gdb/testsuite/gdb.python/py-breakpoint.exp
index 857480d..bd99452 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"
}