+2014-12-02 Doug Evans <dje@google.com>
+
+ PR symtab/17602
+ * linespec.c (iterate_name_matcher): Fix arguments to symbol_name_cmp.
+
2014-12-02 Doug Evans <dje@google.com>
PR symtab/17591
{
const struct symbol_matcher_data *data = d;
- if (data->symbol_name_cmp (name, data->lookup_name) == 0)
+ /* The order of arguments we pass to symbol_name_cmp is important as
+ strcmp_iw, a typical value for symbol_name_cmp, only performs special
+ processing of '(' to remove overload info on the first argument and not
+ the second. The first argument is what the user provided, the second
+ argument is what came from partial syms / .gdb_index. */
+ if (data->symbol_name_cmp (data->lookup_name, name) == 0)
return 1; /* Expand this symbol's symbol table. */
return 0; /* Skip this symbol. */
}
+2014-12-02 Doug Evans <dje@google.com>
+
+ PR symtab/17602
+ * gdb.cp/anon-ns.cc: Move guts of this file to ...
+ * gdb.cp/anon-ns-2.cc: ... here. New file.
+ * gdb.cp/anon-ns.exp: Update.
+
2014-12-02 Nick Bull <nicholaspbull@gmail.com>
* gdb.python/py-events.py (inferior_call_handler): New.
Contributed by Red Hat, originally written by Keith Seitz. */
-#include <stdlib.h>
-
-namespace
-{
- void doit1 (void) { } // doit1(void)
- void doit1 (int a) { } // doit1(int)
- void doit1 (char *a) { } // doit1(char *)
-
- class one
- {
- public:
- one (void) { } // one::one(void)
- one (int a) { } // one::one(int)
- one (char *a) { } // one::one(char *)
- static void doit (void) { } // one::doit(void)
- };
-
- namespace A
- {
- void doit2 (void) { } // A::doit2(void)
- void doit2 (int a) { } // A::doit2(int)
- void doit2 (char *a) { } // A::doit2(char *)
-
- class two
- {
- public:
- two (void) { } // A::two::two(void)
- two (int a) { } // A::two::two(int)
- two (char *a) { } // A::two::two(char *)
- static void doit (void) { } // A::two::doit(void)
- };
-
- namespace
- {
- namespace
- {
- void doit3 (void) { } // A::doit3(void)
- void doit3 (int a) { } // A::doit3(int)
- void doit3 (char *a) { } // A::doit3(char *)
-
- class three
- {
- public:
- three (void) { } // A::three::three(void)
- three (int a) { } // A::three::three(int)
- three (char *a) { } // A::three::three(char *)
- static void doit (void) { } // A::three::doit(void)
- };
- }
- }
- }
-}
+extern void doit (void);
int
main (void)
{
- one a, b (3), c (static_cast<char *> (NULL));
- one::doit ();
- A::two d, e (3), f (static_cast<char *> (NULL));
- A::two::doit ();
- A::three g, h (3), i (static_cast<char *> (NULL));
- A::three::doit ();
- doit1 ();
- doit1 (3);
- doit1 (static_cast<char *> (NULL));
- A::doit2 ();
- A::doit2 (3);
- A::doit2 (static_cast<char *> (NULL));
- A::doit3 ();
- A::doit3 (3);
- A::doit3 (static_cast<char *> (NULL));
+ doit ();
return 0;
}
if {[skip_cplus_tests]} { continue }
-standard_testfile .cc
+standard_testfile .cc anon-ns2.cc
-if {[prepare_for_testing $testfile $testfile $srcfile {c++ debug}]} {
+if {[prepare_for_testing $testfile $testfile "$srcfile $srcfile2" {c++ debug}]} {
return -1
}
--- /dev/null
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2011-2014 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/>.
+
+ Contributed by Red Hat, originally written by Keith Seitz. */
+
+#include <stdlib.h>
+
+namespace
+{
+ void doit1 (void) { } // doit1(void)
+ void doit1 (int a) { } // doit1(int)
+ void doit1 (char *a) { } // doit1(char *)
+
+ class one
+ {
+ public:
+ one (void) { } // one::one(void)
+ one (int a) { } // one::one(int)
+ one (char *a) { } // one::one(char *)
+ static void doit (void) { } // one::doit(void)
+ };
+
+ namespace A
+ {
+ void doit2 (void) { } // A::doit2(void)
+ void doit2 (int a) { } // A::doit2(int)
+ void doit2 (char *a) { } // A::doit2(char *)
+
+ class two
+ {
+ public:
+ two (void) { } // A::two::two(void)
+ two (int a) { } // A::two::two(int)
+ two (char *a) { } // A::two::two(char *)
+ static void doit (void) { } // A::two::doit(void)
+ };
+
+ namespace
+ {
+ namespace
+ {
+ void doit3 (void) { } // A::doit3(void)
+ void doit3 (int a) { } // A::doit3(int)
+ void doit3 (char *a) { } // A::doit3(char *)
+
+ class three
+ {
+ public:
+ three (void) { } // A::three::three(void)
+ three (int a) { } // A::three::three(int)
+ three (char *a) { } // A::three::three(char *)
+ static void doit (void) { } // A::three::doit(void)
+ };
+ }
+ }
+ }
+}
+
+void
+doit (void)
+{
+ one a, b (3), c (static_cast<char *> (NULL));
+ one::doit ();
+ A::two d, e (3), f (static_cast<char *> (NULL));
+ A::two::doit ();
+ A::three g, h (3), i (static_cast<char *> (NULL));
+ A::three::doit ();
+ doit1 ();
+ doit1 (3);
+ doit1 (static_cast<char *> (NULL));
+ A::doit2 ();
+ A::doit2 (3);
+ A::doit2 (static_cast<char *> (NULL));
+ A::doit3 ();
+ A::doit3 (3);
+ A::doit3 (static_cast<char *> (NULL));
+}