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