import gdb-1999-06-28 snapshot
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / logical.exp
CommitLineData
c906108c
SS
1# Copyright (C) 1998 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 2 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, write to the Free Software
15# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16
17# Please email any bugs, comments, and/or additions to this file to:
18# bug-gdb@prep.ai.mit.edu
19
20# This file was written by Elena Zannoni (ezannoni@cygnus.com)
21
22# This file is part of the gdb testsuite
23
24#
25# tests for correctenss of logical operators, associativity and precedence
26# with integer type variables
27#
28
29if $tracelevel then {
30 strace $tracelevel
31 }
32
33#
34# test running programs
35#
36set prms_id 0
37set bug_id 0
38
39set testfile "int-type"
40set srcfile ${testfile}.c
41set binfile ${objdir}/${subdir}/${testfile}
42
43if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } {
44 gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
45 }
46
085dd6e6
JM
47if [get_compiler_info ${binfile}] {
48 return -1;
49}
c906108c
SS
50
51gdb_exit
52gdb_start
53gdb_reinitialize_dir $srcdir/$subdir
54gdb_load ${binfile}
55
56
57#
58# set it up at a breakpoint so we can play with the variable values
59#
60
61if ![runto_main] then {
62 perror "couldn't run to breakpoint"
63 continue
64}
65
66#
67# test expressions with "int" types
68#
69
70gdb_test "set variable x=0" "" "set variable x=0"
71gdb_test "set variable y=0" "" "set variable y=0"
72gdb_test "set variable z=0" "" "set variable z=0"
73
74send_gdb "print x\n"
75gdb_expect {
76 -re ".*0.*$gdb_prompt $" {
77 pass "print value of x"
78 }
79 -re ".*$gdb_prompt $" { fail "print value of x" }
80 timeout { fail "(timeout) print value of x" }
81 }
82
83
84send_gdb "print y\n"
85gdb_expect {
86 -re ".*0.*$gdb_prompt $" {
87 pass "print value of y"
88 }
89 -re ".*$gdb_prompt $" { fail "print value of y" }
90 timeout { fail "(timeout) print value of y" }
91 }
92
93send_gdb "print z\n"
94gdb_expect {
95 -re ".*0.*$gdb_prompt $" {
96 pass "print value of z"
97 }
98 -re ".*$gdb_prompt $" { fail "print value of z" }
99 timeout { fail "(timeout) print value of z" }
100 }
101
102
103# truth tables for && , || , !
104
105send_gdb "print x && y\n"
106gdb_expect {
085dd6e6 107 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
108 pass "print value of x<y"
109 }
110 -re ".*$gdb_prompt $" { fail "print value of x<y" }
111 timeout { fail "(timeout) print value of x<y" }
112 }
113
114
115
116send_gdb "print x || y\n"
117gdb_expect {
085dd6e6 118 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
119 pass "print value of x<=y"
120 }
121 -re ".*$gdb_prompt $" { fail "print value of x<=y" }
122 timeout { fail "(timeout) print value of x<=y" }
123 }
124
125send_gdb "print !x\n"
126gdb_expect {
085dd6e6 127 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
128 pass "print value of x>y"
129 }
130 -re ".*$gdb_prompt $" { fail "print value of x>y" }
131 timeout { fail "(timeout) print value of x>y" }
132 }
133
134gdb_test "set variable y=1" "" "set variable y=1"
135
136send_gdb "print x && y\n"
137gdb_expect {
085dd6e6 138 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
139 pass "print value of x<y"
140 }
141 -re ".*$gdb_prompt $" { fail "print value of x<y" }
142 timeout { fail "(timeout) print value of x<y" }
143 }
144
145
146
147send_gdb "print x || y\n"
148gdb_expect {
085dd6e6 149 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
150 pass "print value of x<=y"
151 }
152 -re ".*$gdb_prompt $" { fail "print value of x<=y" }
153 timeout { fail "(timeout) print value of x<=y" }
154 }
155
156gdb_test "set variable x=1" "" "set variable x=1"
157
158send_gdb "print x && y\n"
159gdb_expect {
085dd6e6 160 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
161 pass "print value of x<y"
162 }
163 -re ".*$gdb_prompt $" { fail "print value of x<y" }
164 timeout { fail "(timeout) print value of x<y" }
165 }
166
167
168
169send_gdb "print x || y\n"
170gdb_expect {
085dd6e6 171 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
172 pass "print value of x<=y"
173 }
174 -re ".*$gdb_prompt $" { fail "print value of x<=y" }
175 timeout { fail "(timeout) print value of x<=y" }
176 }
177
178send_gdb "print !x\n"
179gdb_expect {
085dd6e6 180 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
181 pass "print value of x>y"
182 }
183 -re ".*$gdb_prompt $" { fail "print value of x>y" }
184 timeout { fail "(timeout) print value of x>y" }
185 }
186
187gdb_test "set variable y=0" "" "set variable y=0"
188
189send_gdb "print x && y\n"
190gdb_expect {
085dd6e6 191 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
192 pass "print value of x<y"
193 }
194 -re ".*$gdb_prompt $" { fail "print value of x<y" }
195 timeout { fail "(timeout) print value of x<y" }
196 }
197
198
199
200send_gdb "print x || y\n"
201gdb_expect {
085dd6e6 202 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
203 pass "print value of x<=y"
204 }
205 -re ".*$gdb_prompt $" { fail "print value of x<=y" }
206 timeout { fail "(timeout) print value of x<=y" }
207 }
208
209
210# end truth tables for &&, ||, !
211
212
213# test associativity of && , || , !
214
215gdb_test "set variable x=0" "" "set variable x=0"
216gdb_test "set variable y=0" "" "set variable y=0"
217gdb_test "set variable z=0" "" "set variable z=0"
218
219send_gdb "print x && y && z\n"
220gdb_expect {
085dd6e6 221 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
222 pass "print value of x && y && z (000)"
223 }
224 -re ".*$gdb_prompt $" { fail "print value of x && y && z (000) " }
225 timeout { fail "(timeout) print value of x && y && z (000) " }
226 }
227
228send_gdb "print x || y || z\n"
229gdb_expect {
085dd6e6 230 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
231 pass "print value of x || y || z (000)"
232 }
233 -re ".*$gdb_prompt $" { fail "print value of x || y || z (000)" }
234 timeout { fail "(timeout) print value of x || y || z (000) " }
235 }
236
237send_gdb "print !!x\n"
238gdb_expect {
085dd6e6 239 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
240 pass "print value of !!x (0)"
241 }
242 -re ".*$gdb_prompt $" { fail "print value of !!x (0)" }
243 timeout { fail "(timeout) print value of !!x (0) " }
244 }
245
246
247gdb_test "set variable y=1" "" "set variable y=1"
248
249send_gdb "print x && y && z\n"
250gdb_expect {
085dd6e6 251 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
252 pass "print value of x && y && z (010)"
253 }
254 -re ".*$gdb_prompt $" { fail "print value of x && y && z (010) " }
255 timeout { fail "(timeout) print value of x && y && z (010) " }
256 }
257
258send_gdb "print x || y || z\n"
259gdb_expect {
085dd6e6 260 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
261 pass "print value of x || y || z (010)"
262 }
263 -re ".*$gdb_prompt $" { fail "print value of x || y || z (010)" }
264 timeout { fail "(timeout) print value of x || y || z (010) " }
265 }
266
267
268gdb_test "set variable z=1" "" "set variable z=1"
269
270send_gdb "print x && y && z\n"
271gdb_expect {
085dd6e6 272 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
273 pass "print value of x && y && z (011)"
274 }
275 -re ".*$gdb_prompt $" { fail "print value of x && y && z (011) " }
276 timeout { fail "(timeout) print value of x && y && z (011) " }
277 }
278
279send_gdb "print x || y || z\n"
280gdb_expect {
085dd6e6 281 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
282 pass "print value of x || y || z (011)"
283 }
284 -re ".*$gdb_prompt $" { fail "print value of x || y || z (011)" }
285 timeout { fail "(timeout) print value of x || y || z (011) " }
286 }
287
288
289gdb_test "set variable x=1" "" "set variable x=1"
290
291send_gdb "print x && y && z\n"
292gdb_expect {
085dd6e6 293 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
294 pass "print value of x && y && z (111)"
295 }
296 -re ".*$gdb_prompt $" { fail "print value of x && y && z (111) " }
297 timeout { fail "(timeout) print value of x && y && z (111) " }
298 }
299
300send_gdb "print x || y || z\n"
301gdb_expect {
085dd6e6 302 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
303 pass "print value of x || y || z (111)"
304 }
305 -re ".*$gdb_prompt $" { fail "print value of x || y || z (111)" }
306 timeout { fail "(timeout) print value of x || y || z (111) " }
307 }
308
309send_gdb "print !!x\n"
310gdb_expect {
085dd6e6 311 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
312 pass "print value of !!x (1)"
313 }
314 -re ".*$gdb_prompt $" { fail "print value of !!x (1)" }
315 timeout { fail "(timeout) print value of !!x (1) " }
316 }
317
318
319gdb_test "set variable z=0" "" "set variable z=0"
320
321send_gdb "print x && y && z\n"
322gdb_expect {
085dd6e6 323 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
324 pass "print value of x && y && z (110)"
325 }
326 -re ".*$gdb_prompt $" { fail "print value of x && y && z (110) " }
327 timeout { fail "(timeout) print value of x && y && z (110) " }
328 }
329
330send_gdb "print x || y || z\n"
331gdb_expect {
085dd6e6 332 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
333 pass "print value of x || y || z (110)"
334 }
335 -re ".*$gdb_prompt $" { fail "print value of x || y || z (110)" }
336 timeout { fail "(timeout) print value of x || y || z (110) " }
337 }
338
339
340
341
342gdb_test "set variable y=0" "" "set variable y=0"
343
344send_gdb "print x && y && z\n"
345gdb_expect {
085dd6e6 346 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
347 pass "print value of x && y && z (100)"
348 }
349 -re ".*$gdb_prompt $" { fail "print value of x && y && z (100) " }
350 timeout { fail "(timeout) print value of x && y && z (100) " }
351 }
352
353send_gdb "print x || y || z\n"
354gdb_expect {
085dd6e6 355 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
356 pass "print value of x || y || z (100)"
357 }
358 -re ".*$gdb_prompt $" { fail "print value of x || y || z (100)" }
359 timeout { fail "(timeout) print value of x || y || z (100) " }
360 }
361
362
363
364
365gdb_test "set variable z=1" "" "set variable z=1"
366
367send_gdb "print x && y && z\n"
368gdb_expect {
085dd6e6 369 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
370 pass "print value of x && y && z (101)"
371 }
372 -re ".*$gdb_prompt $" { fail "print value of x && y && z (101) " }
373 timeout { fail "(timeout) print value of x && y && z (101) " }
374 }
375
376send_gdb "print x || y || z\n"
377gdb_expect {
085dd6e6 378 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
379 pass "print value of x || y || z (101)"
380 }
381 -re ".*$gdb_prompt $" { fail "print value of x || y || z (101)" }
382 timeout { fail "(timeout) print value of x || y || z (101) " }
383 }
384
385
386gdb_test "set variable x=0" "" "set variable x=0"
387
388send_gdb "print x && y && z\n"
389gdb_expect {
085dd6e6 390 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
391 pass "print value of x && y && z (001)"
392 }
393 -re ".*$gdb_prompt $" { fail "print value of x && y && z (001) " }
394 timeout { fail "(timeout) print value of x && y && z (001) " }
395 }
396
397send_gdb "print x || y || z\n"
398gdb_expect {
085dd6e6 399 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
400 pass "print value of x || y || z (001)"
401 }
402 -re ".*$gdb_prompt $" { fail "print value of x || y || z (001)" }
403 timeout { fail "(timeout) print value of x || y || z (001) " }
404 }
405
406
407
408
409# test precedence of &&, || ,!
410
411
412send_gdb "print !x && y\n"
413gdb_expect {
085dd6e6 414 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
415 pass "print value of !x && y (00)"
416 }
417 -re ".*$gdb_prompt $" { fail "print value of !x && y (00)" }
418 timeout { fail "(timeout) print value of !x && y (00) " }
419 }
420
421
422gdb_test "set variable x=1" "" "set variable x=1"
423
424
425send_gdb "print !x && y\n"
426gdb_expect {
085dd6e6 427 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
428 pass "print value of !x && y (10)"
429 }
430 -re ".*$gdb_prompt $" { fail "print value of !x && y (10)" }
431 timeout { fail "(timeout) print value of !x && y (10) " }
432 }
433
434
435
436
437gdb_test "set variable y=1" "" "set variable y=1"
438
439send_gdb "print !x || y\n"
440gdb_expect {
085dd6e6 441 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
442 pass "print value of !x || y (11)"
443 }
444 -re ".*$gdb_prompt $" { fail "print value of !x || y (11)" }
445 timeout { fail "(timeout) print value of !x || y (11) " }
446 }
447
448
449gdb_test "set variable x=0" "" "set variable x=0"
450
451
452send_gdb "print !x || y\n"
453gdb_expect {
085dd6e6 454 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
455 pass "print value of !x || y (01)"
456 }
457 -re ".*$gdb_prompt $" { fail "print value of !x || y (01)" }
458 timeout { fail "(timeout) print value of !x || y (01) " }
459 }
460
461
462
463gdb_test "set variable x=1" "" "set variable x=1"
464gdb_test "set variable z=0" "" "set variable z=0"
465
466send_gdb "print x || y && z\n"
467gdb_expect {
085dd6e6 468 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
469 pass "print value of x || y && z (110)"
470 }
471 -re ".*$gdb_prompt $" { fail "print value of x || y && z (110)" }
472 timeout { fail "(timeout) print value of x || y && z (110) " }
473 }
474
475
476gdb_test "set variable y=0" "" "set variable y=0"
477
478
479send_gdb "print x || y && z\n"
480gdb_expect {
085dd6e6 481 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
482 pass "print value of x || y && z (100)"
483 }
484 -re ".*$gdb_prompt $" { fail "print value of x || y && z (100)" }
485 timeout { fail "(timeout) print value of x || y && z (100) " }
486 }
487
488
489
490gdb_test "set variable x=0" "" "set variable x=0"
491
492send_gdb "print x || !y && z\n"
493gdb_expect {
085dd6e6 494 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
495
496 gdb_test "set variable x=1" "" "set variable x=1"
497 send_gdb "print x || !y && z\n"
498 gdb_expect {
085dd6e6 499 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
500 pass "print value of x || !y && z "
501 }
502 -re ".*$gdb_prompt $" { fail "print value of x || !y && z" }
503 timeout { fail "(timeout) print value of x || !y && z " }
504 }
505 }
506 -re ".*$gdb_prompt $" { fail "print value of x || y && z " }
507 timeout { fail "(timeout) print value of x || y && z " }
508 }
509
510
511
512
513
514gdb_test "set variable x=1" "" "set variable x=1"
515gdb_test "set variable y=2" "" "set variable y=2"
516gdb_test "set variable w=3" "" "set variable w=3"
517gdb_test "set variable z=3" "" "set variable z=3"
518
519
520send_gdb "print x > y || w == z\n"
521gdb_expect {
085dd6e6 522 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
523 pass "print value of x > y || w == z"
524 }
525 -re ".*$gdb_prompt $" { fail "print value of x > y || w == z" }
526 timeout { fail "(timeout) print value of x > y || w == z " }
527 }
528
529
530gdb_test "set variable x=1" "" "set variable x=1"
531gdb_test "set variable y=2" "" "set variable y=2"
532gdb_test "set variable w=1" "" "set variable w=1"
533gdb_test "set variable z=3" "" "set variable z=3"
534
535
536send_gdb "print x >= y && w != z\n"
537gdb_expect {
085dd6e6 538 -re ".*$false.*$gdb_prompt $" {
c906108c
SS
539 pass "print value of x >= y || w != z"
540 }
541 -re ".*$gdb_prompt $" { fail "print value of x >= y || w != z" }
542 timeout { fail "(timeout) print value of x >= y || w != z " }
543 }
544
545
546
547gdb_test "set variable x=2" "" "set variable x=2"
548gdb_test "set variable y=2" "" "set variable y=2"
549gdb_test "set variable w=2" "" "set variable w=2"
550gdb_test "set variable z=3" "" "set variable z=3"
551
552
553send_gdb "print ! x > y || w + z\n"
554gdb_expect {
085dd6e6 555 -re ".*$true.*$gdb_prompt $" {
c906108c
SS
556 pass "print value of x > y || w != z"
557 }
558 -re ".*$gdb_prompt $" { fail "print value of x > y || w != z" }
559 timeout { fail "(timeout) print value of x > y || w != z " }
560 }
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
This page took 0.056124 seconds and 4 git commands to generate.