Skip to content

Commit 97c509b

Browse files
ivanivanov884jeffmahoney
authored andcommitted
gdb-physname-pr12273-test.patch
;; Fix regressions on C++ names resolving (PR 11734, PR 12273, Keith Seitz). ;;=fedoratest http://sourceware.org/ml/gdb-patches/2010-12/msg00264.html
1 parent 195de55 commit 97c509b

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed

gdb/testsuite/gdb.cp/pr12273.cc

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/* This test case is part of GDB, the GNU debugger.
2+
3+
Copyright 2010 Free Software Foundation, Inc.
4+
5+
This program is free software; you can redistribute it and/or modify
6+
it under the terms of the GNU General Public License as published by
7+
the Free Software Foundation; either version 3 of the License, or
8+
(at your option) any later version.
9+
10+
This program is distributed in the hope that it will be useful,
11+
but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
GNU General Public License for more details.
14+
15+
You should have received a copy of the GNU General Public License
16+
along with this program. If not, see <http://www.gnu.org/licenses/>. */
17+
18+
template <typename T>
19+
class GDB
20+
{
21+
public:
22+
static int simple (void) { return 0; }
23+
static int harder (T a) { return 1; }
24+
template <typename X>
25+
static X even_harder (T a) { return static_cast<X> (a); }
26+
int operator == (GDB const& other)
27+
{ return 1; }
28+
};
29+
30+
int main(int argc, char **argv)
31+
{
32+
GDB<int> a, b;
33+
if (a == b)
34+
return GDB<char>::harder('a') + GDB<int>::harder(3)
35+
+ GDB<char>::even_harder<int> ('a');
36+
return GDB<int>::simple ();
37+
}

gdb/testsuite/gdb.cp/pr12273.exp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Copyright 2010 Free Software Foundation, Inc.
2+
#
3+
# Contributed by Red Hat, originally written by Keith Seitz.
4+
#
5+
# This program is free software; you can redistribute it and/or modify
6+
# it under the terms of the GNU General Public License as published by
7+
# the Free Software Foundation; either version 3 of the License, or
8+
# (at your option) any later version.
9+
#
10+
# This program is distributed in the hope that it will be useful,
11+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
# GNU General Public License for more details.
14+
#
15+
# You should have received a copy of the GNU General Public License
16+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
17+
18+
# This file is part of the gdb testsuite.
19+
20+
if {[skip_cplus_tests]} { continue }
21+
22+
set testfile "pr12273"
23+
# Do NOT compile with debug flag.
24+
prepare_for_testing pr12273 $testfile $testfile.cc {c++}
25+
26+
gdb_test_no_output "set language c++"
27+
28+
# A list of minimal symbol names to check.
29+
# Note that GDB<char>::even_harder<int>(char) is quoted and includes
30+
# the return type. This is necessary because this is the demangled name
31+
# of the minimal symbol.
32+
set min_syms [list \
33+
"GDB<int>::operator ==" \
34+
"GDB<int>::operator==(GDB<int> const&)" \
35+
"GDB<char>::harder(char)" \
36+
"GDB<int>::harder(int)" \
37+
{"int GDB<char>::even_harder<int>(char)"} \
38+
"GDB<int>::simple()"]
39+
40+
foreach sym $min_syms {
41+
if {[gdb_breakpoint $sym]} {
42+
pass "setting breakpoint at $sym"
43+
}
44+
}
45+
46+
gdb_exit

0 commit comments

Comments
 (0)