
The following patch is based on the previous patch i sent and handles cases of test names that start with an uppercase letter. Test names should start with lowercase unless it starts with the name of a technology, architecture, ISA etc. This first patch addresses cases of test names output explicitly via xfail, kfail, kpass, fail, pass, unsupported, untested and also names set with the pattern "set test" and "set testname". gdb/testsuite/ChangeLog: 2016-12-01 Luis Machado <lgustavo@codesourcery.com> Fix test names starting with uppercase throughout all the files below. * gdb.ada/array_return.exp * gdb.ada/catch_ex.exp * gdb.ada/info_exc.exp * gdb.ada/mi_catch_ex.exp * gdb.ada/mi_dyn_arr.exp * gdb.ada/mi_ex_cond.exp * gdb.ada/mi_exc_info.exp * gdb.ada/mi_interface.exp * gdb.ada/mi_task_arg.exp * gdb.ada/mi_task_info.exp * gdb.ada/mi_var_array.exp * gdb.arch/alpha-step.exp * gdb.arch/amd64-disp-step.exp * gdb.arch/arm-disp-step.exp * gdb.arch/disp-step-insn-reloc.exp * gdb.arch/e500-prologue.exp * gdb.arch/ftrace-insn-reloc.exp * gdb.arch/gdb1558.exp * gdb.arch/i386-bp_permanent.exp * gdb.arch/i386-disp-step.exp * gdb.arch/i386-float.exp * gdb.arch/i386-gnu-cfi.exp * gdb.arch/ia64-breakpoint-shadow.exp * gdb.arch/mips16-thunks.exp * gdb.arch/pa-nullify.exp * gdb.arch/powerpc-aix-prologue.exp * gdb.arch/powerpc-power.exp * gdb.arch/ppc-dfp.exp * gdb.arch/s390-tdbregs.exp * gdb.arch/spu-info.exp * gdb.arch/spu-ls.exp * gdb.arch/thumb-bx-pc.exp * gdb.base/advance.exp * gdb.base/annota-input-while-running.exp * gdb.base/arrayidx.exp * gdb.base/asmlabel.exp * gdb.base/async.exp * gdb.base/attach-wait-input.exp * gdb.base/auto-connect-native-target.exp * gdb.base/batch-preserve-term-settings.exp * gdb.base/bfp-test.exp * gdb.base/bigcore.exp * gdb.base/bp-permanent.exp * gdb.base/break-always.exp * gdb.base/break-fun-addr.exp * gdb.base/break-idempotent.exp * gdb.base/break-main-file-remove-fail.exp * gdb.base/break-probes.exp * gdb.base/break-unload-file.exp * gdb.base/break.exp * gdb.base/call-ar-st.exp * gdb.base/call-rt-st.exp * gdb.base/call-sc.exp * gdb.base/call-signal-resume.exp * gdb.base/call-strs.exp * gdb.base/callexit.exp * gdb.base/callfuncs.exp * gdb.base/catch-gdb-caused-signals.exp * gdb.base/catch-signal-siginfo-cond.exp * gdb.base/catch-syscall.exp * gdb.base/compare-sections.exp * gdb.base/cond-eval-mode.exp * gdb.base/condbreak-call-false.exp * gdb.base/consecutive-step-over.exp * gdb.base/cursal.exp * gdb.base/disabled-location.exp * gdb.base/disasm-end-cu.exp * gdb.base/display.exp * gdb.base/double-prompt-target-event-error.exp * gdb.base/dprintf-bp-same-addr.exp * gdb.base/dprintf-detach.exp * gdb.base/dprintf-next.exp * gdb.base/dprintf-non-stop.exp * gdb.base/dprintf-pending.exp * gdb.base/dso2dso.exp * gdb.base/ending-run.exp * gdb.base/enum_cond.exp * gdb.base/examine-backward.exp * gdb.base/exe-lock.exp * gdb.base/exec-invalid-sysroot.exp * gdb.base/execl-update-breakpoints.exp * gdb.base/execution-termios.exp * gdb.base/fileio.exp * gdb.base/fixsection.exp * gdb.base/foll-exec-mode.exp * gdb.base/foll-exec.exp * gdb.base/fork-running-state.exp * gdb.base/frame-args.exp * gdb.base/fullpath-expand.exp * gdb.base/func-ptr.exp * gdb.base/gcore-relro-pie.exp * gdb.base/gdb1090.exp * gdb.base/gdb1555.exp * gdb.base/global-var-nested-by-dso.exp * gdb.base/gnu-ifunc.exp * gdb.base/hbreak-in-shr-unsupported.exp * gdb.base/hbreak-unmapped.exp * gdb.base/hook-stop.exp * gdb.base/infcall-input.exp * gdb.base/info-fun.exp * gdb.base/info-shared.exp * gdb.base/interrupt-noterm.exp * gdb.base/jit-so.exp * gdb.base/jit.exp * gdb.base/line-symtabs.exp * gdb.base/list.exp * gdb.base/longjmp.exp * gdb.base/macscp.exp * gdb.base/max-value-size.exp * gdb.base/nodebug.exp * gdb.base/nofield.exp * gdb.base/overlays.exp * gdb.base/paginate-after-ctrl-c-running.exp * gdb.base/paginate-bg-execution.exp * gdb.base/paginate-inferior-exit.exp * gdb.base/pending.exp * gdb.base/pr11022.exp * gdb.base/printcmds.exp * gdb.base/ptr-typedef.exp * gdb.base/ptype.exp * gdb.base/randomize.exp * gdb.base/range-stepping.exp * gdb.base/realname-expand.exp * gdb.base/relativedebug.exp * gdb.base/remote.exp * gdb.base/savedregs.exp * gdb.base/sepdebug.exp * gdb.base/set-noassign.exp * gdb.base/shlib-call.exp * gdb.base/shreloc.exp * gdb.base/sigaltstack.exp * gdb.base/sigbpt.exp * gdb.base/siginfo-addr.exp * gdb.base/siginfo-obj.exp * gdb.base/siginfo-thread.exp * gdb.base/signest.exp * gdb.base/signull.exp * gdb.base/sigrepeat.exp * gdb.base/skip.exp * gdb.base/so-impl-ld.exp * gdb.base/solib-corrupted.exp * gdb.base/solib-disc.exp * gdb.base/solib-display.exp * gdb.base/solib-overlap.exp * gdb.base/solib-search.exp * gdb.base/solib-symbol.exp * gdb.base/source-execution.exp * gdb.base/sss-bp-on-user-bp-2.exp * gdb.base/sss-bp-on-user-bp.exp * gdb.base/stack-checking.exp * gdb.base/stale-infcall.exp * gdb.base/step-break.exp * gdb.base/step-line.exp * gdb.base/step-over-exit.exp * gdb.base/step-test.exp * gdb.base/structs.exp * gdb.base/sym-file.exp * gdb.base/symtab-search-order.exp * gdb.base/term.exp * gdb.base/type-opaque.exp * gdb.base/unload.exp * gdb.base/until-nodebug.exp * gdb.base/until.exp * gdb.base/unwindonsignal.exp * gdb.base/watch-cond.exp * gdb.base/watch-non-mem.exp * gdb.base/watch_thread_num.exp * gdb.base/watchpoint-reuse-slot.exp * gdb.base/watchpoint-solib.exp * gdb.base/watchpoint.exp * gdb.btrace/dlopen.exp * gdb.cell/arch.exp * gdb.cell/break.exp * gdb.cell/bt.exp * gdb.cell/core.exp * gdb.cell/data.exp * gdb.cell/dwarfaddr.exp * gdb.cell/ea-cache.exp * gdb.cell/ea-standalone.exp * gdb.cell/ea-test.exp * gdb.cell/f-regs.exp * gdb.cell/fork.exp * gdb.cell/gcore.exp * gdb.cell/mem-access.exp * gdb.cell/ptype.exp * gdb.cell/registers.exp * gdb.cell/sizeof.exp * gdb.cell/solib-symbol.exp * gdb.cell/solib.exp * gdb.compile/compile-tls.exp * gdb.cp/exception.exp * gdb.cp/gdb2495.exp * gdb.cp/local.exp * gdb.cp/mb-inline.exp * gdb.cp/mb-templates.exp * gdb.cp/pr10687.exp * gdb.cp/pr9167.exp * gdb.cp/scope-err.exp * gdb.cp/templates.exp * gdb.cp/virtfunc.exp * gdb.dwarf2/dw2-dir-file-name.exp * gdb.dwarf2/dw2-single-line-discriminators.exp * gdb.fortran/complex.exp * gdb.fortran/library-module.exp * gdb.guile/guile.exp * gdb.guile/scm-cmd.exp * gdb.guile/scm-frame-inline.exp * gdb.guile/scm-objfile.exp * gdb.guile/scm-pretty-print.exp * gdb.guile/scm-symbol.exp * gdb.guile/scm-type.exp * gdb.guile/scm-value.exp * gdb.linespec/keywords.exp * gdb.linespec/ls-errs.exp * gdb.linespec/macro-relative.exp * gdb.linespec/thread.exp * gdb.mi/mi-breakpoint-changed.exp * gdb.mi/mi-dprintf-pending.exp * gdb.mi/mi-fullname-deleted.exp * gdb.mi/mi-logging.exp * gdb.mi/mi-pending.exp * gdb.mi/mi-solib.exp * gdb.mi/new-ui-mi-sync.exp * gdb.mi/user-selected-context-sync.exp * gdb.multi/dummy-frame-restore.exp * gdb.multi/multi-arch-exec.exp * gdb.multi/remove-inferiors.exp * gdb.multi/watchpoint-multi-exit.exp * gdb.opt/solib-intra-step.exp * gdb.perf/backtrace.exp * gdb.perf/single-step.exp * gdb.perf/skip-command.exp * gdb.perf/skip-prologue.exp * gdb.perf/solib.exp * gdb.python/lib-types.exp * gdb.python/py-as-string.exp * gdb.python/py-bad-printers.exp * gdb.python/py-block.exp * gdb.python/py-breakpoint.exp * gdb.python/py-cmd.exp * gdb.python/py-events.exp * gdb.python/py-evthreads.exp * gdb.python/py-finish-breakpoint.exp * gdb.python/py-finish-breakpoint2.exp * gdb.python/py-frame-inline.exp * gdb.python/py-frame.exp * gdb.python/py-inferior.exp * gdb.python/py-infthread.exp * gdb.python/py-mi.exp * gdb.python/py-objfile.exp * gdb.python/py-pp-maint.exp * gdb.python/py-pp-registration.exp * gdb.python/py-prettyprint.exp * gdb.python/py-recurse-unwind.exp * gdb.python/py-shared.exp * gdb.python/py-symbol.exp * gdb.python/py-symtab.exp * gdb.python/py-template.exp * gdb.python/py-type.exp * gdb.python/py-unwind-maint.exp * gdb.python/py-unwind.exp * gdb.python/py-value.exp * gdb.python/python.exp * gdb.reverse/finish-reverse-bkpt.exp * gdb.reverse/insn-reverse.exp * gdb.reverse/next-reverse-bkpt-over-sr.exp * gdb.reverse/solib-precsave.exp * gdb.reverse/solib-reverse.exp * gdb.stabs/gdb11479.exp * gdb.stabs/weird.exp * gdb.threads/fork-child-threads.exp * gdb.threads/fork-plus-threads.exp * gdb.threads/fork-thread-pending.exp * gdb.threads/forking-threads-plus-breakpoint.exp * gdb.threads/hand-call-in-threads.exp * gdb.threads/interrupted-hand-call.exp * gdb.threads/linux-dp.exp * gdb.threads/local-watch-wrong-thread.exp * gdb.threads/next-while-other-thread-longjmps.exp * gdb.threads/non-ldr-exit.exp * gdb.threads/pending-step.exp * gdb.threads/print-threads.exp * gdb.threads/process-dies-while-detaching.exp * gdb.threads/process-dies-while-handling-bp.exp * gdb.threads/pthreads.exp * gdb.threads/queue-signal.exp * gdb.threads/reconnect-signal.exp * gdb.threads/signal-command-handle-nopass.exp * gdb.threads/signal-command-multiple-signals-pending.exp * gdb.threads/signal-delivered-right-thread.exp * gdb.threads/signal-sigtrap.exp * gdb.threads/sigthread.exp * gdb.threads/staticthreads.exp * gdb.threads/stepi-random-signal.exp * gdb.threads/thread-unwindonsignal.exp * gdb.threads/thread_check.exp * gdb.threads/thread_events.exp * gdb.threads/tid-reuse.exp * gdb.threads/tls-nodebug.exp * gdb.threads/tls-shared.exp * gdb.threads/tls-so_extern.exp * gdb.threads/tls.exp * gdb.threads/wp-replication.exp * gdb.trace/actions-changed.exp * gdb.trace/actions.exp * gdb.trace/backtrace.exp * gdb.trace/change-loc.exp * gdb.trace/collection.exp * gdb.trace/deltrace.exp * gdb.trace/disconnected-tracing.exp * gdb.trace/entry-values.exp * gdb.trace/ftrace-lock.exp * gdb.trace/ftrace.exp * gdb.trace/infotrace.exp * gdb.trace/mi-trace-frame-collected.exp * gdb.trace/mi-trace-unavailable.exp * gdb.trace/mi-traceframe-changed.exp * gdb.trace/mi-tracepoint-changed.exp * gdb.trace/mi-tsv-changed.exp * gdb.trace/no-attach-trace.exp * gdb.trace/packetlen.exp * gdb.trace/passc-dyn.exp * gdb.trace/passcount.exp * gdb.trace/pending.exp * gdb.trace/pr16508.exp * gdb.trace/qtro.exp * gdb.trace/range-stepping.exp * gdb.trace/read-memory.exp * gdb.trace/report.exp * gdb.trace/save-trace.exp * gdb.trace/signal.exp * gdb.trace/stap-trace.exp * gdb.trace/status-stop.exp * gdb.trace/strace.exp * gdb.trace/tfile.exp * gdb.trace/tfind.exp * gdb.trace/trace-break.exp * gdb.trace/trace-condition.exp * gdb.trace/trace-enable-disable.exp * gdb.trace/trace-mt.exp * gdb.trace/tracecmd.exp * gdb.trace/tracefile-pseudo-reg.exp * gdb.trace/tspeed.exp * gdb.trace/tstatus.exp * gdb.trace/tsv.exp * gdb.trace/unavailable.exp * gdb.trace/while-dyn.exp * gdb.trace/while-stepping.exp * lib/gdb-guile.exp * lib/gdb.exp * lib/mi-support.exp * lib/pascal.exp * lib/perftest.exp * lib/prelink-support.exp * lib/selftest-support.exp
269 lines
8.4 KiB
Text
269 lines
8.4 KiB
Text
# Copyright (C) 2011-2016 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
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# This file is part of the GDB testsuite. It tests the mechanism
|
|
# exposing values to Python.
|
|
|
|
if {[skip_shlib_tests]} {
|
|
untested py-finish-breakpoint.exp
|
|
return 0
|
|
}
|
|
|
|
load_lib gdb-python.exp
|
|
|
|
set libfile "py-events-shlib"
|
|
set libsrc $srcdir/$subdir/$libfile.c
|
|
set lib_sl [standard_output_file $libfile-nodebug.so]
|
|
set lib_opts ""
|
|
|
|
standard_testfile
|
|
set exec_opts [list debug shlib=$lib_sl]
|
|
|
|
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."
|
|
return -1
|
|
}
|
|
|
|
# Start with a fresh gdb.
|
|
clean_restart ${testfile}
|
|
|
|
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 py-finish-breakpoint.exp
|
|
return 0
|
|
}
|
|
|
|
# Skip all tests if Python scripting is not enabled.
|
|
if { [skip_python_tests] } { continue }
|
|
|
|
#
|
|
# Test FinishBreakpoint in normal conditions
|
|
#
|
|
|
|
clean_restart ${testfile}
|
|
gdb_load_shlib ${lib_sl}
|
|
|
|
if ![runto_main] then {
|
|
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"
|
|
gdb_breakpoint "increase_1"
|
|
gdb_test "continue" "Breakpoint .*at.*" "continue to the function to finish"
|
|
|
|
# set FinishBreakpoint
|
|
|
|
gdb_test "python finishbp_default = gdb.FinishBreakpoint ()" \
|
|
"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.*" \
|
|
"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_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
|
|
|
|
gdb_test "finish" "main.*" "return to main()"
|
|
gdb_test "python MyFinishBreakpoint (None, gdb.selected_frame ())" \
|
|
"ValueError: \"FinishBreakpoint\" not meaningful in the outermost frame..*" \
|
|
"check FinishBP not allowed in main"
|
|
|
|
#
|
|
# Test FinishBreakpoint with no debug symbol
|
|
#
|
|
|
|
clean_restart ${testfile}
|
|
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."
|
|
return 0
|
|
}
|
|
|
|
gdb_test "print do_nothing" "no debug info.*" "ensure that shared lib has no debug info"
|
|
gdb_breakpoint "do_nothing" {temporary}
|
|
gdb_test "continue" "Temporary breakpoint .*in \\.?do_nothing.*" \
|
|
"continue to do_nothing"
|
|
|
|
gdb_test "python finishBP = SimpleFinishBreakpoint(gdb.newest_frame())" \
|
|
"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"
|
|
|
|
#
|
|
# Test FinishBreakpoint in function returned by longjmp
|
|
#
|
|
|
|
clean_restart ${testfile}
|
|
gdb_load_shlib ${lib_sl}
|
|
|
|
gdb_test "source $python_file" "Python script imported.*" \
|
|
"import python scripts"
|
|
|
|
if ![runto call_longjmp_1] then {
|
|
perror "couldn't run to breakpoint call_longjmp"
|
|
continue
|
|
}
|
|
|
|
gdb_test "python finishbp = SimpleFinishBreakpoint(gdb.newest_frame())" \
|
|
"SimpleFinishBreakpoint init" \
|
|
"set finish breakpoint"
|
|
gdb_test "break [gdb_get_line_number "after longjmp."]" "Breakpoint.* at .*" \
|
|
"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.*"\
|
|
"ensure that finish bp is invalid afer out of scope notification"
|
|
|
|
#
|
|
# Test FinishBreakpoint in BP condition evaluation
|
|
# (finish in dummy frame)
|
|
#
|
|
|
|
clean_restart ${testfile}
|
|
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."
|
|
return 0
|
|
}
|
|
|
|
gdb_test "break ${cond_line} if test_1(i,8)" "Breakpoint .* at .*" \
|
|
"set a conditional BP"
|
|
gdb_test "python TestBreakpoint()" "TestBreakpoint init" \
|
|
"set FinishBP in a breakpoint condition"
|
|
gdb_test "continue" \
|
|
"\"FinishBreakpoint\" cannot be set on a dummy frame.*" \
|
|
"don't allow FinishBreakpoint on dummy frames"
|
|
gdb_test "print i" "8" "check stopped location"
|
|
|
|
#
|
|
# Test FinishBreakpoint in BP condition evaluation
|
|
# (finish in normal frame)
|
|
#
|
|
|
|
clean_restart ${testfile}
|
|
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."
|
|
return 0
|
|
}
|
|
|
|
gdb_test "break ${cond_line} if test(i,8)" \
|
|
"Breakpoint .* at .*" "set conditional BP"
|
|
gdb_test "python TestBreakpoint()" "TestBreakpoint init" "set BP in condition"
|
|
|
|
gdb_test "continue" \
|
|
"test don't stop: 1.*test don't stop: 2.*test stop.*Error in testing breakpoint condition.*The program being debugged stopped while in a function called from GDB.*" \
|
|
"stop in condition function"
|
|
|
|
gdb_test "continue" "Continuing.*" "finish condition evaluation"
|
|
gdb_test "continue" "Breakpoint.*" "stop at conditional breakpoint"
|
|
gdb_test "print i" "8" "check stopped location"
|
|
|
|
#
|
|
# Test FinishBreakpoint in explicit inferior function call
|
|
#
|
|
|
|
clean_restart ${testfile}
|
|
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."
|
|
return 0
|
|
}
|
|
|
|
# return address in dummy frame
|
|
|
|
gdb_test "python TestExplicitBreakpoint('increase_1')" "Breakpoint.*at.*" \
|
|
"prepare TestExplicitBreakpoint"
|
|
gdb_test "print increase_1(&i)" \
|
|
"\"FinishBreakpoint\" cannot be set on a dummy frame.*" \
|
|
"don't allow FinishBreakpoint on dummy frames"
|
|
|
|
# return address in normal frame
|
|
|
|
delete_breakpoints
|
|
gdb_test "python TestExplicitBreakpoint(\"increase_1\")" "Breakpoint.*at.*" \
|
|
"prepare TestExplicitBreakpoint"
|
|
gdb_test "print increase(&i)" \
|
|
"SimpleFinishBreakpoint init.*SimpleFinishBreakpoint stop.*The program being debugged stopped while in a function called from GDB.*" \
|
|
"FinishBP stop at during explicit function call"
|
|
|
|
|
|
#
|
|
# Test FinishBreakpoint when inferior exits
|
|
#
|
|
|
|
if ![runto "test_exec_exit"] then {
|
|
fail "cannot run to test_exec_exit."
|
|
return 0
|
|
}
|
|
|
|
gdb_test_no_output "set var self_exec = 0" "switch to exit() test"
|
|
gdb_test "python SimpleFinishBreakpoint(gdb.newest_frame())" "SimpleFinishBreakpoint init" "set FinishBP after the exit()"
|
|
gdb_test "continue" "SimpleFinishBreakpoint out of scope.*" "catch out of scope after exit"
|
|
|
|
#
|
|
# Test FinishBreakpoint when inferior execs
|
|
#
|
|
|
|
if ![runto "test_exec_exit"] then {
|
|
fail "cannot run to test_exec_exit."
|
|
return 0
|
|
}
|
|
|
|
gdb_test "python SimpleFinishBreakpoint(gdb.newest_frame())" "SimpleFinishBreakpoint init" "set FinishBP after the exec"
|
|
gdb_test "catch exec" "Catchpoint.*\(exec\).*" "catch exec"
|
|
gdb_test "continue" "SimpleFinishBreakpoint out of scope.*" "catch out of scope after exec"
|