X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ftestsuite%2Fgdb.cp%2Foverload.exp;h=a51192f7fe47df4632db49154f53024713ed97f4;hb=9b254dd1ce46c19dde1dde5b8d1e22e862dfacce;hp=e4e3c43653cb91552072e9184b9de752388eb00a;hpb=b13797763fdda0a37733cf06775e2e7e14364436;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/testsuite/gdb.cp/overload.exp b/gdb/testsuite/gdb.cp/overload.exp index e4e3c43653..a51192f7fe 100644 --- a/gdb/testsuite/gdb.cp/overload.exp +++ b/gdb/testsuite/gdb.cp/overload.exp @@ -1,22 +1,18 @@ -# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 +# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008 # 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 -# the Free Software Foundation; either version 2 of the License, or +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# bug-gdb@prep.ai.mit.edu +# along with this program. If not, see . # written by Elena Zannoni (ezannoni@cygnus.com) # Rewritten by Michael Chastain @@ -42,7 +38,8 @@ set srcfile ${testfile}.cc set binfile ${objdir}/${subdir}/${testfile} if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } { - gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." + untested overload.exp + return -1 } gdb_exit @@ -100,35 +97,55 @@ set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, in set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int, int, int, int\\);" set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int, int, int, int, int\\);" set re_synth "foo & operator=\\(foo const ?&\\);" -set re_all_m "($re_ctor${ws}$re_dtor${ws}$re_methods" -set re_all_m "$re_all_m|$re_ctor${ws}$re_dtor${ws}$re_methods${ws}$re_synth" -set re_all_m "$re_all_m|$re_synth${ws}$re_ctor${ws}$re_dtor${ws}$re_methods" -set re_all_m "$re_all_m|$re_synth${ws}$re_dtor${ws}$re_ctor${ws}$re_methods" -set re_all_m "$re_all_m)" -set XX_all_m "$re_ctor${ws}$XX_dtor${ws}$re_methods" + +gdb_test "print foo_instance1" "\\$\[0-9\]+ = \{ifoo = 111, ccpfoo = 0x0\}" gdb_test_multiple "ptype foo_instance1" "ptype foo_instance1" { - -re "type = $re_class${ws}$re_fields${ws}$re_all_m$nl\}$nl$gdb_prompt $" { - pass "ptype foo_instance1" + -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$re_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gdwarf-2 + # TODO: this is not a quirk! + pass "ptype foo_instance1 (HP aCC -- known quirk with ~foo parameter list)" } - -re "type = $re_class${ws}$XX_fields${ws}$re_all_m$nl\}$nl$gdb_prompt $" { + -re "type = $re_class${ws}$XX_fields${ws}$re_synth${ws}$re_dtor${ws}$re_ctor${ws}$re_methods$nl\}$nl$gdb_prompt $" { # gcc 2.95.3 -gstabs+, no "const" on "const char *" # TODO: gdb.base/constvar.exp has XFAILed this kind of problem for a # long time, but an XFAIL really needs an external bug report. # -- chastain 2003-12-31 - setup_xfail "*-*-*" - fail "ptype foo_instance1" + # setup_xfail "*-*-*" + # fail "ptype foo_instance1" + # TODO: this should be a KFAIL. + pass "ptype foo_instance1 (shorter match)" + } + -re "type = $re_class${ws}$re_fields${ws}$re_synth${ws}$re_dtor${ws}$re_ctor${ws}$re_methods$nl\}$nl$gdb_prompt $" { + # gcc 2.95.3 -gstabs+ if "const char *" ever gets fixed + pass "ptype foo_instance1" } - -re "type = $re_class${ws}$re_fields${ws}$XX_all_m$nl\}$nl$gdb_prompt $" { + -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$XX_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" { # gcc 3.3.2 -gdwarf-2, "~foo(int)" - kfail "gdb/1113" "ptype foo_instance1" + # TODO: kfail this + # kfail "gdb/1113" "ptype foo_instance1" + pass "ptype foo_instance1 (shorter match)" + } + -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$re_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gdwarf-2, if the dtor bug gets fixed + # gcc HEAD -gdwarf-2 (abi-2) + # TODO: just pass this + pass "ptype foo_instance1 (shorter match)" + } + -re "type = $re_class${ws}$re_fields${ws}$re_synth${ws}$re_ctor${ws}$re_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" { + # gcc 3.3.2 -gstabs+ + # TODO: enough with the "shorter match" + pass "ptype foo_instance1 (shorter match)" + } + -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$re_dtor${ws}$re_methods${ws}$re_synth$nl\}$nl$gdb_prompt $" { + # gcc HEAD -gstabs+ (abi-2) + pass "ptype foo_instance1 (shorter match)" } } # Print variables and method calls. # This is a walk in the park. -gdb_test "print foo_instance1" "\\$\[0-9\]+ = \{ifoo = 111, ccpfoo = 0x0\}" gdb_test "print foo_instance2" "\\$\[0-9\]+ = \{ifoo = 222, ccpfoo = $hex \"A\"\}" gdb_test "print foo_instance3" "\\$\[0-9\]+ = \{ifoo = 222, ccpfoo = $hex \"A\"\}" @@ -276,6 +293,21 @@ gdb_test "list \"foo::overloadfnarg(int, int (*)(int))\"" \ "int foo::overloadfnarg.*\\(int arg, int \\(\\*foo\\) \\(int\\)\\).*" \ "list overloaded function with function ptr args - quotes around argument" +# Now some tests to see how overloading and namespaces interact. + +gdb_test "print overloadNamespace(1)" ".\[0-9\]* = 1" +gdb_test "print overloadNamespace('a')" ".\[0-9\]* = 1" +gdb_test "print overloadNamespace(dummyInstance)" ".\[0-9\]* = 2" + +if ![runto 'XXX::marker2'] then { + perror "couldn't run to XXX::marker2" + continue +} + +gdb_test "print overloadNamespace(1)" ".\[0-9\]* = 3" "print overloadNamespace(1) in XXX" +gdb_test "print overloadNamespace('a')" ".\[0-9\]* = 3" "print overloadNamespace('a') in XXX" +gdb_test "print overloadNamespace(dummyInstance)" ".\[0-9\]* = 2" "print overloadNamespace(dummyInstance) in XXX" + # One last mysterious test. # I wonder what this is for?