URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.1/] [gdb/] [testsuite/] [gdb.reverse/] [consecutive-reverse.exp] - Rev 227
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. It tests stepping over# consecutive instructions in reverse.if ![target_info exists gdb,can_reverse] {return}set testfile "consecutive-reverse"set srcfile ${testfile}.cif { [prepare_for_testing $testfile.exp $testfile $srcfile] } {return -1}runto mainif [target_info exists gdb,use_precord] {# Activate process record/replaygdb_test "record" "" "Turn on process record"# FIXME: command ought to acknowledge, so we can test if it succeeded.}gdb_breakpoint foogdb_test "continue" "Breakpoint $decimal, foo .*" \"continue to breakpoint in foo"set foo1_addr 0set foo2_addr 0set stop_addr 0send_gdb "x /2i \$pc\n"gdb_expect {global hexglobal foo1_addrglobal foo2_addrglobal gdb_prompt-re "=> ($hex).*\[\r\n\]+ ($hex).*$gdb_prompt $" {set foo1_addr $expect_out(1,string)set foo2_addr $expect_out(2,string)pass "get breakpoint address for foo"}-re ".*$gdb_prompt $" {fail "get breakpoint address for foo"return 0;}timeout {fail "get breakpoint address for foo (timeout)"return 0;}}gdb_test "break \*$foo2_addr" "Breakpoint $decimal at $foo2_addr: file .*" \"set bp, 2nd instr"set testmsg "stopped at bp, 2nd instr"gdb_test_multiple "step" $testmsg {-re "Breakpoint $decimal, ($hex) in foo.*$gdb_prompt $" {set stop_addr $expect_out(1,string)if [eval expr "$foo2_addr == $stop_addr"] then {pass "stopped at bp, 2nd instr"} else {fail "stopped at bp, 2nd instr (wrong address)"}}}########## Set reverse execution direction# FIXME: command needs to acknowledge, so we can test if it succeeded.gdb_test "set exec-dir reverse" "" "set reverse execution"# Now step backward and hope to hit the first breakpoint.set test_msg "stopped at bp in reverse, 1st instr"gdb_test_multiple "step" "$test_msg" {-re "Breakpoint $decimal, ($hex) in foo.*$gdb_prompt $" {set stop_addr $expect_out(1,string)if [eval expr "$foo1_addr == $stop_addr"] then {pass "$test_msg"} else {fail "$test_msg (wrong address)"}}-re "Breakpoint $decimal, foo.*$gdb_prompt $" {send_gdb "print \$pc == $foo1_addr\n"gdb_expect {-re "$decimal = 1\[\r\n\]+$gdb_prompt $" {pass "$test_msg"}-re "$decimal = 0\[\r\n\]+$gdb_prompt $" {fail "$test_msg (wrong address)"}}}-re ".*$gdb_prompt $" {fail "$test_msg"}}
