aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorSami Wagiaalla <swagiaal@redhat.com>2010-06-02 15:31:30 +0000
committerSami Wagiaalla <swagiaal@redhat.com>2010-06-02 15:31:30 +0000
commit7d3fe98e4f161e15cbb329cc44da260abadfb2fd (patch)
treeb62f6b978a84b89b3336f7a7073d9ae1e448afa2 /gdb
parentd0ef7741c534042736e2f2734daceb4738715f80 (diff)
downloadfsf-binutils-gdb-7d3fe98e4f161e15cbb329cc44da260abadfb2fd.zip
fsf-binutils-gdb-7d3fe98e4f161e15cbb329cc44da260abadfb2fd.tar.gz
fsf-binutils-gdb-7d3fe98e4f161e15cbb329cc44da260abadfb2fd.tar.bz2
Fix ADL anonymous name crash.
2010-06-02 Sami Wagiaalla <swagiaal@redhat.com> * cp-support.c (make_symbol_overload_list_adl_namespace): Handle anonymous type case. 2010-06-02 Sami Wagiaalla <swagiaal@redhat.com> * gdb.cp/koenig.exp: Added new test case. * gdb.cp/koenig.cc: Ditto.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/cp-support.c3
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.cp/koenig.cc7
-rw-r--r--gdb/testsuite/gdb.cp/koenig.exp5
5 files changed, 25 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 16b5801..7cd0030 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2010-06-02 Sami Wagiaalla <swagiaal@redhat.com>
+
+ * cp-support.c (make_symbol_overload_list_adl_namespace): Handle
+ anonymous type case.
+
2010-06-02 Pierre Muller <muller@ics.u-strasbg.fr>
* dwarf2read.c (read_subrange_type): Handle missing base type
diff --git a/gdb/cp-support.c b/gdb/cp-support.c
index e4b5d4d..799b707 100644
--- a/gdb/cp-support.c
+++ b/gdb/cp-support.c
@@ -752,6 +752,9 @@ make_symbol_overload_list_adl_namespace (struct type *type,
type_name = TYPE_NAME (type);
+ if (type_name == NULL)
+ return;
+
prefix_len = cp_entire_prefix_len (type_name);
if (prefix_len != 0)
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 01f8242..3cae6ff 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-06-02 Sami Wagiaalla <swagiaal@redhat.com>
+
+ * gdb.cp/koenig.exp: Added new test case.
+ * gdb.cp/koenig.cc: Ditto.
+
2010-06-01 Michael Snyder <msnyder@vmware.com>
* gdb.base/arithmet.exp: Use gdb_test_no_output.
diff --git a/gdb/testsuite/gdb.cp/koenig.cc b/gdb/testsuite/gdb.cp/koenig.cc
index 6cfa3f5..fb4ecb1 100644
--- a/gdb/testsuite/gdb.cp/koenig.cc
+++ b/gdb/testsuite/gdb.cp/koenig.cc
@@ -175,6 +175,13 @@ typedef O::A TOA;
typedef TOA TTOA;
//------------
+static union {
+ int a;
+ char b;
+}p_union;
+
+//------------
+
int
main ()
{
diff --git a/gdb/testsuite/gdb.cp/koenig.exp b/gdb/testsuite/gdb.cp/koenig.exp
index 8de3d11..57be745 100644
--- a/gdb/testsuite/gdb.cp/koenig.exp
+++ b/gdb/testsuite/gdb.cp/koenig.exp
@@ -64,6 +64,7 @@ gdb_test "p foo(go, fo, eo)" "= 6"
#test that gdb fails gracefully
gdb_test "p fake(eo)" "No symbol \"fake\" in current context."
+gdb_test "p foo (fake)" "No symbol \"fake\" in current context."
#test that namespaces of base classes are searched
gdb_test "p foo(io)" "= 7"
@@ -104,3 +105,7 @@ gdb_test "p M::N::bar('a')" "= 22"
#test that lookup supports typedef
gdb_test "p foo(ttoa, 'a')" "= 23"
+
+#test that lookup is not thwarted by anonymous types
+gdb_test "p foo (p_union)" \
+ "Cannot resolve function foo to any overloaded instance"