OLD | NEW |
1 # Copyright 1992, 1994-1997, 1999-2000, 2002-2004, 2007-2012 Free | 1 # Copyright 1992, 1994-1997, 1999-2000, 2002-2004, 2007-2012 Free |
2 # Software Foundation, Inc. | 2 # Software 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 set ws "\[\r\n\t \]+" | 19 set ws "\[\r\n\t \]+" |
20 | 20 |
21 if $tracelevel then { | |
22 strace $tracelevel | |
23 } | |
24 | |
25 if { [skip_cplus_tests] } { continue } | 21 if { [skip_cplus_tests] } { continue } |
26 | 22 |
27 set testfile "templates" | 23 standard_testfile .cc |
28 set srcfile ${testfile}.cc | |
29 set binfile ${objdir}/${subdir}/${testfile} | |
30 | 24 |
31 # Create and source the file that provides information about the compiler | 25 # Create and source the file that provides information about the compiler |
32 # used to compile the test case. | 26 # used to compile the test case. |
33 if [get_compiler_info ${binfile} "c++"] { | 27 if [get_compiler_info "c++"] { |
34 return -1 | 28 return -1 |
35 } | 29 } |
36 | 30 |
37 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
ug c++}] != "" } { | 31 if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug c++}]} { |
38 untested templates.exp | 32 return -1 |
39 return -1 | |
40 } | 33 } |
41 | 34 |
42 # | 35 # |
43 # Test printing of the types of templates. | 36 # Test printing of the types of templates. |
44 # | 37 # |
45 | 38 |
46 proc test_ptype_of_templates {} { | 39 proc test_ptype_of_templates {} { |
47 global gdb_prompt | 40 global gdb_prompt |
48 global ws | 41 global ws |
49 | 42 |
50 gdb_test_multiple "ptype T5<int>" "ptype T5<int>" { | 43 gdb_test_multiple "ptype T5<int>" "ptype T5<int>" { |
51 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}T5\\(int\\);${ws}T
5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \
\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(vo
id ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { | 44 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}T5\\(int\\);${ws}T
5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \
\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(vo
id ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { |
52 » pass "ptype T5<int>" | 45 » xfail "ptype T5<int> -- new without size_t" |
53 } | 46 } |
54 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T
5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws
}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5<
int> & operator=\\(T5<int> const ?&\\);${ws}\}\r\n$gdb_prompt $" { | 47 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T
5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws
}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5<
int> & operator=\\(T5<int> const ?&\\);${ws}\}\r\n$gdb_prompt $" { |
55 » pass "ptype T5<int>" | 48 » xfail "ptype T5<int> -- new without size_t" |
56 } | 49 } |
57 -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${
ws}int val;${ws}${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void
~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delet
e \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}${ws}$gdb_prompt $" { | 50 -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${
ws}int val;${ws}${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void
~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delet
e \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}${ws}$gdb_prompt $" { |
58 » pass "ptype T5<int> -- new with unsigned int" | 51 » xfail "ptype T5<int> -- new with unsigned int" |
59 } | 52 } |
60 -re "type = class T5<int> \\{.*public:.*static int X;.*int x;.*int val;.
*T5 \\(int\\);.*T5 \\(const class T5<int> &\\);.*void ~T5 \\(int\\);.*static voi
d \\* new \\(unsigned long\\);.*static void delete \\(void ?\\*\\);.*int value \
\((void|)\\);.*\\}\r\n$gdb_prompt $" { | 53 -re "type = class T5<int> \\{.*public:.*static int X;.*int x;.*int val;.
*T5 \\(int\\);.*T5 \\(const class T5<int> &\\);.*void ~T5 \\(int\\);.*static voi
d \\* new \\(unsigned long\\);.*static void delete \\(void ?\\*\\);.*int value \
\((void|)\\);.*\\}\r\n$gdb_prompt $" { |
61 » pass "ptype T5<int> -- new with unsigned long" | 54 » xfail "ptype T5<int> -- new with unsigned long" |
62 } | 55 } |
63 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;((${ws}T5<int> & operator=\\(T5<int> const ?&\\);)|(${ws}T5\\(int\\);)
|(${ws}T5\\((T5<int> const|const T5<int>) ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws
}static void \\* operator new\\(unsigned( int| long)?\\);)|(${ws}static void ope
rator delete\\(void ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\}\r\n$gdb_pr
ompt $" { | 56 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;((${ws}T5<int> & operator=\\(T5<int> const ?&\\);)|(${ws}T5\\(int\\);)
|(${ws}T5\\((T5<int> const|const T5<int>) ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws
}static void \\* operator new\\(unsigned( int| long)?\\);)|(${ws}static void ope
rator delete\\(void ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\}\r\n$gdb_pr
ompt $" { |
64 » pass "ptype T5<int> (obsolescent gcc or gdb)" | 57 » xfail "ptype T5<int> (obsolescent gcc or gdb)" |
65 } | 58 } |
66 » -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}void T5\\(int\\);${ws}void T5\\((T5<int> const|const T5<int>) ?&\
\);${ws}~T5\\(int\\);${ws}static void \\* operator new\\(unsigned( int| long|)\\
);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${
ws}\}\r\n$gdb_prompt $" { | 59 » -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}void T5\\(int\\);${ws}void T5\\((T5<int> const|const T5<int>) ?&\
\);${ws}~T5\\(int\\);${ws}static void \\* operator new\\((size_t|unsigned( int|
long|))\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((voi
d|)\\);${ws}\}\r\n$gdb_prompt $" { |
67 # This also triggers gdb/1113... | 60 # This also triggers gdb/1113... |
68 kfail "gdb/1111" "ptype T5<int>" | 61 kfail "gdb/1111" "ptype T5<int>" |
| 62 # Add here a PASS case when PR gdb/1111 gets fixed. |
69 } | 63 } |
70 } | 64 } |
71 | 65 |
72 gdb_test_multiple "ptype t5i" "ptype t5i" { | 66 gdb_test_multiple "ptype t5i" "ptype t5i" { |
73 -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${
ws}int val;\r\n${ws}T5\\(int\\);${ws}T5\\(T5<int> const ?&\\);${ws}~T5\\((void|)
\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static voi
d operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\\}\r\n$gdb_pr
ompt $" { | 67 -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${
ws}int val;\r\n${ws}T5\\(int\\);${ws}T5\\(T5<int> const ?&\\);${ws}~T5\\((void|)
\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static voi
d operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\\}\r\n$gdb_pr
ompt $" { |
74 » pass "ptype T5<int> -- with several fixes from 4.17" | 68 » xfail "ptype T5<int> -- with several fixes from 4.17 -- without size
_t" |
75 } | 69 } |
76 -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${
ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~
T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete
\\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { | 70 -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${
ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~
T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete
\\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { |
77 » pass "ptype t5i<int> -- new with unsigned int" | 71 » xfail "ptype t5i<int> -- new with unsigned int -- without size_t" |
78 } | 72 } |
79 -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${
ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~
T5 \\(int\\);${ws}static void \\* new \\(unsigned long\\);${ws}static void delet
e \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { | 73 -re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${
ws}int val;\r\n${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~
T5 \\(int\\);${ws}static void \\* new \\(unsigned long\\);${ws}static void delet
e \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}\r\n$gdb_prompt $" { |
80 » pass "ptype t5i<int> -- new with unsigned long" | 74 » xfail "ptype t5i<int> -- new with unsigned long -- without size_t" |
81 } | 75 } |
82 -re "type = class T5<int> \{.*public:.*static int X;.*int x;.*int val;.*
.*T5 \\(int\\);.*.*void ~T5 \\(int\\).*.*.*int value \\((void|)\\);.*\}.*$gdb_pr
ompt $" { | 76 -re "type = class T5<int> \{.*public:.*static int X;.*int x;.*int val;.*
.*T5 \\(int\\);.*.*void ~T5 \\(int\\).*.*.*int value \\((void|)\\);.*\}.*$gdb_pr
ompt $" { |
83 pass "ptype t5i" | 77 xfail "ptype t5i -- without size_t" |
84 } | 78 } |
85 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}T5\\(int\\);${ws}T
5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \
\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(vo
id ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { | 79 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}T5\\(int\\);${ws}T
5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \
\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(vo
id ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" { |
86 » pass "ptype t5i" | 80 » xfail "ptype t5i -- without size_t" |
87 } | 81 } |
88 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T
5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws
}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5<
int> & operator=\\(T5<int> const ?&\\);${ws}\}\r\n$gdb_prompt $" { | 82 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T
5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws
}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5<
int> & operator=\\(T5<int> const ?&\\);${ws}\}\r\n$gdb_prompt $" { |
89 » pass "ptype t5i" | 83 » xfail "ptype t5i -- without size_t" |
90 } | 84 } |
91 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;((${ws}T5<int> & operator=\\(T5<int> const ?&\\);)|(${ws}T5\\(int\\);)
|(${ws}T5\\(T5<int> const ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws}static void \\*
operator new\\(unsigned( int| long)?\\);)|(${ws}static void operator delete\\(v
oid ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\}\r\n$gdb_prompt $" { | 85 -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;((${ws}T5<int> & operator=\\(T5<int> const ?&\\);)|(${ws}T5\\(int\\);)
|(${ws}T5\\(T5<int> const ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws}static void \\*
operator new\\(unsigned( int| long)?\\);)|(${ws}static void operator delete\\(v
oid ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\}\r\n$gdb_prompt $" { |
92 » pass "ptype t5i (obsolescent gcc or gdb)" | 86 » xfail "ptype t5i (obsolescent gcc or gdb) -- without size_t" |
93 } | 87 } |
94 » -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}void T5\\(int\\);${ws}void T5\\((T5<int> const|const T5<int>) ?&\
\);${ws}~T5\\(int\\);${ws}static void \\* operator new\\(unsigned( int| long|)\\
);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${
ws}\}\r\n$gdb_prompt $" { | 88 » -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${w
s}int val;${ws}void T5\\(int\\);${ws}void T5\\((T5<int> const|const T5<int>) ?&\
\);${ws}~T5\\(int\\);${ws}static void \\* operator new\\((size_t|unsigned( int|
long|))\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((voi
d|)\\);${ws}\}\r\n$gdb_prompt $" { |
95 # This also triggers gdb/1113... | 89 # This also triggers gdb/1113... |
96 kfail "gdb/1111" "ptype T5<int>" | 90 kfail "gdb/1111" "ptype T5<int>" |
| 91 # Add here a PASS case when PR gdb/1111 gets fixed. |
97 } | 92 } |
98 } | 93 } |
99 } | 94 } |
100 | 95 |
101 # | 96 # |
102 # Test breakpoint setting on template methods. | 97 # Test breakpoint setting on template methods. |
103 # | 98 # |
104 | 99 |
105 proc test_template_breakpoints {} { | 100 proc test_template_breakpoints {} { |
106 global gdb_prompt | 101 global gdb_prompt |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 fail "print t5i.value()" | 188 fail "print t5i.value()" |
194 } | 189 } |
195 -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { | 190 -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" { |
196 setup_xfail hppa*-*-* CLLbs16899 | 191 setup_xfail hppa*-*-* CLLbs16899 |
197 xfail "print t5i.value" | 192 xfail "print t5i.value" |
198 } | 193 } |
199 } | 194 } |
200 } | 195 } |
201 | 196 |
202 proc test_template_typedef {} { | 197 proc test_template_typedef {} { |
| 198 global gdb_prompt |
203 | 199 |
204 gdb_test "print intBazOne::baz" ".*baz\\(int, int\\)>" \ | 200 gdb_test "print intBazOne::baz" ".*baz\\(int, int\\)>" \ |
205 "print method of template typedef" | 201 "print method of template typedef" |
206 | 202 |
207 gdb_test "print intBazOne::~Baz" ".*~Baz(\\(\\))?>" \ | 203 set test "print destructor of template typedef" |
208 » "print destructor of template typedef" | 204 gdb_test_multiple "print intBazOne::~Baz" $test { |
| 205 » -re "~Baz(\\(\\))?>\r\n$gdb_prompt $" { |
| 206 » pass $test |
| 207 » } |
| 208 » -re "There is no field named ~Baz\r\n$gdb_prompt $" { |
| 209 » set test2 "verify GCC PR debug/51668" |
| 210 » gdb_test_multiple "whatis intBazOne" $test2 { |
| 211 » » -re "type = Baz<int, \\(char\\)'\\\\001'>\r\n$gdb_prompt $" { |
| 212 » » setup_xfail gcc/51668 "*-*-*" |
| 213 » » xfail $test |
| 214 » » pass $test2 |
| 215 » » } |
| 216 » » -re "\r\n$gdb_prompt $" { |
| 217 » » # Some unexpected response. |
| 218 » » fail $test |
| 219 » » fail $test2 |
| 220 » » } |
| 221 » } |
| 222 » } |
| 223 } |
209 } | 224 } |
210 | 225 |
211 proc test_template_args {} { | 226 proc test_template_args {} { |
212 | 227 |
213 set empty_re "Empty *<void *\\(FunctionArg *<int>\\)>" | 228 set empty_re "Empty *<void *\\(FunctionArg *<int>\\)>" |
214 gdb_test "ptype empty" \ | 229 gdb_test "ptype empty" \ |
215 "type = (struct|class) $empty_re {.*<no data fields>.*}" | 230 "type = (struct|class) $empty_re {.*<no data fields>.*}" |
216 | 231 |
217 gdb_test "ptype arg" \ | 232 gdb_test "ptype arg" \ |
218 "type = (struct|class) FunctionArg<int> {.*int method\\($empty_re \\&\\)
;.*}" | 233 "type = (struct|class) FunctionArg<int> {.*int method\\($empty_re \\&\\)
;.*}" |
219 } | 234 } |
220 | 235 |
221 proc do_tests {} { | 236 proc do_tests {} { |
222 global subdir | |
223 global objdir | |
224 global srcdir | |
225 global binfile | |
226 global gdb_prompt | |
227 | |
228 | |
229 # Start with a fresh gdb. | |
230 | |
231 gdb_exit | |
232 gdb_start | |
233 gdb_reinitialize_dir $srcdir/$subdir | |
234 gdb_load $binfile | |
235 | |
236 # Change multiple-symbols to "ask" in order to get the multiple-choice | 237 # Change multiple-symbols to "ask" in order to get the multiple-choice |
237 # menu when breaking on overloaded methods. | 238 # menu when breaking on overloaded methods. |
238 gdb_test_no_output "set multiple-symbols ask" | 239 gdb_test_no_output "set multiple-symbols ask" |
239 | 240 |
240 runto_main | 241 runto_main |
241 | 242 |
242 test_ptype_of_templates | 243 test_ptype_of_templates |
243 test_template_breakpoints | 244 test_template_breakpoints |
244 test_template_typedef | 245 test_template_typedef |
245 test_template_args | 246 test_template_args |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 # print out a function from a nested template name | 558 # print out a function from a nested template name |
558 | 559 |
559 gdb_test "print Garply<Garply<char> >::garply" \ | 560 gdb_test "print Garply<Garply<char> >::garply" \ |
560 "\\$\[0-9\]* = \\{(class |)Garply<char> \\((class |)Garply<Garply<char> > \\
*(| const), int, (class |)Garply<char>\\)\\} $hex <Garply<Garply<char>\[ \t\]*>:
:garply\\(int, (class |)Garply<char>\\)>" \ | 561 "\\$\[0-9\]* = \\{(class |)Garply<char> \\((class |)Garply<Garply<char> > \\
*(| const), int, (class |)Garply<char>\\)\\} $hex <Garply<Garply<char>\[ \t\]*>:
:garply\\(int, (class |)Garply<char>\\)>" \ |
561 "print Garply<Garply<char> >::garply" | 562 "print Garply<Garply<char> >::garply" |
562 | 563 |
563 # djb - 06-03-2000 | 564 # djb - 06-03-2000 |
564 # Now should work fine | 565 # Now should work fine |
565 gdb_test "break Garply<Garply<char> >::garply" \ | 566 gdb_test "break Garply<Garply<char> >::garply" \ |
566 "Breakpoint \[0-9\]* at $hex: file .*templates.cc, line.*" | 567 "Breakpoint \[0-9\]* at $hex: file .*templates.cc, line.*" |
OLD | NEW |