X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdb%2Fcp-namespace.c;h=c6e1102e0bde6629ba9a9c3d42f18375922d827b;hb=50c8a5160c5292ec7fbf1817960d58b15cb6fc5f;hp=a3684aa1ff8f48341b4dbf0200b3186045735153;hpb=530e8392d7d5d4a831c5ce0e4cd410e1c4bd166a;p=platform%2Fupstream%2Fbinutils.git diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c index a3684aa..c6e1102 100644 --- a/gdb/cp-namespace.c +++ b/gdb/cp-namespace.c @@ -1,5 +1,5 @@ /* Helper routines for C++ support in GDB. - Copyright (C) 2003-2013 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. Contributed by David Carlton and by Kealia, Inc. @@ -23,7 +23,6 @@ #include "gdb_obstack.h" #include "symtab.h" #include "symfile.h" -#include "gdb_assert.h" #include "block.h" #include "objfiles.h" #include "gdbtypes.h" @@ -669,6 +668,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); } @@ -812,6 +816,7 @@ cp_lookup_nested_symbol (struct type *parent_type, case TYPE_CODE_STRUCT: case TYPE_CODE_NAMESPACE: case TYPE_CODE_UNION: + case TYPE_CODE_ENUM: /* NOTE: Handle modules here as well, because Fortran is re-using the C++ specific code to lookup nested symbols in modules, by calling the function pointer la_lookup_symbol_nonlocal, which ends up here. */