#   Copyright 2005 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */

# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu

if $tracelevel then {
	strace $tracelevel
	}

if { ![isnative] } then {
    continue
}

# Until "set follow-fork-mode" and "catch fork" are implemented on
# other targets...
#
if {![istarget "*-*-linux*"]} then {
    continue
}

set prms_id 0
set bug_id 0

set testfile "checkpoint"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

# Start with a fresh gdb

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

global gdb_prompt

#
# This tests gdb checkpoint and restart.
#

remote_download host ${srcdir}/${subdir}/pi.txt pi.txt

runto_main
set break1_loc [gdb_get_line_number "breakpoint 1"]
set break2_loc [gdb_get_line_number "breakpoint 2"]
set break3_loc [gdb_get_line_number "breakpoint 3"]
set break4_loc [gdb_get_line_number "breakpoint 4"]

gdb_breakpoint $break1_loc
gdb_test "continue" "breakpoint 1.*" "break1 start"

gdb_test "checkpoint" "" ""
gdb_test "continue 10" "breakpoint 1.*" "break1 two"

gdb_test "checkpoint" "" ""
gdb_test "continue 10" "breakpoint 1.*" "break1 three"

gdb_test "checkpoint" "" ""
gdb_test "continue 10" "breakpoint 1.*" "break1 four" 

gdb_test "checkpoint" "" ""
gdb_test "continue 10" "breakpoint 1.*" "break1 five"

gdb_test "checkpoint" "" ""
gdb_test "continue 10" "breakpoint 1.*" "break1 six"

gdb_test "checkpoint" "" ""
gdb_test "continue 10" "breakpoint 1.*" "break1 seven"

gdb_test "checkpoint" "" ""
gdb_test "continue 10" "breakpoint 1.*" "break1 eight"

gdb_test "checkpoint" "" ""
gdb_test "continue 10" "breakpoint 1.*" "break1 nine"

gdb_test "checkpoint" "" ""
gdb_test "continue 10" "breakpoint 1.*" "break1 ten"

gdb_test "checkpoint" "" ""

gdb_test "info checkpoints" \
    " 10 .* 9 .* 8 .* 7 .* 6 .* 5 .* 4 .* 3 .* 2 .* 1 .*" \
    "info checkpoints one"

delete_breakpoints
gdb_breakpoint $break2_loc
gdb_test "continue" "breakpoint 2.*" "break2 one"

gdb_test "restart 1" "Switching to .*breakpoint 1.*" "restart 1 one"
gdb_test "print i" " = 78" "verify i 1 one"
gdb_test "step" "if .c == EOF.*" "step in 1 one"
gdb_test "print lines" " = 1.*" "verify lines 1 one"

gdb_test "restart 2" "Switching to .*breakpoint 1.*" "restart 2 one"
gdb_test "step" "if .c == EOF.*" "step in 2 one"
gdb_test "print i + 1 == lines * 79" " = 1" "verify i 2 one"
gdb_test "print lines" " = 11.*" "verify lines 2 one"

gdb_test "restart 3" "Switching to .*breakpoint 1.*" "restart 3 one"
gdb_test "step" "if .c == EOF.*" "step in 3 one"
gdb_test "print i + 1 == lines * 79" " = 1" "verify i 3 one"
gdb_test "print lines" " = 21.*" "verify lines 3 one"

gdb_test "restart 4" "Switching to .*breakpoint 1.*" "restart 4 one"
gdb_test "step" "if .c == EOF.*" "step in 4 one"
gdb_test "print i + 1 == lines * 79" " = 1" "verify i 4 one"
gdb_test "print lines" " = 31.*" "verify lines 4 one"

gdb_test "restart 5" "Switching to .*breakpoint 1.*" "restart 5 one"
gdb_test "step" "if .c == EOF.*" "step in 5 one"
gdb_test "print i + 1 == lines * 79" " = 1" "verify i 5 one"
gdb_test "print lines" " = 41.*" "verify lines 5 one"

gdb_test "restart 6" "Switching to .*breakpoint 1.*" "restart 6 one"
gdb_test "step" "if .c == EOF.*" "step in 6 one"
gdb_test "print i + 1 == lines * 79" " = 1" "verify i 6 one"
gdb_test "print lines" " = 51.*" "verify lines 6 one"

gdb_test "restart 7" "Switching to .*breakpoint 1.*" "restart 7 one"
gdb_test "step" "if .c == EOF.*" "step in 7 one"
gdb_test "print i + 1 == lines * 79" " = 1" "verify i 7 one"
gdb_test "print lines" " = 61.*" "verify lines 7 one"

gdb_test "restart 8" "Switching to .*breakpoint 1.*" "restart 8 one"
gdb_test "step" "if .c == EOF.*" "step in 8 one"
gdb_test "print i + 1 == lines * 79" " = 1" "verify i 8 one"
gdb_test "print lines" " = 71.*" "verify lines 8 one"

gdb_test "restart 9" "Switching to .*breakpoint 1.*" "restart 9 one"
gdb_test "step" "if .c == EOF.*" "step in 9 one"
gdb_test "print i + 1 == lines * 79" " = 1" "verify i 9 one"
gdb_test "print lines" " = 81.*" "verify lines 9 one"

gdb_test "restart 10" "Switching to .*breakpoint 1.*" "restart 10 one"
gdb_test "step" "if .c == EOF.*" "step in 10 one"
gdb_test "print i + 1 == lines * 79" " = 1" "verify i 10 one"
gdb_test "print lines" " = 91.*" "verify lines 10 one"

#
# Now let the files be closed by the original process, 
# and diff them.

gdb_test "restart 0" "Switching to .*breakpoint 2.*" "restart 0 one"
gdb_breakpoint $break3_loc
gdb_test "continue" "breakpoint 3.*" "break3 one"

gdb_test "shell diff -s pi.txt copy1.txt" \
    "Files pi.txt and copy1.txt are identical.*" \
    "Diff input and output one"

#
# And now run from various checkpoints, allowing 
# various amounts of input and output.
#

gdb_breakpoint $break1_loc

gdb_test "restart 1" "Switching to .*c == EOF.*" "restart 1 two"
gdb_test "continue" "" ""
gdb_test "continue 100" "breakpoint 1.*" "breakpoint 1 1 one"
gdb_test "step" "if .c == EOF.*" "step in 1 two"
gdb_test "print lines" " = 102.*" "verify lines 1 two"

gdb_test "restart 2" "Switching to .*c == EOF.*" "restart 2 two"
gdb_test "continue" "" ""
gdb_test "continue 100" "breakpoint 1.*" "breakpoint 1 2 one"
gdb_test "step" "if .c == EOF.*" "step in 2 two"
gdb_test "print lines" " = 112.*" "verify lines 2 two"

gdb_test "restart 3" "Switching to .*c == EOF.*" "restart 3 two"
gdb_test "continue" "" ""
gdb_test "continue 500" "breakpoint 1.*" "breakpoint 1 3 one"
gdb_test "step" "if .c == EOF.*" "step in 3 two"
gdb_test "print lines" " = 522.*" "verify lines 3 two"

gdb_test "restart 4" "Switching to .*c == EOF.*" "restart 4 two"
gdb_test "continue" "" ""
gdb_test "continue 500" "breakpoint 1.*" "breakpoint 1 4 one"
gdb_test "step" "if .c == EOF.*" "step in 4 two"
gdb_test "print lines" " = 532.*" "verify lines 4 two"

gdb_test "restart 5" "Switching to .*c == EOF.*" "restart 5 two"
gdb_test "continue" "" ""
gdb_test "continue 1000" "breakpoint 1.*" "breakpoint 1 5 one"
gdb_test "step" "if .c == EOF.*" "step in 5 two"
gdb_test "print lines" " = 1042.*" "verify lines 5 two"

gdb_test "restart 6" "Switching to .*c == EOF.*" "restart 6 two"
gdb_test "continue" "" ""
gdb_test "continue 1000" "breakpoint 1.*" "breakpoint 1 6 one"
gdb_test "step" "if .c == EOF.*" "step in 6 two"
gdb_test "print lines" " = 1052.*" "verify lines 5 two"

gdb_test "restart 7" "Switching to .*c == EOF.*" "restart 7 two"
gdb_test "continue" "" ""
gdb_test "continue 1100" "breakpoint 1.*" "breakpoint 1 7 one"
gdb_test "step" "if .c == EOF.*" "step in 7 two"
gdb_test "print lines" " = 1162.*" "verify lines 7 two"

gdb_test "shell diff -s pi.txt copy1.txt" \
    "Files pi.txt and copy1.txt are identical.*" \
    "Diff input and output two"

# 
# OK, now allow the original program to delete the output file, 
# and verify that the checkpoints can still write to it.
# 

gdb_test "restart 0" "Switching to .*breakpoint 3.*" "restart 0 one"
gdb_breakpoint $break4_loc
gdb_test "continue" "breakpoint 4.*" "break4 one"

gdb_test "shell diff pi.txt copy1.txt" \
    "diff: copy1.txt: No such file or directory" \
    "delete copy1"

delete_breakpoints
gdb_breakpoint $break2_loc

gdb_test "restart 1" "if .c == EOF.*" "restart 1 three"
gdb_test "continue" "breakpoint 2.*" "break2 1 one"
gdb_test "print ftell (out) > 100000" " = 1.*" "outfile still open 1"

gdb_test "restart 2" "if .c == EOF.*" "restart 1 three"
gdb_test "continue" "breakpoint 2.*" "break2 2 one"
gdb_test "print ftell (out) > 100000" " = 1.*" "outfile still open 2"

gdb_test "restart 3" "if .c == EOF.*" "restart 1 three"
gdb_test "continue" "breakpoint 2.*" "break2 3 one"
gdb_test "print ftell (out) > 100000" " = 1.*" "outfile still open 3"

gdb_test "restart 4" "if .c == EOF.*" "restart 1 three"
gdb_test "continue" "breakpoint 2.*" "break2 4 one"
gdb_test "print ftell (out) > 100000" " = 1.*" "outfile still open 4"

gdb_test "restart 5" "if .c == EOF.*" "restart 1 three"
gdb_test "continue" "breakpoint 2.*" "break2 5 one"
gdb_test "print ftell (out) > 100000" " = 1.*" "outfile still open 5"

gdb_test "restart 6" "if .c == EOF.*" "restart 1 three"
gdb_test "continue" "breakpoint 2.*" "break2 6 one"
gdb_test "print ftell (out) > 100000" " = 1.*" "outfile still open 6"

gdb_test "restart 7" "if .c == EOF.*" "restart 1 three"
gdb_test "continue" "breakpoint 2.*" "break2 7 one"
gdb_test "print ftell (out) > 100000" " = 1.*" "outfile still open 7"

gdb_test "restart 8" "if .c == EOF.*" "restart 1 three"
gdb_test "continue" "breakpoint 2.*" "break2 8 one"
gdb_test "print ftell (out) > 100000" " = 1.*" "outfile still open 8"

gdb_test "restart 9" "if .c == EOF.*" "restart 1 three"
gdb_test "continue" "breakpoint 2.*" "break2 9 one"
gdb_test "print ftell (out) > 100000" " = 1.*" "outfile still open 9"

gdb_test "restart 10" "if .c == EOF.*" "restart 1 three"
gdb_test "continue" "breakpoint 2.*" "break2 10 one"
gdb_test "print ftell (out) > 100000" " = 1.*" "outfile still open 10"

#
# Now confirm that if one fork exits, we automatically switch to another one.
#

delete_breakpoints
gdb_test "continue" \
    "Deleting copy.*Program exited normally.*Switching to.*" \
    "Exit, dropped into next fork one"

gdb_test "continue" \
    "Deleting copy.*Program exited normally.*Switching to.*" \
    "Exit, dropped into next fork two"

gdb_test "continue" \
    "Deleting copy.*Program exited normally.*Switching to.*" \
    "Exit, dropped into next fork three"

gdb_test "continue" \
    "Deleting copy.*Program exited normally.*Switching to.*" \
    "Exit, dropped into next fork four"

gdb_test "continue" \
    "Deleting copy.*Program exited normally.*Switching to.*" \
    "Exit, dropped into next fork five"

#
# There should be still at least five forks left
# 

gdb_test "info checkpoints" " 5 .* 4 .* 3 .* 2 .* 1 .*" \
    "info checkpoints two"

#
# Kill should now terminate all of them.
#

gdb_test "kill" "" "kill all one" \
    "Kill the program being debugged.*y or n. $" "y"

# 
# and confirm that all are gone
#

gdb_test "restart 0" "Not found.*" "no more checkpoint 0"
gdb_test "restart 1" "Not found.*" "no more checkpoint 1"
gdb_test "restart 2" "Not found.*" "no more checkpoint 2"
gdb_test "restart 3" "Not found.*" "no more checkpoint 3"
gdb_test "restart 4" "Not found.*" "no more checkpoint 4"
gdb_test "restart 5" "Not found.*" "no more checkpoint 5"
gdb_test "restart 6" "Not found.*" "no more checkpoint 6"
gdb_test "restart 7" "Not found.*" "no more checkpoint 7"
gdb_test "restart 8" "Not found.*" "no more checkpoint 8"
gdb_test "restart 9" "Not found.*" "no more checkpoint 9"
gdb_test "restart 10" "Not found.*" "no more checkpoint 10"

#
# Now let's try setting a large number of checkpoints (>1000)
#

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

runto_main
gdb_breakpoint $break1_loc

send_gdb "commands\n"
send_gdb "  silent\n"
send_gdb "  if (lines % 2)\n"
send_gdb "    checkpoint\n"
send_gdb "  end\n"
send_gdb "  continue\n"
send_gdb "end\n"

gdb_expect {
    -re ".*$gdb_prompt $" { pass "set checkpoint breakpoint" }
    timeout { fail "(timeout) set checkpoint breakpoint" }
}

gdb_breakpoint $break2_loc
gdb_test "continue" "breakpoint 2.*" "break2 with many checkpoints"

gdb_test "info checkpoints" " 600 .* 0 .*" \
    "info checkpoints with at least 600 checkpoints"

#
# OK, kill 'em all...
#

gdb_test "kill" "" "kill all one" \
    "Kill the program being debugged.*y or n. $" "y"

#
# Finished: cleanup
#

remote_exec build "rm -f pi.txt"
