# Copyright (C) 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 proper handling for
# breakpoint creation failure.

load_lib gdb-python.exp

standard_testfile

if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
    return -1
}

# Skip all tests if Python scripting is not enabled.
if { [skip_python_tests] } { continue }

clean_restart "${testfile}"
if ![runto_main] {
    perror "could not run to main"
    continue
}

# The following will create a breakpoint Python wrapper whose construction will
# abort: the requested symbol is not defined.  GDB should not keep a reference
# to the wrapper; however it used to...
gdb_test "source py-breakpoint-create-fail.py"

# ... and when it did, as a result, the following breakpoint creation (not
# initiated by the Python API) would dereference the already-freed Python
# breakpoint wrapper, resulting in undefined behavior, sometimes observed as a
# gdb crash, and other times causing the next stop to invoke the Python wrapper
# "stop" method for the object that is not supposed to exist.
gdb_test "break foo"

set test "continuing to foo"
gdb_test_multiple "continue" "$test" {
    -re "MyBP\.stop was invoked\!.*$gdb_prompt $" {
        fail "$test"
    }
    -re "Continuing.*Breakpoint 2, foo.*$gdb_prompt $" {
        pass "$test"
    }
}
