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/] [until-reverse.exp] - Rev 478
Go to most recent revision | 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 'until' and# 'advance' in reverse debugging.if ![target_info exists gdb,can_reverse] {return}set testfile "until-reverse"set srcfile ${testfile}.cset srcfile1 ur1.cif { [prepare_for_testing $testfile.exp $testfile {until-reverse.c ur1.c} ] } {return -1}set bp_location1 [gdb_get_line_number "set breakpoint 1 here"]set bp_location7 [gdb_get_line_number "set breakpoint 7 here"]set bp_location9 [gdb_get_line_number "set breakpoint 9 here" "$srcfile1"]set bp_location19 [gdb_get_line_number "set breakpoint 19 here"]set bp_location20 [gdb_get_line_number "set breakpoint 20 here"]set bp_location21 [gdb_get_line_number "set breakpoint 21 here"]runto mainif [target_info exists gdb,use_precord] {# Activate process record/replaygdb_test_no_output "record" "Turn on process record"}# Verify that plain vanilla "until <location>" works.#gdb_test "until $bp_location1" \"main .* at .*:$bp_location1.*" \"until line number"# Advance up to factorial, outer invocation#gdb_test "advance factorial" \"factorial .value=6..*$srcfile:$bp_location7.*" \"advance to factorial"# At this point, 'until' should continue the inferior up to when all the# inner invocations of factorial() are completed and we are back at this# frame.#gdb_test "until $bp_location19" \"factorial .value=720.*${srcfile}:$bp_location19.*" \"until factorial, recursive function"# Finish out to main scope#gdb_test "finish" \" in main .*$srcfile:$bp_location1.*" \"finish to main"# Advance to a function called by main (marker2)#gdb_test "advance marker2" \"marker2 .a=43.*$srcfile1:$bp_location9.*" \"advance to marker2"# Now issue an until with another function, not called by the current# frame, as argument. This should not work, i.e. the program should# stop at main, the caller, where we put the 'guard' breakpoint.#set test_msg "until func, not called by current frame"gdb_test_multiple "until marker3" "$test_msg" {-re "main .*at .*${srcfile}:$bp_location20.*$gdb_prompt $" {pass "$test_msg"}-re "main .*at .*${srcfile}:$bp_location21.*$gdb_prompt $" {pass "$test_msg"}}########## Set reverse execution directiongdb_test_no_output "set exec-dir reverse" "set reverse execution"## We should now be at main, after the return from marker2.# "Advance" backward into marker2.#gdb_test "advance marker2" \"marker2 .a=43.*$srcfile1:$bp_location9.*" \"reverse-advance to marker2"# Finish out to main scope (backward)gdb_test "finish" \" in main .*$srcfile:$bp_location20.*" \"reverse-finish from marker2"# Advance backward to last line of factorial (outer invocation)gdb_test "advance $bp_location19" \"factorial .value=720.*${srcfile}:$bp_location19.*" \"reverse-advance to final return of factorial"# Now do "until" across the recursive calls,# ending up in the same frame where we are now.gdb_test "until $bp_location7" \"factorial .value=6..*$srcfile:$bp_location7.*" \"reverse-until to entry of factorial"
Go to most recent revision | Compare with Previous | Blame | View Log
