#   Copyright 2005-2021 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/>.  */

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

# Checkpoint support is currently implemented in the Linux native
# target, so only works with "target native".
if { [target_info gdb_protocol] != "" } {
    continue
}

# Must name the source file explicitly, otherwise when driven by
# checkpoints-ns.exp, we'd try compiling checkpoints-ns.c, which
# doesn't exist.
standard_testfile checkpoint.c

set pi_txt [gdb_remote_download host ${srcdir}/${subdir}/pi.txt]
if {[is_remote host]} {
    set copy1_txt copy1.txt
} else {
    set copy1_txt [standard_output_file copy1.txt]
}

if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
	 [list debug "additional_flags=-DPI_TXT=\"$pi_txt\" -DCOPY1_TXT=\"$copy1_txt\""]]} {
     return -1
}

global gdb_prompt

#
# This tests gdb checkpoint and restart.
#

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" \
    " 1 .* 2 .* 3 .* 4 .* 5 .* 6 .* 7 .* 8 .* 9 .* 10 .*" \
    "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

for {set num 1} {$num <= 10} {incr num} {
    gdb_test "restart $num" "if .c == EOF.*" "restart $num three"
    gdb_test "continue" "breakpoint 2.*" "break2 $num one"
    gdb_test "print (long) ftell (out) > 100000" " = 1.*" "outfile still open $num"
}

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

delete_breakpoints
gdb_test "continue" \
    "Deleting copy.*$inferior_exited_re normally.*Switching to.*" \
    "exit, dropped into next fork one"

gdb_test "continue" \
    "Deleting copy.*$inferior_exited_re normally.*Switching to.*" \
    "exit, dropped into next fork two"

gdb_test "continue" \
    "Deleting copy.*$inferior_exited_re normally.*Switching to.*" \
    "exit, dropped into next fork three"

gdb_test "continue" \
    "Deleting copy.*$inferior_exited_re normally.*Switching to.*" \
    "exit, dropped into next fork four"

gdb_test "continue" \
    "Deleting copy.*$inferior_exited_re normally.*Switching to.*" \
    "exit, dropped into next fork five"

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

gdb_test "info checkpoints" " 1 .* 2 .* 3 .* 4 .* 5 .*" \
    "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 (>600)
#

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

runto_main
gdb_breakpoint $break1_loc

gdb_test "commands\nsilent\nif (lines % 2)\ncheckpoint\nend\n  continue\nend" \
    "" \
    "set checkpoint breakpoint"

set prev_timeout $timeout
set timeout [expr $timeout + 120]
verbose "Timeout now $timeout sec."

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

set count 0
set msg "info checkpoints with at least 600 checkpoints"
gdb_test_multiple "info checkpoints" $msg {
    -re "  $decimal process \[^\r\]*\r\n" {
	incr count
	exp_continue
    }
    -re "$gdb_prompt $" {
	if { $count >= 600 } {
	    pass $msg
	} else {
	    fail $msg
	}
    }
}    

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

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

# Restore old timeout
set timeout $prev_timeout
verbose "Timeout now $timeout sec."

#
# Finished: cleanup
#
