# Copyright 2008, 2009, 2010 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.  
# This test tests the restoration of various kinds of machine state
# to their original values with a process record log.  We will execute
# the program forward while it changes various types of data, and
# then execute it backward to see if their values get restored.
#
# The types of machine state (data) that are tested are:
#   register variable
#   auto variable
#   function static variable
#   module static variable
#   module global variable
#
# TODO:
# various, possibly including...
#   .bss variable, .data variable, ...
#   shared library variable
#   heap variable (pointer)...
#   overlay variables...
#   Test forward replay
#

# This test suitable only for process record-replay
if ![target_info exists gdb,use_precord] {
    return
}

set testfile "machinestate"
set srcfile  ${testfile}.c
set srcfile1 ms1.c

if { [prepare_for_testing $testfile.exp $testfile {machinestate.c ms1.c} ] } {
    return -1
}

set newline "\[\r\n\]+"

set beginmain [gdb_get_line_number " begin main " $srcfile]
set endmain   [gdb_get_line_number " end main "   $srcfile]

# Test begins

runto main

if [target_info exists gdb,use_precord] {
    # Activate process record/replay
    gdb_test_no_output "record" "Turn on process record"
}

gdb_test "break $endmain" \
    "Breakpoint $decimal at .*/$srcfile, line $endmain\." \
    "BP at end of main"

gdb_test "continue" "Breakpoint .* end main .*" "run to end of main"

gdb_test "record save machinestate.precsave" \
    "Saved core file machinestate.precsave with execution log\."  \
    "save process recfile"

gdb_test "kill" "" "Kill process, prepare to debug log file" \
    "Kill the program being debugged\\? \\(y or n\\) " "y"

gdb_test "record restore machinestate.precsave" \
    "Program terminated with signal .*" \
    "reload prec save file"

# Proceed to end of main

gdb_test "break $endmain" \
    "Breakpoint.* file .*/$srcfile, line $endmain.*" ""

gdb_test_multiple "continue" "go to end of main forward" {
    -re ".*Breakpoint $decimal,.*/$srcfile:$endmain.*$gdb_prompt $"  {
	pass "go to end of main forward"
    }
    -re "No more reverse-execution history.* end main .*$gdb_prompt $" {
	pass "go to end of main forward"
    }
}

###
###
###

# Now run backward to each of several points where data is changed.
#

# Module global variable, reverse

set breakloc [gdb_get_line_number \
		  "module_global_state: set breakpoint here" $srcfile]

gdb_test "tbreak $breakloc" ".*/$srcfile, line $breakloc.*" ""
gdb_test "reverse-continue" ".*/$srcfile:$breakloc.*" "reverse to $breakloc"

gdb_test "print aglobal" ".* = 0$newline"  "module global reverse-breakpoint"
gdb_test "step"          ".* module global post-change .*" ""
gdb_test "print aglobal" ".* = 1$newline"  "module global forward past bp"
gdb_test "reverse-step"  ".*$newline$breakloc.*" ""
gdb_test "print aglobal" ".* = 0$newline"  "module global reverse-step to bp"


# Module static variable, reverse

set breakloc [gdb_get_line_number \
		  "module_static_state: set breakpoint here" $srcfile]

gdb_test "tbreak $breakloc" ".*/$srcfile, line $breakloc.*" ""
gdb_test "reverse-continue" ".*/$srcfile:$breakloc.*" "reverse to $breakloc"

gdb_test "print astatic" ".* = 0$newline"  "module static reverse-breakpoint"
gdb_test "step"          ".* module static post-change .*" ""
gdb_test "print astatic" ".* = 1$newline"  "module static forward"
gdb_test "reverse-step"  ".*$newline$breakloc.*" ""
gdb_test "print astatic" ".* = 0$newline"  "module static reverse-step"

# Function static variable, reverse

set breakloc [gdb_get_line_number \
		  "function_static_state: set breakpoint here" $srcfile]

gdb_test "tbreak $breakloc" ".*/$srcfile, line $breakloc.*" ""
gdb_test "reverse-continue" ".*/$srcfile:$breakloc.*" "reverse to $breakloc"

gdb_test "print a"      ".* = 0$newline"  "function static reverse-breakpoint"
gdb_test "step"         ".* function static post-change .*" ""
gdb_test "print a"      ".* = 1$newline"  "function static forward"
gdb_test "reverse-step" ".*$newline$breakloc.*" ""
gdb_test "print a"      ".* = 0$newline"  "function static reverse-step"

# Auto variable, reverse

set breakloc [gdb_get_line_number \
		  "auto_state: set breakpoint here" $srcfile]

gdb_test "tbreak $breakloc" ".*/$srcfile, line $breakloc.*" ""
gdb_test "reverse-continue" ".*/$srcfile:$breakloc.*" "reverse to $breakloc"

gdb_test "print a"      ".* = 0$newline"  "auto var reverse-breakpoint"
gdb_test "step"         ".* auto post-change .*" ""
gdb_test "print a"      ".* = 1$newline"  "auto var forward"
gdb_test "reverse-step" ".*$newline$breakloc.*" ""
gdb_test "print a"      ".* = 0$newline"  "auto var reverse-step"

# Register variable, reverse

set breakloc [gdb_get_line_number \
		  "register_state: set breakpoint here" $srcfile]

gdb_test "tbreak $breakloc" ".*/$srcfile, line $breakloc.*" ""
gdb_test "reverse-continue" ".*/$srcfile:$breakloc.*" "reverse to $breakloc"

gdb_test "print a"      ".* = 0$newline"  "register var reverse-breakpoint"
gdb_test "step"         ".* register post-change .*" ""
gdb_test "print a"      ".* = 1$newline"  "register var step post-change"
gdb_test "reverse-step" ".*$newline$breakloc.*" ""
gdb_test "print a"      ".* = 0$newline"  "register var reverse step-to"

# Proceed to beginning of main

gdb_test "tbreak $beginmain" ".*/$srcfile, line $beginmain.*" ""
gdb_test "reverse-continue"  ".*/$srcfile:$beginmain.*" "reverse to main"

# Now repeat tests while replaying forward.

# Register variable, forward

set breakloc [gdb_get_line_number \
		  "register_state: set breakpoint here" $srcfile]

gdb_test "tbreak $breakloc" ".*/$srcfile, line $breakloc.*" ""
gdb_test "continue"         ".*/$srcfile:$breakloc.*" "forward to $breakloc"

gdb_test "print a"      ".* = 0$newline"  "register var forward-breakpoint"
gdb_test "reverse-step" ".*hide.*" ""
gdb_test "step"         ".*$newline$breakloc.*" ""
gdb_test "print a"      ".* = 0$newline"  "register var forward step-to"
gdb_test "step"         ".* register post-change .*" ""
gdb_test "print a"      ".* = 1$newline"  "register var step post-change"

# Auto variable, forward

set breakloc [gdb_get_line_number \
		  "auto_state: set breakpoint here" $srcfile]

gdb_test "tbreak $breakloc" ".*/$srcfile, line $breakloc.*" ""
gdb_test "continue"         ".*/$srcfile:$breakloc.*" "forward to $breakloc"

gdb_test "print a"      ".* = 0$newline"  "auto var forward-breakpoint"
gdb_test "reverse-step" ".*hide.*" ""
gdb_test "step"         ".*$newline$breakloc.*" ""
gdb_test "print a"      ".* = 0$newline"  "auto var forward step-to"
gdb_test "step"         ".* auto post-change .*" ""
gdb_test "print a"      ".* = 1$newline"  "auto var step post-change"

# Function static variable, forward

set breakloc [gdb_get_line_number \
		  "function_static_state: set breakpoint here" $srcfile]

gdb_test "tbreak $breakloc" ".*/$srcfile, line $breakloc.*" ""
gdb_test "continue"         ".*/$srcfile:$breakloc.*" "forward to $breakloc"

gdb_test "print a"      ".* = 0$newline"  "function static forward-breakpoint"
gdb_test "reverse-step" ".*hide.*" ""
gdb_test "step"         ".*$newline$breakloc.*" ""
gdb_test "print a"      ".* = 0$newline"  "function static forward step-to"
gdb_test "step"         ".* function static post-change .*" ""
gdb_test "print a"      ".* = 1$newline"  "function static step post-change"

# Module static variable, forward

set breakloc [gdb_get_line_number \
		  "module_static_state: set breakpoint here" $srcfile]

gdb_test "tbreak $breakloc" ".*/$srcfile, line $breakloc.*" ""
gdb_test "continue"         ".*/$srcfile:$breakloc.*" "forward to $breakloc"

gdb_test "print astatic" ".* = 0$newline"  "module static forward-breakpoint"
gdb_test "reverse-step"  ".*hide.*" ""
gdb_test "step"          ".*$newline$breakloc.*" ""
gdb_test "print astatic" ".* = 0$newline"  "module static forward step-to"
gdb_test "step"          ".* module static post-change .*" ""
gdb_test "print astatic" ".* = 1$newline"  "module static step post-change"

# Module global variable, forward

set breakloc [gdb_get_line_number \
		  "module_global_state: set breakpoint here" $srcfile]

gdb_test "tbreak $breakloc" ".*/$srcfile, line $breakloc.*" ""
gdb_test "continue"         ".*/$srcfile:$breakloc.*" "forward to $breakloc"

gdb_test "print aglobal" ".* = 0$newline"  "module global forward-breakpoint"
gdb_test "reverse-step"  ".*hide.*" ""
gdb_test "step"          ".*$newline$breakloc.*" ""
gdb_test "print aglobal" ".* = 0$newline"  "module global forward step-to"
gdb_test "step"          ".* module global post-change .*" ""
gdb_test "print aglobal" ".* = 1$newline"  "module global step post-change"

