# This testcase is part of GDB, the GNU debugger.

# Copyright 2008-2020 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/>.

standard_testfile

if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
     return -1
}

if ![runto_main] then {
   fail "can't run to main"
   return 0
}

set bp_location [gdb_get_line_number "set breakpoint here"]

gdb_test "break $bp_location" \
    "Breakpoint.*at.* file .*$srcfile, line $bp_location\\." \
    "breakpoint line number"

gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, main \\(\\) at .*$srcfile:$bp_location.*set breakpoint here.*" \
    "run until breakpoint set at a line number"

gdb_test "next 2" ".*place2.*" "next 2 (1)"
gdb_test "next 2" ".*place3.*" "next 2 (2)"
gdb_test "next 2" ".*place2.*" "next 2 (3)"
gdb_test "next 2" ".*place3.*" "next 2 (4)"
gdb_test "next 2" ".*place2.*" "next 2 (5)"
gdb_test "next 2" ".*place3.*" "next 2 (6)"

return 0
