-# 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 <http://www.gnu.org/licenses/>.
# written by Elena Zannoni (ezannoni@cygnus.com)
# Rewritten by Michael Chastain <mec.gnu@mindspring.com>
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
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\"\}"
"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?