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

# Copyright 1997-2004, 2007-2012 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/>.

# use this to debug:
#
#log_user 1

# ending-run.exp -- Expect script to test ending a test run in gdb

if { [prepare_for_testing ending-run.exp ending-run] } {
    return -1
}
remote_exec build "rm -f core"

# CHFts23469: Test that you can "clear" a bp set at
# a line _before_ the routine (which will default to the
# first line in the routine, which turns out to correspond
# to the prolog--that's another bug...)
#

gdb_test "b ending-run.c:1" ".*Breakpoint.*ending-run.c, line 1.*" \
	"bpt at line before routine"

gdb_test "b ending-run.c:14" \
	".*Note.*also.*Breakpoint 2.*ending-run.c, line 14.*" \
	"b ending-run.c:14, one"

# Set up to go to the next-to-last line of the program
#
gdb_test "b ending-run.c:31" ".*Breakpoint 3.*ending-run.c, line 31.*"

# Expect to hit the bp at line "1", but symbolize this
# as line "13".  Then try to clear it--this should work.
#
gdb_run_cmd
gdb_test "" ".*Breakpoint.*1.*callee.*14.*" "run"

gdb_test "cle" ".*Deleted breakpoints 1 2.*" "clear worked"
gdb_test_multiple "i b" "cleared bp at line before routine" {
    -re ".* breakpoint .* breakpoint .*$gdb_prompt $" { 
	fail "cleared bp at line before routine" 
    }
    -re ".*3.*main.*31.*$gdb_prompt $" { 
	pass "cleared bp at line before routine" 
    }
}

# Test some other "clear" combinations
#
gdb_test "b ending-run.c:1" ".*Breakpoint.*4.*"
gdb_test "b ending-run.c:14" ".*Note.*also.*Breakpoint.*5.*" "b ending-run.c:14, two"
gdb_test "cle ending-run.c:14" \
	".*Deleted breakpoint 5.*" "Cleared 2 by line"

gdb_test_multiple "info line ending-run.c:14" "" {
    -re ".*address (0x\[0-9a-fA-F]*).*$gdb_prompt $" {
        set line_nine $expect_out(1,string)
        gdb_test "b ending-run.c:14" ".*Breakpoint 6.*ending-run.c, line 14.*"
        gdb_test "b *$line_nine" ".*Note.*also.*Breakpoint 7.*" "Breakpoint 7 at *ending-run.c:14"
        gdb_test "cle" ".*Deleted breakpoints 4 6 7.*" "Clear 2 by default"
    }
    -re ".*$gdb_prompt $" {
        fail "need to fix test for new compile outcome"
    }
}

gdb_test_multiple "i b" "all set to continue" {
    -re ".* breakpoint .* breakpoint .*$gdb_prompt $" {
        fail "all set to continue (didn't clear bps)" 
    }
    -re ".*3.*main.*31.*$gdb_prompt $" {
        pass "all set to continue"
    }
    -re ".*$gdb_prompt $" {
        fail "all set to continue (missing bp at end)"
    }
}


# See if we can step out with control.  The "1 2 3" stuff
# is output from the program.
#
if ![gdb_skip_stdio_test "cont"] {
    gdb_test "cont" ".*1 2 7 14 23 34 47 62 79.*Breakpoint.*31.*"
} else {
    gdb_test "cont" ".*Breakpoint.*31.*"
}

if ![gdb_skip_stdio_test "Step to return"] {
    gdb_test "next" ".*Goodbye!.*32.*" \
	    "Step to return"
} else {
    gdb_test "next" ".*" ""
}

set old_timeout $timeout
set timeout 50
set program_exited 0
set nexted 0

gdb_test_multiple "next" "step out of main" {
    -re "33\[ \t\]+\}.*$gdb_prompt $" {
	# sometimes we stop at the closing brace, if so, do another next
	if { $nexted } {
	    fail "step out of main"
	} else {
	    set nexted 1
	    send_gdb "next\n"
	    exp_continue
	}
    }
    -re ".*Unable to find return pc for this frame.*$gdb_prompt $" {
	fail "step out of main"
	gdb_test "n" ".*" ""
    }
    -re ".*in.*start.*$gdb_prompt $" { 
	pass "step out of main"
    }
    -re ".*in.*bsp_trap.*$gdb_prompt $" { 
	pass "step out of main"
    }
    -re ".*in.*init.*$gdb_prompt $" { 
	# This is what happens on sparc64-elf ultra.
	pass "step out of main"
    }
    -re ".*in.*dll_crt0_1.*$gdb_prompt $" {
	# This is what happens on Cygwin.
	pass "step out of main"
    }
    -re ".*WinMain.*$gdb_prompt $" {
	# This is what happens on mingw32ce.
	pass "step out of main"
    }
    -re ".*$inferior_exited_re normally.*$gdb_prompt $" {
	# This is what happens on Linux i86 (and I would expect others)
	set program_exited 1
	pass "step out of main"
    }
    -re ".*in .nope ().*$gdb_prompt $" {
	# This is what happens on Solaris currently -sts 1999-08-25
	pass "step out of main"
    }
    -re ".*in _int_reset ().*$gdb_prompt $" {
	# This is what happens on Sanyo XStormy16
	pass "step out of main"
    }
    -re ".*init ().*$gdb_prompt $" {
	# This is what happens on many Mips targets
	pass "step out of main"
    }
    -re ".*in ..change.mode ().*$gdb_prompt $" {
	# This is what happens on ARM in thumb mode -fn 2000-02-01
	pass "step out of main"
    }
    -re ".*__rt_entry.* ().*$gdb_prompt $" {
	# This is what happens on the ARM RVDS runtime
	pass "step out of main"
    }
    -re ".*in.*\\\$START\\\$.*from.*dld.sl.*$gdb_prompt $" { 
	pass "step out of main"
    }
    -re ".*in __wrap__?main ().*$gdb_prompt $" {
	pass "step out of main"
    }
    -re "__setup_argv_for_main (.*).*$gdb_prompt $" {
	# On sh, another wrapper function (start_l) exists, so
	# another `next' is necessary.
	gdb_test "next" ".*in start_l ().*" "step out of main"
    }
    -re "E32Main (.*).*$gdb_prompt $" {
	# On SymbianOS there's a different function which calls main.
	pass "step out of main"
    }
    -re ".*in.*currently asm.*$gdb_prompt $" { 
        pass "step out of main"
    }
    -re "_*start\[0-9\]* \\(\[^)\]*\\).*$gdb_prompt $" {
        pass "step out of main"
    }
    -re ".*Program received signal SIGTRAP.*$gdb_prompt $" {
        pass "step out of main"
    }
    -re ".*in.*__uClibc_main.*$gdb_prompt $" {
	# This is what happens on system using uClibc.
	pass "step out of main"
    }
}

# When we're talking to a program running on a real stand-alone board,
# every BSP's exit function behaves differently, so there's no single
# way to tell whether we've exited gracefully or not.  So don't run
# these tests when use_gdb_stub is set, or when we're running under Cygmon.
set program_exited_normally 0
set program_not_exited 0
set program_in_exit 0
if {!$use_gdb_stub
    && (! [target_info exists use_cygmon] || ! [target_info use_cygmon])} {
    global program_exited;
    if {[eval expr $program_exited == 0]} {
	gdb_test_multiple "n" "step to end of run" {
	    -re "$inferior_exited_re normally.*$gdb_prompt $" {
		# If we actually have debug info for the start function,
		# then we won't get the "Single-stepping until function
		# exit" message.
		pass "step to end of run"
		set program_exited_normally 1
	    }
	    -re "Single.*EXIT code 0\r\n.*$inferior_exited_re normally.*$gdb_prompt $" {
		pass "step to end of run (status wrapper)"
		set program_exited_normally 1
	    }
	    -re "Single.*EXIT code 0\r\n.*$gdb_prompt $" {
		pass "step to end of run (status wrapper)"
	    }
	    -re ".*Single.*$inferior_exited_re.*$gdb_prompt $" {
		pass "step to end of run"
		set program_exited_normally 1
	    }
	    -re ".*Single.*in exit.*from.*dld.sl.*$gdb_prompt $" {
		pass "step to end of run" 
		set program_in_exit 1
	    }
	    -re ".*Single.*_int_reset.*$gdb_prompt $" {
	        pass "step to end of run"
		if {![istarget "xstormy16-*-*"]} {
		    set program_exited_normally 1
		}
	    }
	}   
    }

    if {$program_in_exit} {
	if {[gdb_test "c" ".*" "continue after exit"] == 0} {
	    set program_exited_normally 1
	}
    } else {
	unsupported "continue after exit"
    }

    if {$program_exited_normally} {
        gdb_test "n" ".*The program is not being run.*" "don't step after run"
    } elseif {$program_not_exited} {
	unresolved "don't step after run"
    } else {
	unsupported "don't step after run"
    }

    set exec_output [remote_exec host "ls core"]

    if [ regexp "core not found" $exec_output]  {
	pass "No core dumped on quit"
    } else {
	if [ regexp "No such file or directory" $exec_output] {
	    pass "ls: core (No core dumped on quit)"
	} else {
	    remote_exec build "rm -f core"
	    fail "ls: core (Core dumped on quit)"
	}
    }
}

set timeout $old_timeout

#remote_exec build "rm -f ${binfile}"
return 0




