diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cbd3a77f37a..cd35011f998 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2014-04-16 Keith Seitz + + PR c++/16597 + * cp-namespace.c (lookup_symbol_file): If the type name of + `this' is NULL, return immediately. + 2014-04-14 Keith Seitz PR c++/16253 diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c index 1085556e90c..ae7c8527df5 100644 --- a/gdb/cp-namespace.c +++ b/gdb/cp-namespace.c @@ -694,6 +694,11 @@ lookup_symbol_file (const char *name, } type = check_typedef (TYPE_TARGET_TYPE (SYMBOL_TYPE (this))); + /* If TYPE_NAME is NULL, abandon trying to find this symbol. + This can happen for lambda functions compiled with clang++, + which outputs no name for the container class. */ + if (TYPE_NAME (type) == NULL) + return NULL; klass = xstrdup (TYPE_NAME (type)); nested = xstrdup (name); } diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 7c7bd348400..a7e7dcb623b 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2014-04-16 Keith Seitz + + PR c++/16597 + * gdb.cp/namelessclass.cc: New file. + * gdb.cp/namelessclass.exp: New file. + * gdb.cp/namelessclass.S: New file. + 2014-04-16 Doug Evans * lib/gdbserver-support.exp (gdbserver_default_get_remote_address):