OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gdb-7.2/] [gdb-7.2-or32-1.0rc1/] [gdb/] [testsuite/] [gdb.reverse/] [until-precsave.exp] - Blame information for rev 341

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 330 jeremybenn
# Copyright 2008, 2009, 2010 Free Software Foundation, Inc.
2
 
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 3 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program.  If not, see .  */
15
 
16
# This file is part of the GDB testsuite.  It tests 'until' and
17
# 'advance' in precord logfile.
18
 
19
# This test suitable only for process record-replay
20
if ![target_info exists gdb,use_precord] {
21
    return
22
}
23
 
24
set testfile "until-reverse"
25
set srcfile ${testfile}.c
26
set srcfile1 ur1.c
27
 
28
if { [prepare_for_testing $testfile.exp $testfile {until-reverse.c ur1.c} ] } {
29
    return -1
30
}
31
 
32
set bp_location1  [gdb_get_line_number "set breakpoint 1 here"]
33
set bp_location7  [gdb_get_line_number "set breakpoint 7 here"]
34
set bp_location9  [gdb_get_line_number "set breakpoint 9 here" "$srcfile1"]
35
set bp_location19 [gdb_get_line_number "set breakpoint 19 here"]
36
set bp_location20 [gdb_get_line_number "set breakpoint 20 here"]
37
set bp_location21 [gdb_get_line_number "set breakpoint 21 here"]
38
 
39
runto main
40
 
41
if [target_info exists gdb,use_precord] {
42
    # Activate process record/replay
43
    gdb_test_no_output "record" "Turn on process record"
44
}
45
 
46
set end_of_main [gdb_get_line_number "set breakpoint 10a here" ]
47
gdb_test "break $end_of_main" \
48
    "Breakpoint $decimal at .*/$srcfile, line $end_of_main\." \
49
    "BP at end of main"
50
 
51
gdb_test "continue" "Breakpoint .* set breakpoint 10a here .*" "run to end of main"
52
 
53
gdb_test "record save until.precsave" \
54
    "Saved core file until.precsave with execution log\."  \
55
    "save process recfile"
56
 
57
gdb_test "kill" "" "Kill process, prepare to debug log file" \
58
    "Kill the program being debugged\\? \\(y or n\\) " "y"
59
 
60
gdb_test "record restore until.precsave" \
61
    "Program terminated with signal .*" \
62
    "reload core file"
63
 
64
# Verify that plain vanilla "until " works.
65
#
66
gdb_test "until $bp_location1" \
67
    "main .* at .*:$bp_location1.*" \
68
    "until line number"
69
 
70
# Advance up to factorial, outer invocation
71
#
72
gdb_test "advance factorial" \
73
    "factorial .value=6..*$srcfile:$bp_location7.*" \
74
    "advance to factorial"
75
 
76
# At this point, 'until' should continue the inferior up to when all the
77
# inner invocations of factorial() are completed and we are back at this
78
# frame.
79
#
80
gdb_test "until $bp_location19" \
81
    "factorial .value=720.*${srcfile}:$bp_location19.*" \
82
    "until factorial, recursive function"
83
 
84
# Finish out to main scope
85
#
86
gdb_test "finish" \
87
    " in main .*$srcfile:$bp_location1.*" \
88
    "finish to main"
89
 
90
# Advance to a function called by main (marker2)
91
#
92
gdb_test "advance marker2" \
93
    "marker2 .a=43.*$srcfile1:$bp_location9.*" \
94
    "advance to marker2"
95
 
96
# Now issue an until with another function, not called by the current
97
# frame, as argument. This should not work, i.e. the program should
98
# stop at main, the caller, where we put the 'guard' breakpoint.
99
#
100
set test_msg "until func, not called by current frame"
101
gdb_test_multiple "until marker3" "$test_msg" {
102
    -re "main .*at .*${srcfile}:$bp_location20.*$gdb_prompt $" {
103
        pass "$test_msg"
104
    }
105
    -re "main .*at .*${srcfile}:$bp_location21.*$gdb_prompt $" {
106
        pass "$test_msg"
107
    }
108
}
109
 
110
###
111
###
112
###
113
 
114
# Set reverse execution direction
115
 
116
gdb_test_no_output "set exec-dir reverse" "set reverse execution"
117
 
118
#
119
# We should now be at main, after the return from marker2.
120
# "Advance" backward into marker2.
121
#
122
 
123
gdb_test "advance marker2" \
124
    "marker2 .a=43.*$srcfile1:$bp_location9.*" \
125
    "reverse-advance to marker2"
126
 
127
# Finish out to main scope (backward)
128
 
129
gdb_test "finish" \
130
    " in main .*$srcfile:$bp_location20.*" \
131
    "reverse-finish from marker2"
132
 
133
# Advance backward to last line of factorial (outer invocation)
134
 
135
gdb_test "advance $bp_location19" \
136
    "factorial .value=720.*${srcfile}:$bp_location19.*" \
137
    "reverse-advance to final return of factorial"
138
 
139
# Now do "until" across the recursive calls,
140
# ending up in the same frame where we are now.
141
 
142
gdb_test "until $bp_location7" \
143
    "factorial .value=6..*$srcfile:$bp_location7.*" \
144
    "reverse-until to entry of factorial"

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.