X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Ftestsuite%2Fgdb.base%2Fcallfuncs.exp;h=e3f49f98b1752a2dcab103d5cd7a097aaf873014;hb=ecb33a79498ac5cdf7f284b64585e343bd1bbba3;hp=d7f175c1b2bc7cde88a7612b178d77392f7a5ed6;hpb=7052e42c350bb65bec5794ea02359992e9c38a2b;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/testsuite/gdb.base/callfuncs.exp b/gdb/testsuite/gdb.base/callfuncs.exp index d7f175c1b2..e3f49f98b1 100644 --- a/gdb/testsuite/gdb.base/callfuncs.exp +++ b/gdb/testsuite/gdb.base/callfuncs.exp @@ -1,5 +1,4 @@ -# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, -# 2004, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# Copyright 1992-2013 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,13 +16,7 @@ # This file was written by Fred Fish. (fnf@cygnus.com) # and modified by Bob Manson. (manson@cygnus.com) -if $tracelevel then { - strace $tracelevel -} - -set testfile "callfuncs" -set srcfile ${testfile}.c -set binfile ${objdir}/${subdir}/${testfile} +standard_testfile set compile_flags {debug} if [support_complex_tests] { @@ -38,8 +31,8 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $com # Create and source the file that provides information about the compiler # used to compile the test case. -if [get_compiler_info ${binfile}] { - return -1; +if [get_compiler_info] { + return -1 } if {$hp_aCC_compiler} { @@ -68,7 +61,11 @@ proc do_function_calls {} { global gdb_prompt # We need to up this because this can be really slow on some boards. - set timeout 60; + set timeout 60 + + # If any of these calls segv we don't want to affect subsequent tests. + # E.g., we want to ensure register values are restored. + gdb_test_no_output "set unwindonsignal on" gdb_test "p t_char_values(0,0)" " = 0" gdb_test "p t_char_values('a','b')" " = 1" @@ -150,19 +147,15 @@ proc do_function_calls {} { } if [support_complex_tests] { - setup_kfail_for_target gdb/12798 "x86_64-*-*" gdb_test "p t_float_complex_values(fc1, fc2)" " = 1" gdb_test "p t_float_complex_values(fc3, fc4)" " = 0" - setup_kfail_for_target gdb/12800 "x86_64-*-*" gdb_test "p t_float_complex_many_args(fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4, fc1, fc2, fc3, fc4)" " = 1" gdb_test "p t_float_complex_many_args(fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1, fc1)" " = 0" - setup_kfail_for_target gdb/12798 "x86_64-*-*" gdb_test "p t_double_complex_values(dc1, dc2)" " = 1" gdb_test "p t_double_complex_values(dc3, dc4)" " = 0" - setup_kfail_for_target gdb/12800 "x86_64-*-*" gdb_test "p t_double_complex_many_args(dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4, dc1, dc2, dc3, dc4)" " = 1" gdb_test "p t_double_complex_many_args(dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1, dc1)" " = 0" @@ -247,23 +240,21 @@ proc do_function_calls {} { if [support_complex_tests] { - setup_kfail_for_target gdb/12796 "x86_64-*-*" gdb_test "p t_structs_fc(struct_val1)" ".*= 3 \\+ 3 \\* I" \ "call inferior func with struct - returns float _Complex" - setup_kfail_for_target gdb/12783 "i?86-*-*" - setup_kfail_for_target gdb/12796 "x86_64-*-*" gdb_test "p t_structs_dc(struct_val1)" ".*= 4 \\+ 4 \\* I" \ "call inferior func with struct - returns double _Complex" - setup_kfail_for_target gdb/12783 "i?86-*-*" - setup_kfail_for_target gdb/12796 "x86_64-*-*" gdb_test "p t_structs_ldc(struct_val1)" "= 5 \\+ 5 \\* I" \ "call inferior func with struct - returns long double _Complex" } - gdb_test "p t_structs_a(struct_val1)" "= (.unsigned char .. )?\"foo\"" \ + gdb_test "p t_structs_a(struct_val1)" "= (.unsigned char .. )? \"foo\"" \ "call inferior func with struct - returns char *" + + # Restore default value. + gdb_test_no_output "set unwindonsignal off" } # Procedure to get current content of all registers. @@ -336,7 +327,7 @@ proc rerun_and_prepare {} { # the language be set to the default. if { ![runto_main] } { - gdb_suppress_tests; + gdb_suppress_tests } # However, turn off overload-resolution for aCC. Having it on causes @@ -345,7 +336,7 @@ proc rerun_and_prepare {} { gdb_test_no_output "set overload-resolution 0" } else { if { ![runto_main] } { - gdb_suppress_tests; + gdb_suppress_tests } gdb_test_no_output "set language c" } @@ -544,3 +535,6 @@ if {![target_info exists gdb,nosignals] && ![istarget "*-*-uclinux*"]} { # handling vs. local labels `.L'... as `Lcallfunc' starts with `L'. gdb_test "print callfunc (Lcallfunc, 5)" " = 12" + +# Regression test for function pointer cast. +gdb_test "print *((int *(*) (void)) voidfunc)()" " = 23"