URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.2/] [gdb/] [testsuite/] [gdb.reverse/] [machinestate-precsave.exp] - Rev 330
Compare with Previous | Blame | View Log
# 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-replayif ![target_info exists gdb,use_precord] {return}set testfile "machinestate"set srcfile ${testfile}.cset srcfile1 ms1.cif { [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 beginsrunto mainif [target_info exists gdb,use_precord] {# Activate process record/replaygdb_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 maingdb_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, reverseset 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, reverseset 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, reverseset 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, reverseset 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, reverseset 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 maingdb_test "tbreak $beginmain" ".*/$srcfile, line $beginmain.*" ""gdb_test "reverse-continue" ".*/$srcfile:$beginmain.*" "reverse to main"# Now repeat tests while replaying forward.# Register variable, forwardset 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, forwardset 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, forwardset 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, forwardset 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, forwardset 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"
