-# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+# Copyright (C) 2011-2018 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
# This file is part of the GDB testsuite. It tests the mechanism
# exposing values to Python.
-if $tracelevel then {
- strace $tracelevel
-}
-
if {[skip_shlib_tests]} {
- untested py-finish-breakpoint.exp
+ untested "skipping shared library tests"
return 0
}
set libfile "py-events-shlib"
set libsrc $srcdir/$subdir/$libfile.c
-set lib_sl $objdir/$subdir/$libfile-nodebug.so
+set lib_sl [standard_output_file $libfile-nodebug.so]
set lib_opts ""
-set testfile "py-finish-breakpoint"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
+standard_testfile
set exec_opts [list debug shlib=$lib_sl]
-if [get_compiler_info ${binfile}] {
+if [get_compiler_info] {
return -1
}
if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts] != ""
|| [gdb_compile $srcdir/$subdir/$srcfile $binfile executable $exec_opts] != ""} {
- untested "Could not compile either $libsrc or $srcdir/$subdir/$srcfile."
+ untested "failed to compile"
return -1
}
# Start with a fresh gdb.
clean_restart ${testfile}
-set python_file ${srcdir}/${subdir}/${testfile}.py
+if { [skip_python_tests] } { continue }
+if { $gdb_py_is_py24 == 1 } {
+ # Python 2.4, 2.5 do not support the "ValueError as e" syntax used in
+ # the py-finish-breakpoint.py script.
+ untested "missing support on Python 2.4 and 2.5"
+ return 0
+}
# Skip all tests if Python scripting is not enabled.
if { [skip_python_tests] } { continue }
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
if ![runto_main] then {
- fail "Cannot run to main."
+ fail "cannot run to main."
return 0
}
+set python_file [gdb_remote_download host \
+ ${srcdir}/${subdir}/${testfile}.py]
+
gdb_test_no_output "set confirm off" "disable confirmation"
gdb_test "source $python_file" "Python script imported.*" \
"import python scripts"
"Temporary breakpoint.*" "set FinishBreakpoint with default frame value"
gdb_test "python finishbp = MyFinishBreakpoint (gdb.parse_and_eval ('a'), gdb.newest_frame ())" \
"Temporary breakpoint.*" "set FinishBreakpoint"
-gdb_test "python print finishbp.return_value" "None.*" \
+gdb_test "python print (finishbp.return_value)" "None.*" \
"check return_value at init"
# check normal bp hit
gdb_test "continue" "MyFinishBreakpoint stop with.*return_value is: -5.*#0.*increase.*" \
"check MyFinishBreakpoint hit"
-gdb_test "python print finishbp.return_value" "-5.*" "check return_value"
+gdb_test "python print (finishbp.return_value)" "-5.*" "check return_value"
-gdb_test "python print finishbp_default.hit_count" "1.*" "check finishBP on default frame has been hit"
-gdb_test "python print finishbp.is_valid()" "False.*"\
+gdb_test "python print (finishbp_default.hit_count)" "1.*" "check finishBP on default frame has been hit"
+gdb_test "python print (finishbp.is_valid())" "False.*"\
"ensure that finish bp is invalid afer normal hit"
# check FinishBreakpoint in main no allowed
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
gdb_test "source $python_file" "Python script imported.*" \
"import python scripts"
set cond_line [gdb_get_line_number "Condition Break."]
if ![runto_main] then {
- fail "Cannot run to main."
+ fail "cannot run to main."
return 0
}
"SimpleFinishBreakpoint init" \
"set finish breakpoint"
gdb_test "continue" "SimpleFinishBreakpoint stop.*" "check FinishBreakpoint hit"
-gdb_test "python print finishBP.return_value" "None" "check return value without debug symbol"
+gdb_test "python print (finishBP.return_value)" "None" "check return value without debug symbol"
#
# Test FinishBreakpoint in function returned by longjmp
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
gdb_test "source $python_file" "Python script imported.*" \
"import python scripts"
"set BP after the jump"
gdb_test "continue" "SimpleFinishBreakpoint out of scope.*" \
"check FinishBP out of scope notification"
-gdb_test "python print finishbp.is_valid()" "False.*"\
+gdb_test "python print (finishbp.is_valid())" "False.*"\
"ensure that finish bp is invalid afer out of scope notification"
#
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
gdb_test "source $python_file" "Python script imported.*" \
"import python scripts"
if ![runto_main] then {
- fail "Cannot run to main."
+ fail "cannot run to main."
return 0
}
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
gdb_test "source $python_file" "Python script imported.*" \
"import python scripts"
if ![runto_main] then {
- fail "Cannot run to main."
+ fail "cannot run to main."
return 0
}
#
clean_restart ${testfile}
-gdb_load_shlibs ${lib_sl}
+gdb_load_shlib ${lib_sl}
gdb_test "source $python_file" "Python script imported.*" \
"import python scripts"
if ![runto_main] then {
- fail "Cannot run to main."
+ fail "cannot run to main."
return 0
}
#
if ![runto "test_exec_exit"] then {
- fail "Cannot run to test_exec_exit."
+ fail "cannot run to test_exec_exit."
return 0
}
#
if ![runto "test_exec_exit"] then {
- fail "Cannot run to test_exec_exit."
+ fail "cannot run to test_exec_exit."
return 0
}