Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Side by Side Diff: gdb/testsuite/gdb.base/funcargs.exp

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/testsuite/gdb.base/funcargs.c ('k') | gdb/testsuite/gdb.base/gcore.exp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 1992, 1994-2000, 2002-2004, 2007-2012 Free Software 1 # Copyright 1992, 1994-2000, 2002-2004, 2007-2012 Free Software
2 # Foundation, Inc. 2 # Foundation, Inc.
3 3
4 # This program is free software; you can redistribute it and/or modify 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 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 6 # the Free Software Foundation; either version 3 of the License, or
7 # (at your option) any later version. 7 # (at your option) any later version.
8 # 8 #
9 # This program is distributed in the hope that it will be useful, 9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details. 12 # GNU General Public License for more details.
13 # 13 #
14 # You should have received a copy of the GNU General Public License 14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>. 15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 16
17 # This file was written by Fred Fish. (fnf@cygnus.com) 17 # This file was written by Fred Fish. (fnf@cygnus.com)
18 18
19 if $tracelevel {
20 strace $tracelevel
21 }
22
23 19
24 set testfile "funcargs" 20 set testfile "funcargs"
25 set srcfile ${testfile}.c 21 set srcfile ${testfile}.c
26 set binfile ${objdir}/${subdir}/${testfile} 22 set binfile ${objdir}/${subdir}/${testfile}
27 23
28 set compile_flags {debug nowarnings quiet} 24 set compile_flags {debug nowarnings quiet}
29 if [support_complex_tests] { 25 if [support_complex_tests] {
30 lappend compile_flags "additional_flags=-DTEST_COMPLEX" 26 lappend compile_flags "additional_flags=-DTEST_COMPLEX"
31 } 27 }
32 28
33 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $com pile_flags] != "" } { 29 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $com pile_flags] != "" } {
34 untested funcargs.exp 30 untested funcargs.exp
35 return -1 31 return -1
36 } 32 }
37 33
38 # Create and source the file that provides information about the compiler 34 # Create and source the file that provides information about the compiler
39 # used to compile the test case. 35 # used to compile the test case.
40 if [get_compiler_info ${binfile}] { 36 if [get_compiler_info] {
41 return -1; 37 return -1;
42 } 38 }
43 39
44 # 40 #
45 # Locate actual args; integral types. 41 # Locate actual args; integral types.
46 # 42 #
47 43
48 proc integral_args {} { 44 proc integral_args {} {
49 global gdb_prompt 45 global gdb_prompt
50 global det_file 46 global det_file
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 gdb_breakpoint callce 258 gdb_breakpoint callce
263 gdb_breakpoint callcf 259 gdb_breakpoint callcf
264 260
265 # Run; should stop at call1a and print actual arguments. 261 # Run; should stop at call1a and print actual arguments.
266 gdb_run_cmd 262 gdb_run_cmd
267 gdb_expect { 263 gdb_expect {
268 -re ".* callca \\(f1=1 \\+ 2 \\* I, f2=1 \\+ 2 \\* I, f3=1 \\+ 2 \\* I\\ ) .*$gdb_prompt $" { pass "run to call2a" } 264 -re ".* callca \\(f1=1 \\+ 2 \\* I, f2=1 \\+ 2 \\* I, f3=1 \\+ 2 \\* I\\ ) .*$gdb_prompt $" { pass "run to call2a" }
269 timeout { fail "(timeout) run to callca" ; gdb_suppress_tests; } 265 timeout { fail "(timeout) run to callca" ; gdb_suppress_tests; }
270 } 266 }
271 gdb_test "cont" ".* callcb \\(d1=3 \\+ 4 \\* I, d2=3 \\+ 4 \\* I, d3=3 \\+ 4 \\* I\\) .*" "continue to callcb" 267 gdb_test "cont" ".* callcb \\(d1=3 \\+ 4 \\* I, d2=3 \\+ 4 \\* I, d3=3 \\+ 4 \\* I\\) .*" "continue to callcb"
272 gdb_test "cont" ".* callcc \\(ld1=5 \\+ 6 \\* I, ld2=5 \\+ 6 \\* I, ld3=5 \\ + 6 \\* I\\) .*" "continue to callcb" 268 gdb_test "cont" ".* callcc \\(ld1=5 \\+ 6 \\* I, ld2=5 \\+ 6 \\* I, ld3=5 \\ + 6 \\* I\\) .*" "continue to callcc"
273 gdb_test "cont" ".* callcd \\(fc1=1 \\+ 2 \\* I, dc1=3 \\+ 4 \\* I, ldc1=5 \ \+ 6 \\* I\\) .*" "continue to callcd" 269 gdb_test "cont" ".* callcd \\(fc1=1 \\+ 2 \\* I, dc1=3 \\+ 4 \\* I, ldc1=5 \ \+ 6 \\* I\\) .*" "continue to callcd"
274 gdb_test "cont" ".* callce \\(dc1=3 \\+ 4 \\* I, ldc1=5 \\+ 6 \\* I, fc1=1 \ \+ 2 \\* I\\) .*" "continue to callce" 270 gdb_test "cont" ".* callce \\(dc1=3 \\+ 4 \\* I, ldc1=5 \\+ 6 \\* I, fc1=1 \ \+ 2 \\* I\\) .*" "continue to callce"
275 gdb_test "cont" ".* callcf \\(ldc1=5 \\+ 6 \\* I, fc1=1 \\+ 2 \\* I, dc1=3 \ \+ 4 \\* I\\) .*" "continue to callcf" 271 gdb_test "cont" ".* callcf \\(ldc1=5 \\+ 6 \\* I, fc1=1 \\+ 2 \\* I, dc1=3 \ \+ 4 \\* I\\) .*" "continue to callcf"
276 } 272 }
277 273
278 274
279 # 275 #
280 # Locate actual args; _Complex types and integral. 276 # Locate actual args; _Complex types and integral.
281 # 277 #
282 proc complex_integral_args {} { 278 proc complex_integral_args {} {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 325
330 gdb_breakpoint call3a 326 gdb_breakpoint call3a
331 gdb_breakpoint call3b 327 gdb_breakpoint call3b
332 gdb_breakpoint call3c 328 gdb_breakpoint call3c
333 329
334 # Run; should stop at call3a and print actual arguments. 330 # Run; should stop at call3a and print actual arguments.
335 # Try dereferencing the arguments. 331 # Try dereferencing the arguments.
336 332
337 gdb_run_cmd 333 gdb_run_cmd
338 gdb_expect { 334 gdb_expect {
339 » -re ".* call3a \\(cp=$hex \"a.*\", sp=$hex, ip=$hex, lp=$hex\\) .*$gdb_ prompt $" { pass "run to call3a" } 335 » -re ".* call3a \\(cp=$hex <c> \"a.*\", sp=$hex <s>, ip=$hex <i>, lp=$he x <l>\\) .*$gdb_prompt $" { pass "run to call3a" }
340 -re "$gdb_prompt $" { fail "run to call3a" ; gdb_suppress_tests; } 336 -re "$gdb_prompt $" { fail "run to call3a" ; gdb_suppress_tests; }
341 timeout { fail "(timeout) run to call3a" ; gdb_suppress_tests; } 337 timeout { fail "(timeout) run to call3a" ; gdb_suppress_tests; }
342 } 338 }
343 339
344 gdb_test "print *cp" ".* = 97 'a'" 340 gdb_test "print *cp" ".* = 97 'a'"
345 gdb_test "print *sp" ".* = 1" 341 gdb_test "print *sp" ".* = 1"
346 gdb_test "print *ip" ".* = 2" 342 gdb_test "print *ip" ".* = 2"
347 gdb_test "print *lp" ".* = 3" 343 gdb_test "print *lp" ".* = 3"
348 344
349 # Continue; should stop at call3b and print actual arguments. 345 # Continue; should stop at call3b and print actual arguments.
350 # Try dereferencing the arguments. 346 # Try dereferencing the arguments.
351 if [gdb_test "cont" ".* call3b \\(ucp=$hex \"b.*\", usp=$hex, uip=$hex, ulp= $hex\\) .*" "continue to call3b"] { 347 if [gdb_test "cont" ".* call3b \\(ucp=$hex <uc> \"b.*\", usp=$hex <us>, uip= $hex <ui>, ulp=$hex <ul>\\) .*" "continue to call3b"] {
352 gdb_suppress_tests; 348 gdb_suppress_tests;
353 } 349 }
354 350
355 gdb_test "print *ucp" ".* = 98 'b'" 351 gdb_test "print *ucp" ".* = 98 'b'"
356 gdb_test "print *usp" ".* = 6" 352 gdb_test "print *usp" ".* = 6"
357 gdb_test "print *uip" ".* = 7" 353 gdb_test "print *uip" ".* = 7"
358 gdb_test "print *ulp" ".* = 8" 354 gdb_test "print *ulp" ".* = 8"
359 355
360 # Continue; should stop at call3c and print actual arguments. 356 # Continue; should stop at call3c and print actual arguments.
361 # Try dereferencing the arguments. 357 # Try dereferencing the arguments.
362 if [gdb_test "cont" ".* call3c \\(fp=$hex, dp=$hex\\) .*" "continue to call3 c"] { 358 if [gdb_test "cont" ".* call3c \\(fp=$hex <f>, dp=$hex <d>\\) .*" "continue to call3c"] {
363 gdb_suppress_tests; 359 gdb_suppress_tests;
364 } 360 }
365 361
366 gdb_test "print *fp" ".* = 4" 362 gdb_test "print *fp" ".* = 4"
367 gdb_test "print *dp" ".* = 5" 363 gdb_test "print *dp" ".* = 5"
368 364
369 # pass "locate actual args, pointer types" 365 # pass "locate actual args, pointer types"
370 gdb_stop_suppressing_tests; 366 gdb_stop_suppressing_tests;
371 } 367 }
372 368
(...skipping 12 matching lines...) Expand all
385 delete_breakpoints 381 delete_breakpoints
386 382
387 gdb_breakpoint call4a 383 gdb_breakpoint call4a
388 gdb_breakpoint call4b 384 gdb_breakpoint call4b
389 385
390 # Run; should stop at call4a and print actual arguments. 386 # Run; should stop at call4a and print actual arguments.
391 # Try dereferencing the arguments. 387 # Try dereferencing the arguments.
392 388
393 gdb_run_cmd 389 gdb_run_cmd
394 gdb_expect { 390 gdb_expect {
395 » -re ".* call4a \\(stp=$hex\\) .*$gdb_prompt $" { 391 » -re ".* call4a \\(stp=$hex <st>\\) .*$gdb_prompt $" {
396 pass "run to call4a" 392 pass "run to call4a"
397 } 393 }
398 -re "$gdb_prompt $" { fail "run to call4a" ; gdb_suppress_tests; } 394 -re "$gdb_prompt $" { fail "run to call4a" ; gdb_suppress_tests; }
399 timeout { fail "(timeout) run to call4a" ; gdb_suppress_tests; } 395 timeout { fail "(timeout) run to call4a" ; gdb_suppress_tests; }
400 } 396 }
401 397
402 gdb_test "print *stp" ".* = \{s1 = 101, s2 = 102\}" 398 gdb_test "print *stp" ".* = \{s1 = 101, s2 = 102\}"
403 399
404 # Continue; should stop at call4b and print actual arguments. 400 # Continue; should stop at call4b and print actual arguments.
405 401
406 gdb_test "cont" ".* call4b \\(unp=$hex\\) .*" "continue to call4b" 402 gdb_test "cont" ".* call4b \\(unp=$hex <un>\\) .*" "continue to call4b"
407 403
408 # Try dereferencing the arguments. 404 # Try dereferencing the arguments.
409 if { $target_sizeof_long == $target_sizeof_int } { 405 if { $target_sizeof_long == $target_sizeof_int } {
410 gdb_test "print *unp" ".* = \{u1 = 1, u2 = 1\}" \ 406 gdb_test "print *unp" ".* = \{u1 = 1, u2 = 1\}" \
411 "print *unp (sizeof long == sizeof int)" 407 "print *unp (sizeof long == sizeof int)"
412 } elseif { ! $target_bigendian_p } { 408 } elseif { ! $target_bigendian_p } {
413 gdb_test "print *unp" ".* = \{u1 = 1, u2 = 1\}" \ 409 gdb_test "print *unp" ".* = \{u1 = 1, u2 = 1\}" \
414 "print *unp (little-endian, sizeof long != sizeof int)" 410 "print *unp (little-endian, sizeof long != sizeof int)"
415 } elseif { $target_sizeof_long == 8 && $target_sizeof_int == 4 } { 411 } elseif { $target_sizeof_long == 8 && $target_sizeof_int == 4 } {
416 gdb_test "print *unp" ".* = \{u1 = 1, u2 = 4294967296\}" \ 412 gdb_test "print *unp" ".* = \{u1 = 1, u2 = 4294967296\}" \
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after
962 "\[\r\n\]#5 .* recurse \\(a=\{s = 4, i = 4, l = 4\}, depth=4\\) " 958 "\[\r\n\]#5 .* recurse \\(a=\{s = 4, i = 4, l = 4\}, depth=4\\) "
963 "\[\r\n\]#6 .* test_struct_args \\(\\) " 959 "\[\r\n\]#6 .* test_struct_args \\(\\) "
964 "\[\r\n\]#7 .* main \\(.*\\) at " 960 "\[\r\n\]#7 .* main \\(.*\\) at "
965 } 961 }
966 } else { 962 } else {
967 fail "recursive passing of structs by value (sparclet)" 963 fail "recursive passing of structs by value (sparclet)"
968 } 964 }
969 gdb_stop_suppressing_tests; 965 gdb_stop_suppressing_tests;
970 } 966 }
971 967
972 proc funcargs_reload { } {
973 global objdir
974 global subdir
975 global binfile
976 global srcdir
977
978 if [istarget "mips-idt-*"] {
979 # Restart because IDT/SIM runs out of file descriptors.
980 gdb_exit
981 gdb_start
982 gdb_reinitialize_dir $srcdir/$subdir
983 gdb_load ${binfile}
984 }
985 }
986
987 # 968 #
988 # Test for accessing local stack variables in functions which call alloca 969 # Test for accessing local stack variables in functions which call alloca
989 # 970 #
990 proc localvars_after_alloca { } { 971 proc localvars_after_alloca { } {
991 global gdb_prompt 972 global gdb_prompt
992 global hex 973 global hex
993 global decimal 974 global decimal
994 global gcc_compiled 975 global gcc_compiled
995 976
996 if { ! [ runto localvars_after_alloca ] } then { gdb_suppress_tests; } 977 if { ! [ runto localvars_after_alloca ] } then { gdb_suppress_tests; }
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
1231 set target_bigendian_p 1 1212 set target_bigendian_p 1
1232 # pass silently 1213 # pass silently
1233 } 1214 }
1234 } 1215 }
1235 1216
1236 # Perform tests 1217 # Perform tests
1237 1218
1238 gdb_test_no_output "set print frame-arguments all" 1219 gdb_test_no_output "set print frame-arguments all"
1239 1220
1240 integral_args 1221 integral_args
1241 funcargs_reload
1242 unsigned_integral_args 1222 unsigned_integral_args
1243 funcargs_reload
1244 if {![target_info exists gdb,skip_float_tests]} { 1223 if {![target_info exists gdb,skip_float_tests]} {
1245 float_and_integral_args 1224 float_and_integral_args
1246 } 1225 }
1247 1226
1248 # Test _Complex type here if supported. 1227 # Test _Complex type here if supported.
1249 if [support_complex_tests] { 1228 if [support_complex_tests] {
1250 funcargs_reload
1251 complex_args 1229 complex_args
1252 1230
1253 funcargs_reload
1254 complex_integral_args 1231 complex_integral_args
1255 1232
1256 if {![target_info exists gdb,skip_float_tests]} { 1233 if {![target_info exists gdb,skip_float_tests]} {
1257 funcargs_reload
1258 complex_float_integral_args 1234 complex_float_integral_args
1259 } 1235 }
1260 } 1236 }
1261 1237
1262 funcargs_reload
1263 pointer_args 1238 pointer_args
1264 funcargs_reload
1265 structs_by_reference 1239 structs_by_reference
1266 funcargs_reload
1267 structs_by_value 1240 structs_by_value
1268 funcargs_reload
1269 discard_and_shuffle 1241 discard_and_shuffle
1270 funcargs_reload
1271 shuffle_round_robin 1242 shuffle_round_robin
1272 funcargs_reload
1273 recursive_structs_by_value 1243 recursive_structs_by_value
1274 funcargs_reload
1275 localvars_after_alloca 1244 localvars_after_alloca
1276 funcargs_reload
1277 call_after_alloca 1245 call_after_alloca
1278 funcargs_reload
1279 localvars_in_indirect_call 1246 localvars_in_indirect_call
1280 funcargs_reload
1281 test_stepping_over_trampolines 1247 test_stepping_over_trampolines
1282 1248
1283 set timeout $prev_timeout 1249 set timeout $prev_timeout
OLDNEW
« no previous file with comments | « gdb/testsuite/gdb.base/funcargs.c ('k') | gdb/testsuite/gdb.base/gcore.exp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698