OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.2/] [gdb/] [testsuite/] [gdb.base/] [pending.exp] - Blame information for rev 394

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 330 jeremybenn
#   Copyright 2003, 2004, 2005, 2007, 2008, 2009, 2010
2
#   Free Software Foundation, Inc.
3
 
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 3 of the License, or
7
# (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program.  If not, see .
16
 
17
# This file was created by Jeff Johnston. (jjohnstn@redhat.com)
18
 
19
if $tracelevel then {
20
    strace $tracelevel
21
}
22
 
23
#
24
# test running programs
25
#
26
 
27
if {[skip_shlib_tests]} {
28
    return 0
29
}
30
 
31
set testfile "pending"
32
set libfile "pendshr"
33
set srcfile $testfile.c
34
set libsrc  $srcdir/$subdir/$libfile.c
35
set binfile $objdir/$subdir/$testfile
36
set lib_sl  $objdir/$subdir/$libfile.sl
37
 
38
set lib_opts  debug
39
set exec_opts [list debug shlib=$lib_sl]
40
 
41
if [get_compiler_info ${binfile}] {
42
    return -1
43
}
44
 
45
if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts] != ""
46
     || [gdb_compile $srcdir/$subdir/$srcfile $binfile executable $exec_opts] != ""} {
47
    untested "Could not compile either $libsrc or $srcdir/$subdir/$srcfile."
48
    return -1
49
}
50
 
51
# Start with a fresh gdb.
52
 
53
gdb_exit
54
gdb_start
55
gdb_reinitialize_dir $srcdir/$subdir
56
 
57
gdb_test_multiple "break pendfunc1" "set pending breakpoint" {
58
     -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" {
59
            gdb_test "y" "Breakpoint.*pendfunc1.*pending." "set pending breakpoint (without symbols)"
60
     }
61
}
62
 
63
gdb_test "info break" \
64
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
65
\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendfunc1.*" \
66
"single pending breakpoint info (without symbols)"
67
 
68
gdb_load ${binfile}
69
gdb_load_shlibs $lib_sl
70
 
71
set pendfunc1_loc [gdb_get_line_number "y = x + 4" ${libfile}.c]
72
 
73
gdb_run_cmd
74
 
75
gdb_test "" \
76
".*Breakpoint.*pendfunc1.*at.*pendshr.c:$pendfunc1_loc.*y = x \\+ 4.*" \
77
"run to resolved breakpoint 1 (without symbols)"
78
 
79
# Restart with a fresh gdb.
80
 
81
gdb_exit
82
gdb_start
83
gdb_reinitialize_dir $srcdir/$subdir
84
 
85
gdb_load ${binfile}
86
gdb_load_shlibs $lib_sl
87
 
88
if [target_info exists gdb_stub] {
89
    gdb_step_for_stub;
90
}
91
#
92
# Test setting, querying, and modifying pending breakpoints
93
#
94
 
95
gdb_test_multiple "break pendfunc1" "set pending breakpoint" {
96
     -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" {
97
            gdb_test "y" "Breakpoint.*pendfunc1.*pending." "set pending breakpoint"
98
     }
99
}
100
 
101
gdb_test "info break" \
102
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
103
\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendfunc1.*" \
104
"single pending breakpoint info"
105
 
106
#
107
# Test breaking at existing function
108
#
109
 
110
set mainline [gdb_get_line_number "break main here"]
111
 
112
gdb_test "break main" \
113
    "Breakpoint.*at.* file .*$srcfile, line $mainline.*" \
114
    "breakpoint function"
115
 
116
gdb_test "info break" \
117
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
118
\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendfunc1.*
119
\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline" \
120
"pending plus real breakpoint info"
121
 
122
 
123
#
124
# Test not setting a pending breakpoint
125
#
126
gdb_test "break pendfunc2" \
127
    "" \
128
    "Don't set pending breakpoint" \
129
    ".*Make breakpoint pending.*y or \\\[n\\\]. $" \
130
    "n"
131
 
132
#
133
# Add condition to pending breakpoint
134
#
135
 
136
gdb_test_no_output "condition 1 k == 1"
137
 
138
gdb_test "info break" \
139
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
140
\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendfunc1.*
141
\[\t \]+stop only if k == 1.*
142
\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline" \
143
"pending plus condition"
144
 
145
#
146
# Disable pending breakpoint
147
#
148
 
149
gdb_test_no_output "disable 1"
150
 
151
gdb_test "info break" \
152
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
153
\[0-9\]+\[\t \]+breakpoint     keep n.*PENDING.*pendfunc1.*
154
\[\t \]+stop only if k == 1.*
155
\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline" \
156
"pending disabled"
157
 
158
#
159
# Add commands to pending breakpoint
160
#
161
gdb_test "commands 1\nprint k\nend" "" \
162
    "Set commands for pending breakpoint"
163
 
164
gdb_test "info break" \
165
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
166
\[0-9\]+\[\t \]+breakpoint     keep n.*PENDING.*pendfunc1.*
167
\[\t \]+stop only if k == 1.*
168
\[\t \]+print k.*
169
\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline" \
170
"pending disabled plus commands"
171
 
172
#
173
# Try a pending break for a line in a source file with a condition
174
#
175
 
176
set bp2_loc [gdb_get_line_number "y = x + 4" ${libfile}.c]
177
gdb_test_multiple "break pendshr.c:$bp2_loc if x > 3" "Set pending breakpoint 2" {
178
     -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" {
179
            gdb_test "y" "Breakpoint.*pendshr.c:$bp2_loc.*pending." \
180
                "Set pending breakpoint 2"
181
     }
182
}
183
 
184
gdb_test "info break" \
185
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
186
\[0-9\]+\[\t \]+breakpoint     keep n.*PENDING.*pendfunc1.*
187
\[\t \]+stop only if k == 1.*
188
\[\t \]+print k.*
189
\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline.*
190
\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendshr.c:$bp2_loc if x > 3.*" \
191
"multiple pending breakpoints"
192
 
193
 
194
#
195
# Try a pending break for a line in a source file with ignore count:
196
#
197
 
198
set bp3_loc [gdb_get_line_number "printf" ${libfile}.c]
199
gdb_test_multiple "break pendshr.c:$bp3_loc" "Set pending breakpoint 3" {
200
     -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" {
201
            gdb_test "y" "Breakpoint.*pendshr.c:$bp3_loc.*pending." \
202
                "Set pending breakpoint 3"
203
     }
204
}
205
 
206
gdb_test {ignore $bpnum 2} "Will ignore next 2 crossings of breakpoint .*" \
207
    "set ignore count on pending breakpoint 3"
208
 
209
gdb_test "info break" \
210
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
211
\[0-9\]+\[\t \]+breakpoint     keep n.*PENDING.*pendfunc1.*
212
\[\t \]+stop only if k == 1.*
213
\[\t \]+print k.*
214
\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline.*
215
\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendshr.c:$bp2_loc if x > 3.*
216
\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*pendshr.c:$bp3_loc.*ignore next 2 hits.*" \
217
"multiple pending breakpoints 2"
218
 
219
#
220
# Run to main which should resolve a pending breakpoint
221
#
222
 
223
gdb_run_cmd
224
gdb_test "" \
225
".*Breakpoint.*, main.*$mainline.*" \
226
"running to main"
227
 
228
#
229
# Re-enable the first pending breakpoint which should resolve
230
#
231
 
232
gdb_test_no_output "enable 1" \
233
"re-enabling pending breakpoint that can resolve instantly"
234
 
235
#
236
# Continue to verify conditionals and commands for breakpoints are honored
237
#
238
 
239
gdb_test "continue" \
240
".*Breakpoint.*pendfunc1.*at.*pendshr.c:$bp2_loc.*4;" \
241
"continue to resolved breakpoint 2"
242
 
243
gdb_test "continue" \
244
".*Breakpoint.*pendfunc1.*at.*pendshr.c:$bp2_loc.*
245
\[$\]1 = 1." \
246
"continue to resolved breakpoint 1"
247
 
248
#
249
# Disable the other two breakpoints, and continue to the one with
250
# the ignore count.  Make sure you hit it the third time, x should
251
# be 3 then.
252
#
253
 
254
gdb_test "disable 7" "" "Disable other breakpoints"
255
gdb_test "disable 5" "" "Disable other breakpoints"
256
 
257
gdb_test "continue" \
258
         ".*Breakpoint.*pendfunc1.*\\\(x=3\\\) at.*pendshr.c:$bp3_loc.*printf.*;" \
259
"continue to resolved breakpoint 3"
260
 
261
delete_breakpoints
262
 
263
gdb_breakpoint "main"
264
 
265
#
266
# Set non-existent pending breakpoint
267
#
268
gdb_test_multiple "break imaginary" "set imaginary pending breakpoint" {
269
     -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" {
270
            gdb_test "y" "Breakpoint.*imaginary.*pending." \
271
                "set imaginary pending breakpoint"
272
     }
273
}
274
 
275
#
276
# rerun program and make sure that any pending breakpoint remains and no
277
# error messages are issued for the missing function
278
#
279
 
280
rerun_to_main
281
 
282
gdb_test "info break" \
283
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
284
\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:$mainline.*
285
\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*imaginary.*" \
286
"verify pending breakpoint after restart"

powered by: WebSVN 2.1.0

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