Fix ADL anonymous name crash.
authorSami Wagiaalla <swagiaal@redhat.com>
Wed, 2 Jun 2010 15:31:30 +0000 (15:31 +0000)
committerSami Wagiaalla <swagiaal@redhat.com>
Wed, 2 Jun 2010 15:31:30 +0000 (15:31 +0000)
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.

gdb/ChangeLog
gdb/cp-support.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/koenig.cc
gdb/testsuite/gdb.cp/koenig.exp

index 16b58015093d602056d9d9ef23e2a09d75a8c7b3..7cd0030157609ccda0b580caad66a4b6ceeaf971 100644 (file)
@@ -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
index e4b5d4d7b5dd551e475bda577e9846c4552427cb..799b7076daa3694dc017b477dd04c50c02f8b254 100644 (file)
@@ -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)
index 01f824235cb020ad740ed1ee3f1c8e606cf1be2c..3cae6ff5a402c8b690f4362a61a10d6f93f51b93 100644 (file)
@@ -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.
index 6cfa3f588c2ac7dd4e6ff21325f303103c8db2f7..fb4ecb14ee9be71f2085841a8afb05bc0350acda 100644 (file)
@@ -175,6 +175,13 @@ typedef O::A TOA;
 typedef TOA  TTOA;
 
 //------------
+static union {
+    int  a;
+    char b;
+}p_union;
+
+//------------
+
 int
 main ()
 {
index 8de3d11114a1a019b6715fb5c06333ec72ef7543..57be74500af74935676e16f8c4421d0cee226af0 100644 (file)
@@ -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"