old-cross-binutils/gdb/testsuite/gdb.cp/temargs.exp
Tom Tromey 34eaf5422c gdb
PR c++/9946:
	* symfile.c (reread_symbols): Clear template_symbols.
	* symtab.h (struct symbol) <is_cplus_template_function>: New
	field.
	(SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION): New macro.
	(struct template_symbol): New.
	* symtab.c (lookup_symbol_aux_local): Use
	cp_lookup_symbol_imports_or_template.
	* objfiles.h (struct objfile) <template_symbols>: New field.
	* objfiles.c (relocate_one_symbol): New function.
	(objfile_relocate1): Use it.  Relocate isolated symbols.
	* gdbtypes.h (struct cplus_struct_type) <n_template_arguments,
	template_arguments>: New fields.
	(TYPE_N_TEMPLATE_ARGUMENTS): New macro.
	(TYPE_TEMPLATE_ARGUMENTS): Likewise.
	(TYPE_TEMPLATE_ARGUMENT): Likewise.
	(lookup_typename): Update.
	* gdbtypes.c (lookup_typename): Constify "block" argument.
	* dwarf2read.c: Include vec.h.
	(symbolp): New typedef.
	(read_func_scope): Read template arguments.  Allocate a
	template_symbol when needed.
	(read_structure_type): Read template arguments.
	(new_symbol_full): New function, from new_symbol.  Handle
	DW_TAG_template_type_param and DW_TAG_template_value_param.
	(new_symbol): Rewrite as wrapper.
	* cp-support.h (cp_lookup_symbol_imports_or_template): Declare.
	* cp-namespace.c: Include language.h.
	(search_symbol_list): New function.
	(cp_lookup_symbol_imports_or_template): Likewise.
gdb/testsuite
	PR c++/9946:
	* gdb.cp/temargs.exp: New file.
	* gdb.cp/temargs.cc: New file.
2010-07-28 16:23:59 +00:00

102 lines
3.2 KiB
Text

# temargs.exp - Template argument tests
#
# Copyright 2010 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 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, see <http://www.gnu.org/licenses/>.
# This file is part of the gdb testsuite.
if {$tracelevel} {
strace $tracelevel
}
if {[skip_cplus_tests]} {
continue
}
set testfile "temargs"
set srcfile "${testfile}.cc"
if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug c++}]} {
return -1
}
if {![runto_main]} {
return -1
}
set line [gdb_get_line_number "Breakpoint 1" $srcfile]
gdb_test "break $srcfile:$line" "Breakpoint 2.*" \
"set first breakpoint for temargs"
set line [gdb_get_line_number "Breakpoint 2" $srcfile]
gdb_test "break $srcfile:$line" "Breakpoint 3.*" \
"set second breakpoint for temargs"
set line [gdb_get_line_number "Breakpoint 3" $srcfile]
gdb_test "break $srcfile:$line" "Breakpoint 4.*" \
"set third breakpoint for temargs"
set line [gdb_get_line_number "Breakpoint 4" $srcfile]
gdb_test "break $srcfile:$line" "Breakpoint 5.*" \
"set fourth breakpoint for temargs"
#
# Tests in Base::base_m.
#
gdb_continue_to_breakpoint "continue to first breakpoint for temargs"
gdb_test "ptype T" "double" "test type of T in base_m"
gdb_test "print I" " = 23" "test value of I in base_m"
gdb_test "print P == &a_global" " = true" "test value of P in base_m"
setup_kfail "gcc/41736" *-*-*
gdb_test "print MP" "&S::f" "test value of MP in base_m"
#
# Tests in Inner::inner_m.
#
gdb_continue_to_breakpoint "continue to second breakpoint for temargs"
setup_kfail "gcc/45024" *-*-*
gdb_test "ptype T" "long" "test type of T in inner_m"
setup_kfail "gcc/45024" *-*-*
gdb_test "print I" " = 47" "test value of I in inner_m"
gdb_test "print P == &a_global" " = true" "test value of P in inner_m"
setup_kfail "gcc/41736" *-*-*
gdb_test "print MP" "&S::f" "test value of MP in inner_m"
gdb_test "whatis Z" "float" "test type of Z in inner_m"
#
# Tests in func.
#
gdb_continue_to_breakpoint "continue to third breakpoint for temargs"
gdb_test "ptype T" "unsigned char" "test type of T in func"
gdb_test "print I" " = 91" "test value of I in func"
gdb_test "print P == &a_global" " = true" "test value of P in func"
setup_kfail "gcc/41736" *-*-*
gdb_test "print MP" "&S::f" "test value of MP in func"
#
# Tests in Base::templ_m.
#
gdb_continue_to_breakpoint "continue to fourth breakpoint for temargs"
gdb_test "ptype T" "double" "test type of T in templ_m"
gdb_test "print I" " = 23" "test value of I in templ_m"
gdb_test "print P == &a_global" " = true" "test value of P in templ_m"
setup_kfail "gcc/41736" *-*-*
gdb_test "print MP" "&S::f" "test value of MP in templ_m"
gdb_test "whatis Q" "short" "test type of Q in templ_m"