1# Copyright 1998, 1999 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# tests for all the assignemnt operators
25# with mixed types and with int type variables
26#
27
28if $tracelevel then {
29	strace $tracelevel
30	}
31
32#
33# test running programs
34#
35set prms_id 0
36set bug_id 0
37
38set testfile "all-types"
39set srcfile ${testfile}.c
40set binfile ${objdir}/${subdir}/${testfile}
41
42if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } {
43     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
44    }
45
46
47
48gdb_exit
49gdb_start
50gdb_reinitialize_dir $srcdir/$subdir
51gdb_load ${binfile}
52
53
54#
55# set it up at a breakpoint so we can play with the variable values
56#
57
58if ![runto_main] then {
59    perror "couldn't run to breakpoint"
60    continue
61}
62
63gdb_test "next" "return 0;" "continuing after dummy()"
64
65send_gdb "print v_int=57\n"
66gdb_expect {
67    -re ".*57.*$gdb_prompt $" {
68        send_gdb "print v_int\n"
69        gdb_expect {
70            -re ".*57.*$gdb_prompt $" {
71                pass "v_int=57"
72              }
73            -re ".*$gdb_prompt $" { fail "v_int=57" }
74            timeout           { fail "(timeout) v_int=57" }
75         }
76         }
77    -re ".*$gdb_prompt $" { fail "v_int=57" }
78    timeout           { fail "(timeout) v_int=57" }
79  }
80
81
82gdb_test "set variable v_int = 6" "" "set v_int to 6"
83
84
85send_gdb "print v_int+=57\n"
86gdb_expect {
87    -re ".*63.*$gdb_prompt $" {
88        send_gdb "print v_int\n"
89        gdb_expect {
90            -re ".*63.*$gdb_prompt $" {
91                pass "v_int+=57"
92              }
93            -re ".*$gdb_prompt $" { fail "v_int+=57" }
94            timeout           { fail "(timeout) v_int+=57" }
95         }
96         }
97    -re ".*$gdb_prompt $" { fail "v_int+=57" }
98    timeout           { fail "(timeout) v_int+=57" }
99  }
100
101gdb_test "set variable v_int = 6" "" "set v_int to 6"
102
103send_gdb "print v_int-=57\n"
104gdb_expect {
105    -re ".*-51.*$gdb_prompt $" {
106        send_gdb "print v_int\n"
107        gdb_expect {
108            -re ".*-51.*$gdb_prompt $" {
109                pass "v_int-=57"
110              }
111            -re ".*$gdb_prompt $" { fail "v_int-=57" }
112            timeout           { fail "(timeout) v_int-=57" }
113         }
114         }
115    -re ".*$gdb_prompt $" { fail "v_int-=57" }
116    timeout           { fail "(timeout) v_int-=57" }
117  }
118
119gdb_test "set variable v_int = 6" "" "set v_int to 6"
120
121send_gdb "print v_int*=5\n"
122gdb_expect {
123    -re ".*30.*$gdb_prompt $" {
124        send_gdb "print v_int\n"
125        gdb_expect {
126            -re ".*30.*$gdb_prompt $" {
127                pass "v_int*=5"
128              }
129            -re ".*$gdb_prompt $" { fail "v_int*=5" }
130            timeout           { fail "(timeout) v_int*=5" }
131         }
132         }
133    -re ".*$gdb_prompt $" { fail "v_int*=5" }
134    timeout           { fail "(timeout) v_int*=5" }
135  }
136
137gdb_test "set variable v_int = 6" "" "set v_int to 6"
138
139send_gdb "print v_int/=4\n"
140gdb_expect {
141    -re ".*1.*$gdb_prompt $" {
142        send_gdb "print v_int\n"
143        gdb_expect {
144            -re ".*1.*$gdb_prompt $" {
145                pass "v_int/=4"
146              }
147            -re ".*$gdb_prompt $" { fail "v_int/=4" }
148            timeout           { fail "(timeout) v_int/=4" }
149         }
150         }
151    -re ".*$gdb_prompt $" { fail "v_int/=4" }
152    timeout           { fail "(timeout) v_int/=4" }
153  }
154
155
156
157gdb_test "set variable v_int = 6" "" "set v_int to 6"
158
159send_gdb "print v_int%=4\n"
160gdb_expect {
161    -re ".*2.*$gdb_prompt $" {
162        send_gdb "print v_int\n"
163        gdb_expect {
164            -re ".*2.*$gdb_prompt $" {
165                pass "v_int%=4"
166              }
167            -re ".*$gdb_prompt $" { fail "v_int%=4" }
168            timeout           { fail "(timeout) v_int%=4" }
169         }
170         }
171    -re ".*$gdb_prompt $" { fail "v_int%=4" }
172    timeout           { fail "(timeout) v_int%=4" }
173  }
174
175
176
177gdb_test "set variable v_int = 6" "" "set v_int to 6"
178
179
180
181send_gdb "print v_int+=v_char\n"
182gdb_expect {
183    -re ".*71.*$gdb_prompt $" {
184        send_gdb "print v_int\n"
185        gdb_expect {
186            -re ".*71.*$gdb_prompt $" {
187                pass "v_int+=char"
188              }
189            -re ".*$gdb_prompt $" { fail "v_int+=v_char" }
190            timeout           { fail "(timeout) v_int+=v_char" }
191         }
192         }
193    -re ".*$gdb_prompt $" { fail "v_int+=v_char" }
194    timeout           { fail "(timeout) v_int+=v_char" }
195  }
196
197
198gdb_test "set variable v_int = 6" "" "set v_int to 6"
199
200
201
202send_gdb "print v_int+=v_signed_char\n"
203gdb_expect {
204    -re ".*72.*$gdb_prompt $" {
205        send_gdb "print v_int\n"
206        gdb_expect {
207            -re ".*72.*$gdb_prompt $" {
208                pass "v_int+=signed_char"
209              }
210            -re ".*$gdb_prompt $" { fail "v_int+=v_signed_char" }
211            timeout           { fail "(timeout) v_int+=v_signed_char" }
212         }
213         }
214    -re ".*$gdb_prompt $" { fail "v_int+=v_signed_char" }
215    timeout           { fail "(timeout) v_int+=v_signed_char" }
216  }
217
218
219gdb_test "set variable v_int = 6" "" "set v_int to 6"
220
221
222
223send_gdb "print v_int+=v_unsigned_char\n"
224gdb_expect {
225    -re ".*73.*$gdb_prompt $" {
226        send_gdb "print v_int\n"
227        gdb_expect {
228            -re ".*73.*$gdb_prompt $" {
229                pass "v_int+=unsigned_char"
230              }
231            -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_char" }
232            timeout           { fail "(timeout) v_int+=v_unsigned_char" }
233         }
234         }
235    -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_char" }
236    timeout           { fail "(timeout) v_int+=v_unsigned_char" }
237  }
238
239
240gdb_test "set variable v_int = 6" "" "set v_int to 6"
241
242
243
244send_gdb "print v_int+=v_short\n"
245gdb_expect {
246    -re ".*9.*$gdb_prompt $" {
247        send_gdb "print v_int\n"
248        gdb_expect {
249            -re ".*9.*$gdb_prompt $" {
250                pass "v_int+=short"
251              }
252            -re ".*$gdb_prompt $" { fail "v_int+=v_short" }
253            timeout           { fail "(timeout) v_int+=v_short" }
254         }
255         }
256    -re ".*$gdb_prompt $" { fail "v_int+=v_short" }
257    timeout           { fail "(timeout) v_int+=v_short" }
258  }
259
260
261gdb_test "set variable v_int = 6" "" "set v_int to 6"
262
263
264
265send_gdb "print v_int+=v_signed_short\n"
266gdb_expect {
267    -re ".*10.*$gdb_prompt $" {
268        send_gdb "print v_int\n"
269        gdb_expect {
270            -re ".*10.*$gdb_prompt $" {
271                pass "v_int+=signed_short"
272              }
273            -re ".*$gdb_prompt $" { fail "v_int+=v_signed_short" }
274            timeout           { fail "(timeout) v_int+=v_signed_short" }
275         }
276         }
277    -re ".*$gdb_prompt $" { fail "v_int+=v_signed_short" }
278    timeout           { fail "(timeout) v_int+=v_signed_short" }
279  }
280
281
282gdb_test "set variable v_int = 6" "" "set v_int to 6"
283
284
285
286send_gdb "print v_int+=v_unsigned_short\n"
287gdb_expect {
288    -re ".*11.*$gdb_prompt $" {
289        send_gdb "print v_int\n"
290        gdb_expect {
291            -re ".*11.*$gdb_prompt $" {
292                pass "v_int=+unsigned_short"
293              }
294            -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_short" }
295            timeout           { fail "(timeout) v_int+=v_unsigned_short" }
296         }
297         }
298    -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_short" }
299    timeout           { fail "(timeout) v_int+=v_unsigned_short" }
300  }
301
302
303gdb_test "set variable v_int = 6" "" "set v_int to 6"
304
305
306
307send_gdb "print v_int+=v_signed_int\n"
308gdb_expect {
309    -re ".*13.*$gdb_prompt $" {
310        send_gdb "print v_int\n"
311        gdb_expect {
312            -re ".*13.*$gdb_prompt $" {
313                pass "v_int+=signed_int"
314              }
315            -re ".*$gdb_prompt $" { fail "v_int+=v_signed_int" }
316            timeout           { fail "(timeout) v_int+=v_signed_int" }
317         }
318         }
319    -re ".*$gdb_prompt $" { fail "v_int+=v_signed_int" }
320    timeout           { fail "(timeout) v_int+=v_signed_int" }
321  }
322
323
324gdb_test "set variable v_int = 6" "" "set v_int to 6"
325
326
327
328send_gdb "print v_int+=v_unsigned_int\n"
329gdb_expect {
330    -re ".*14.*$gdb_prompt $" {
331        send_gdb "print v_int\n"
332        gdb_expect {
333            -re ".*14.*$gdb_prompt $" {
334                pass "v_int+=unsigned_int"
335              }
336            -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_int" }
337            timeout           { fail "(timeout) v_int+=v_unsigned_int" }
338         }
339         }
340    -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_int" }
341    timeout           { fail "(timeout) v_int+=v_unsigned_int" }
342  }
343
344
345gdb_test "set variable v_int = 6" "" "set v_int to 6"
346
347
348
349send_gdb "print v_int+=v_long\n"
350gdb_expect {
351    -re ".*15.*$gdb_prompt $" {
352        send_gdb "print v_int\n"
353        gdb_expect {
354            -re ".*15.*$gdb_prompt $" {
355                pass "v_int+=long"
356              }
357            -re ".*$gdb_prompt $" { fail "v_int+=v_long" }
358            timeout           { fail "(timeout) v_int+=v_long" }
359         }
360         }
361    -re ".*$gdb_prompt $" { fail "v_int+=v_long" }
362    timeout           { fail "(timeout) v_int+=v_long" }
363  }
364
365
366gdb_test "set variable v_int = 6" "" "set v_int to 6"
367
368
369
370send_gdb "print v_int+=v_signed_long\n"
371gdb_expect {
372    -re ".*16.*$gdb_prompt $" {
373        send_gdb "print v_int\n"
374        gdb_expect {
375            -re ".*16.*$gdb_prompt $" {
376                pass "v_int+=signed_long"
377              }
378            -re ".*$gdb_prompt $" { fail "v_int+=v_signed_long" }
379            timeout           { fail "(timeout) v_int+=v_signed_long" }
380         }
381         }
382    -re ".*$gdb_prompt $" { fail "v_int+=v_signed_long" }
383    timeout           { fail "(timeout) v_int+=v_signed_long" }
384  }
385
386
387gdb_test "set variable v_int = 6" "" "set v_int to 6"
388
389
390send_gdb "print v_int+=v_unsigned_long\n"
391gdb_expect {
392    -re ".*17.*$gdb_prompt $" {
393        send_gdb "print v_int\n"
394        gdb_expect {
395            -re ".*17.*$gdb_prompt $" {
396                pass "v_int+=unsigned_long"
397              }
398            -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_long" }
399            timeout           { fail "(timeout) v_int+=v_unsigned_long" }
400         }
401         }
402    -re ".*$gdb_prompt $" { fail "v_int+=v_unsigned_long" }
403    timeout           { fail "(timeout) v_int+=v_unsigned_long" }
404  }
405
406
407gdb_test "set variable v_int = 6" "" "set v_int to 6"
408
409
410send_gdb "print v_int+=v_float\n"
411gdb_expect {
412    -re ".*106\r\n$gdb_prompt $" {
413        send_gdb "print v_int\n"
414        gdb_expect {
415            -re ".*106\r\n$gdb_prompt $" {
416                pass "v_int+=v_float"
417              }
418            -re ".*$gdb_prompt $" { fail "v_int+=v_float" }
419            timeout           { fail "(timeout) v_int+=v_float" }
420         }
421         }
422    -re ".*$gdb_prompt $" { fail "v_int+=v_float" }
423    timeout           { fail "(timeout) v_int+=v_float" }
424  }
425
426
427gdb_test "set variable v_int = 6" "" "set v_int to 6"
428
429
430send_gdb "print v_int+=v_double\n"
431gdb_expect {
432    -re ".*206\r\n$gdb_prompt $" {
433        send_gdb "print v_int\n"
434        gdb_expect {
435            -re ".*206\r\n$gdb_prompt $" {
436                pass "v_int+=double"
437              }
438            -re ".*$gdb_prompt $" { fail "v_int+=v_double" }
439            timeout           { fail "(timeout) v_int+=v_double" }
440         }
441         }
442    -re ".*$gdb_prompt $" { fail "v_int+=v_signed_long" }
443    timeout           { fail "(timeout) v_int+=v_double" }
444  }
445
446
447