As long as we have an explanation for why it is now happening we are good.
So does completing the type using the decl_ctx fix the issue? Falling back to what I said before, we do start the C++ class definition right away. Some code checks for a complete definition and other code checks for the definition being started. We might want to verify that clang is correct to assert in this case (by making sure clang requires a full definition). If it does, then we need to complete the type prior to adding to it. On Jul 11, 2013, at 4:15 PM, Michael Sartain <[email protected]> wrote: > > We want to avoid doing this it at all possible, so please do check for any > > clang changes first. > > I went back three months ago (r179296) and it didn't crash. Doing the bsod > narrowed it down to 180048. (Full clean build with 180047 doesn't crash). > > However this change doesn't have anything to do with clang. I'm guessing the > symbols just weren't found before this change? > > If I add this change to 179296, that crashes as well. > > How far back should I be looking for this clang change, if that's it? > Thanks Greg. > -Mike > > mikesart@mikesart-rad:~/data/src/llvm.svn/llvm/tools/lldb$ svn log -r 180048 > r180048 | mkopec | 2013-04-22 14:13:22 -0700 (Mon, 22 Apr 2013) | 4 lines > When parsing dwarf, add C functions to the fullname index. > This fixes function type resolution for C functions when requesting full > function names. > > mikesart@mikesart-rad:~/data/src/llvm.svn/llvm/tools/lldb$ svn diff -r > 180047:180048 > Index: source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp > =================================================================== > --- source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp (revision > 180047) > +++ source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp (revision > 180048) > @@ -817,6 +817,9 @@ > func_methods.Insert (ConstString(name), > die.GetOffset()); > else > func_basenames.Insert (ConstString(name), > die.GetOffset()); > + > + if (!is_method && !mangled_cstr && > !objc_method.IsValid(true)) > + func_fullnames.Insert (ConstString(name), > die.GetOffset()); > } > if (mangled_cstr) > { > @@ -854,6 +857,8 @@ > func_fullnames.Insert > (mangled.GetDemangledName(), die.GetOffset()); > } > } > + else > + func_fullnames.Insert (ConstString(name), > die.GetOffset()); > } > break; > > On Thu, Jul 11, 2013 at 10:08 AM, Greg Clayton <[email protected]> wrote: > With C++ classes we always will create the class, but we don't start the > clang RecordDecl definition of the class until someone somewhere asks for > information about the class that requires it to complete. The SymbolFileDWARF > is a ExternalASTSource that knows how to complete its classes so when someone > asks the class to complete, it should call into the SymbolFileDWARF plug-in > (from the clang AST code) through one of: > > SymbolFileDWARF::CompleteTagDecl (void *baton, clang::TagDecl *decl) > SymbolFileDWARF::CompleteObjCInterfaceDecl (void *baton, > clang::ObjCInterfaceDecl *decl) > > This will call into: > > lldb::clang_type_t > SymbolFileDWARF::ResolveClangOpaqueTypeDefinition (lldb::clang_type_t > clang_type) > > This code: > 1 - starts the definition > 2 - parses all members (ivars, methods, etc) > 3 - completes the definition > > What is happening here is you have something like: > > class A > { > class B > { > }; > }; > > We are trying to create "B" here and it thinks that "A" must be complete > before it can be added. In your code the "decl_ctx" that is passed to > ClangASTContext::CreateRecordType() is for a class that has not been > completed. I am pretty sure we didn't used to require type "A" to be complete > before adding "B" as a decl in "A". Can we check if anything changed in clang > recently? If no changes to clang were recently made, the solution is to call: > > SymbolFileDWARF::CompleteTagDecl (this, decl_ctx); > > To ensure the decl context is complete just before calling > CXXRecordDecl::Create(). We want to avoid doing this it at all possible, so > please do check for any clang changes first. > > Greg > > On Jul 10, 2013, at 6:42 PM, Michael Sartain <[email protected]> wrote: > > > Turned on dwarf logging, and it looks like it's dying with some of the > > protobuf library symbols. The last output is: > > > > 206694 1373493358.162653 [4ed3/7f542e5a5740]: (x86_64) > > /usr/local/lib/libprotobuf.so.8: SymbolFileDWARF::ResolveTypeUID (die = > > 0x0006f6ed) DW_TAG_class_type 'ErrorCollector' > > 206695 1373493358.162667 [4ed3/7f542e5a5740]: (x86_64) > > /usr/local/lib/libprotobuf.so.8: SymbolFileDWARF::ResolveTypeUID (die = > > 0x0006f6ed) DW_TAG_class_type 'ErrorCollector' resolve parent forward type > > for 0x0006f6e3 > > 206696 1373493358.162681 [4ed3/7f542e5a5740]: (x86_64) > > /usr/local/lib/libprotobuf.so.8: SymbolFileDWARF::ParseType (die = > > 0x0006f6ed, decl_ctx = 0x19b3e58 (die 0x0006f6e3)) DW_TAG_class_type name = > > 'ErrorCollector') > > > > This happens if I try to print several of the protobuf member functions: "p > > set_name", "p CopyFrom", "p MergeFrom", etc. > > > > I don't understand a bunch of the code here yet, but this is the bit that's > > dying: > > > > 1105| // Notify a C++ record declaration that we've added a member, so it > > can > > 1106| // update it's class-specific state. > > 1107| if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(this)) > > 1108+> Record->addedMember(D); > > > > addedMember() is being called, but Record has no definition. It calls down > > into this, and line 411 dies. > > > > 405| void CXXRecordDecl::addedMember(Decl *D) { > > 406| if (!D->isImplicit() && > > 407| !isa<FieldDecl>(D) && > > 408| !isa<IndirectFieldDecl>(D) && > > 409| (!isa<TagDecl>(D) || cast<TagDecl>(D)->getTagKind() == > > TTK_Class || > > 410| cast<TagDecl>(D)->getTagKind() == TTK_Interface)) > > 411+> data().HasOnlyCMembers = false; > > 412| > > 413| // Ignore friends and invalid declarations. > > 414| if (D->getFriendObjectKind() || D->isInvalidDecl()) > > 415| return; > > > > This is bit of lldb code that is calling into clang: > > > > 1161| // NOTE: Eventually CXXRecordDecl will be merged back into > > RecordDecl and > > 1162| // we will need to update this code. I was told to currently > > always use > > 1163| // the CXXRecordDecl class since we often don't know from debug > > information > > 1164| // if something is struct or a class, so we default to always use > > the more > > 1165| // complete definition just in case. > > 1166| CXXRecordDecl *decl = CXXRecordDecl::Create (*ast, > > 1167| > > (TagDecl::TagKind)kind, > > 1168| decl_ctx, > > 1169| SourceLocation(), > > 1170| SourceLocation(), > > 1171| name && name[0] ? > > &ast->Idents.get(name) : NULL); > > 1172| > > 1173| if (decl) > > 1174| { > > 1175| if (metadata) > > 1176| SetMetadata(ast, decl, *metadata); > > 1177| > > 1178| if (access_type != eAccessNone) > > 1179| decl->setAccess (ConvertAccessTypeToAccessSpecifier > > (access_type)); > > 1180| > > 1181| if (decl_ctx) > > 1182+> decl_ctx->addDecl (decl); > > > > If I change the addDecl check to this, I don't crash anymore: > > > > if (decl_ctx && decl->hasDefinition()) > > decl_ctx->addDecl (decl); > > > > Anyone have any insights as to the right approach here? > > We can't do this, otherwise the decl will never be added tot he record decl > and it will hose up name lookup during expressions. > > We need to make sure the definition has been started. Getting a stack trace > for where this is happening should show if this is being done under > SymbolFileDWARF::ResolveClangOpaqueTypeDefinition (). > > > > > Thanks. > > -Mike > > > > On Wed, Jul 10, 2013 at 12:05 PM, Michael Sartain <[email protected]> > > wrote: > > I set a breakpoint on main, then type "expr set", and hit this assert: > > > > (lldb) expr set > > lldb: > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/include/clang/AST/DeclCXX.h:553: > > struct DefinitionData &clang::CXXRecordDecl::data(): Assertion > > `DefinitionData && "queried property of class with no definition"' failed. > > > > DefinitionData is NULL. Log file shows the below. Full stacktrace is down > > below as well. > > > > I don't believe I've got any symbols named "set", although this crash > > doesn't happen with a much simpler hello_world test app. > > > > If anyone has any suggestions on where to look, please let me know. > > Otherwise I'll keep poking away here... > > Thanks, > > -Mike > > > > 8955 1373482599.140844 [66e2/7ff3afd86740]: HandleCommand, > > revised_command_line: 'expr set' > > 8956 1373482599.140854 [66e2/7ff3afd86740]: HandleCommand, > > wants_raw_input:'True' > > 8957 1373482599.140908 [66e2/7ff3afd86740]: HandleCommand, command line > > after removing command name(s): 'set' > > 8958 1373482599.141033 [66e2/7ff3afd86740]: == > > [ClangUserExpression::Evaluate] Parsing expression set == > > 8959 1373482599.141054 [66e2/7ff3afd86740]: > > ClangUserExpression::ScanContext() > > 8960 1373482599.141133 [66e2/7ff3afd86740]: Parsing the following code: > > 8961 > > 8962 #undef NULL > > 8963 #undef Nil > > 8964 #undef nil > > 8965 #undef YES > > 8966 #undef NO > > 8967 #define NULL (__null) > > 8968 #define Nil (__null) > > 8969 #define nil (__null) > > 8970 #define YES ((BOOL)1) > > 8971 #define NO ((BOOL)0) > > 8972 typedef signed char BOOL; > > 8973 typedef signed __INT8_TYPE__ int8_t; > > 8974 typedef unsigned __INT8_TYPE__ uint8_t; > > 8975 typedef signed __INT16_TYPE__ int16_t; > > 8976 typedef unsigned __INT16_TYPE__ uint16_t; > > 8977 typedef signed __INT32_TYPE__ int32_t; > > 8978 typedef unsigned __INT32_TYPE__ uint32_t; > > 8979 typedef signed __INT64_TYPE__ int64_t; > > 8980 typedef unsigned __INT64_TYPE__ uint64_t; > > 8981 typedef signed __INTPTR_TYPE__ intptr_t; > > 8982 typedef unsigned __INTPTR_TYPE__ uintptr_t; > > 8983 typedef __SIZE_TYPE__ size_t; > > 8984 typedef __PTRDIFF_TYPE__ ptrdiff_t; > > 8985 typedef unsigned short unichar; > > 8986 > > 8987 > > 8988 void > > 8989 $__lldb_expr(void *$__lldb_arg) > > 8990 { > > 8991 set; > > 8992 } > > 8993 > > 8994 1373482599.143049 [66e2/7ff3afd86740]: LayoutRecordType[12] on > > (ASTContext*)0x2d0d650 for (RecordDecl*)0x2d1ea80 [name = '_objc_super'] > > 8995 1373482599.143353 [66e2/7ff3afd86740]: LayoutRecordType[13] on > > (ASTContext*)0x2d0d650 for (RecordDecl*)0x2d1ed20 [name = '_message_ref_t'] > > 8996 1373482599.145382 [66e2/7ff3afd86740]: FindExternalLexicalDecls[6] on > > (ASTContext*)0x2d0d650 in (TranslationUnitDecl*)0x2d1e3b0 with null > > predicate > > 8997 1373482599.145593 [66e2/7ff3afd86740]: TransformTopLevelDecl(BOOL) > > 8998 1373482599.145772 [66e2/7ff3afd86740]: TransformTopLevelDecl(int8_t) > > 8999 1373482599.145942 [66e2/7ff3afd86740]: TransformTopLevelDecl(uint8_t) > > 9000 1373482599.146113 [66e2/7ff3afd86740]: TransformTopLevelDecl(int16_t) > > 9001 1373482599.146281 [66e2/7ff3afd86740]: TransformTopLevelDecl(uint16_t) > > 9002 1373482599.146451 [66e2/7ff3afd86740]: TransformTopLevelDecl(int32_t) > > 9003 1373482599.146619 [66e2/7ff3afd86740]: TransformTopLevelDecl(uint32_t) > > 9004 1373482599.146803 [66e2/7ff3afd86740]: TransformTopLevelDecl(int64_t) > > 9005 1373482599.146999 [66e2/7ff3afd86740]: TransformTopLevelDecl(uint64_t) > > 9006 1373482599.147183 [66e2/7ff3afd86740]: TransformTopLevelDecl(intptr_t) > > 9007 1373482599.147360 [66e2/7ff3afd86740]: TransformTopLevelDecl(uintptr_t) > > 9008 1373482599.147539 [66e2/7ff3afd86740]: TransformTopLevelDecl(size_t) > > 9009 1373482599.147716 [66e2/7ff3afd86740]: TransformTopLevelDecl(ptrdiff_t) > > 9010 1373482599.147875 [66e2/7ff3afd86740]: TransformTopLevelDecl(unichar) > > 9011 1373482599.148093 [66e2/7ff3afd86740]: > > ClangExpressionDeclMap::FindExternalVisibleDecls[18] for '$__lldb_arg' in a > > 'TranslationUnit' > > 9012 1373482599.148118 [66e2/7ff3afd86740]: CEDM::FEVD[18] Searching the > > root namespace > > 9013 1373482599.148145 [66e2/7ff3afd86740]: > > ClangASTSource::FindExternalVisibleDecls[18] on (ASTContext*)0x2d0d650 for > > '$__lldb_arg' in a 'TranslationUnit' > > 9014 1373482599.148161 [66e2/7ff3afd86740]: CAS::FEVD[18] Searching the > > root namespace > > 9015 1373482599.148374 [66e2/7ff3afd86740]: > > ClangExpressionDeclMap::FindExternalVisibleDecls[19] for '$__lldb_expr' in > > a 'TranslationUnit' > > 9016 1373482599.148400 [66e2/7ff3afd86740]: CEDM::FEVD[19] Searching the > > root namespace > > 9017 1373482599.148424 [66e2/7ff3afd86740]: > > ClangASTSource::FindExternalVisibleDecls[19] on (ASTContext*)0x2d0d650 for > > '$__lldb_expr' in a 'TranslationUnit' > > 9018 1373482599.148438 [66e2/7ff3afd86740]: CAS::FEVD[19] Searching the > > root namespace > > 9019 1373482599.148726 [66e2/7ff3afd86740]: > > ClangExpressionDeclMap::FindExternalVisibleDecls[20] for 'set' in a > > 'TranslationUnit' > > 9020 1373482599.148752 [66e2/7ff3afd86740]: CEDM::FEVD[20] Searching the > > root namespace > > > > (gdb) bt > > #0 0x00007f0800b38425 in __GI_raise (sig=<optimized out>) at > > ../nptl/sysdeps/unix/sysv/linux/raise.c:64 > > #1 0x00007f0800b3bb8b in __GI_abort () at abort.c:91 > > #2 0x00007f0800b310ee in __assert_fail_base (fmt=<optimized out>, > > assertion=0x7f080565ec8a "DefinitionData && \"queried property of class > > with no definition\"", file=0x7f0805 > > 6cd817 > > "/home/mikesart/data/src/llvm.hg/llvm/tools/clang/include/clang/AST/DeclCXX.h", > > line=<optimized out>, function=<optimized out>) at assert.c:94 > > #3 0x00007f0800b31192 in __GI___assert_fail (assertion=0x7f080565ec8a > > "DefinitionData && \"queried property of class with no definition\"", > > file=0x7f08056cd817 "/home/mikesar > > t/data/src/llvm.hg/llvm/tools/clang/include/clang/AST/DeclCXX.h", line=553, > > function=0x7f08056cd8f9 "struct DefinitionData > > &clang::CXXRecordDecl::data()") at assert.c:103 > > #4 0x00007f0803633e16 in clang::CXXRecordDecl::data (this=0x194ca40) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/include/clang/AST/DeclCXX.h:553 > > #5 0x00007f08036d205b in clang::CXXRecordDecl::addedMember > > (this=0x194ca40, D=0x1522100) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/AST/DeclCXX.cpp:411 > > #6 0x00007f08036c6423 in clang::DeclContext::addHiddenDecl > > (this=0x194ca78, D=0x1522100) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/AST/DeclBase.cpp:1108 > > #7 0x00007f08036c648d in clang::DeclContext::addDecl (this=0x194ca78, > > D=0x1522100) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/AST/DeclBase.cpp:1119 > > #8 0x00007f0803285cca in lldb_private::ClangASTContext::CreateRecordType > > (this=0x7f07d40017d8, decl_ctx=0x194ca78, access_type=lldb::eAccessPrivate, > > name=0x7f07edc5ffae "Erro > > rCollector", kind=3, language=lldb::eLanguageTypeUnknown, > > metadata=0x7fffbd00f3f0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Symbol/ClangASTContext.cpp:1182 > > #9 0x00007f08033bc0e3 in SymbolFileDWARF::ParseType (this=0x7f07d40059b0, > > sc=..., dwarf_cu=0x7f07d4068d40, die=0x12e5150, type_is_new_ptr=0x0) at > > /home/mikesart/data/src/llvm > > .hg/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:6157 > > #10 0x00007f08033b3961 in SymbolFileDWARF::GetTypeForDIE > > (this=0x7f07d40059b0, dwarf_cu=0x7f07d4068d40, die=0x12e5150) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/sourc > > e/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:4496 > > #11 0x00007f08033b373e in SymbolFileDWARF::ResolveType > > (this=0x7f07d40059b0, dwarf_cu=0x7f07d4068d40, type_die=0x12e5150, > > assert_not_being_parsed=true) at /home/mikesart/data/ > > src/llvm.hg/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:2652 > > #12 0x00007f08033aa418 in SymbolFileDWARF::ResolveTypeUID > > (this=0x7f07d40059b0, cu=0x7f07d4068d40, die=0x12e5150, > > assert_not_being_parsed=true) at /home/mikesart/data/src/llvm > > .hg/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:2325 > > #13 0x00007f08033b17fe in SymbolFileDWARF::ResolveTypeUID > > (this=0x7f07d40059b0, type_uid=456429) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Plugins/SymbolFile/D > > WARF/SymbolFileDWARF.cpp:2265 > > #14 0x00007f08032e96fc in lldb_private::Type::GetEncodingType > > (this=0x1522fa0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Symbol/Type.cpp:316 > > #15 0x00007f08032e8f56 in lldb_private::Type::ResolveClangType > > (this=0x1522fa0, > > clang_type_resolve_state=lldb_private::Type::eResolveStateForward) at > > /home/mikesart/data/src/l > > lvm.hg/llvm/tools/lldb/source/Symbol/Type.cpp:519 > > #16 0x00007f08032e9d9e in lldb_private::Type::GetClangForwardType > > (this=0x1522fa0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Symbol/Type.cpp:681 > > #17 0x00007f08033b97ec in SymbolFileDWARF::ParseChildParameters > > (this=0x7f07d40059b0, sc=..., containing_decl_ctx=0x194c968, > > dwarf_cu=0x7f07d4068d40, parent_die=0x132a770, ski > > p_artificial=true, is_static=@0x7fffbd010f35: false, > > type_list=0x7f07d4005938, function_param_types=..., > > function_param_decls=..., type_quals=@0x7fffbd010f20: 0, template_para > > m_infos=...) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:4279 > > #18 0x00007f08033bd3ca in SymbolFileDWARF::ParseType (this=0x7f07d40059b0, > > sc=..., dwarf_cu=0x7f07d4068d40, die=0x132a770, type_is_new_ptr=0x0) at > > /home/mikesart/data/src/llvm > > .hg/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:6507 > > #19 0x00007f08033b3961 in SymbolFileDWARF::GetTypeForDIE > > (this=0x7f07d40059b0, dwarf_cu=0x7f07d4068d40, die=0x132a770) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/sourc > > e/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:4496 > > #20 0x00007f08033b373e in SymbolFileDWARF::ResolveType > > (this=0x7f07d40059b0, dwarf_cu=0x7f07d4068d40, type_die=0x132a770, > > assert_not_being_parsed=true) at /home/mikesart/data/ > > src/llvm.hg/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:2652 > > #21 0x00007f08033aa418 in SymbolFileDWARF::ResolveTypeUID > > (this=0x7f07d40059b0, cu=0x7f07d4068d40, die=0x132a770, > > assert_not_being_parsed=true) at /home/mikesart/data/src/llvm > > .hg/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:2325 > > #22 0x00007f08033bf8de in SymbolFileDWARF::GetClangDeclContextForDIE > > (this=0x7f07d40059b0, sc=..., cu=0x7f07d4068d40, die=0x132a770) at > > /home/mikesart/data/src/llvm.hg/llvm/to > > ols/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:4605 > > #23 0x00007f08033b16f6 in SymbolFileDWARF::GetClangDeclContextForDIEOffset > > (this=0x7f07d40059b0, sc=..., die_offset=650576) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/ > > source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:4531 > > #24 0x00007f08033bf7c0 in SymbolFileDWARF::GetClangDeclContextForDIE > > (this=0x7f07d40059b0, sc=..., cu=0x7f07d4068d40, die=0x13685c0) at > > /home/mikesart/data/src/llvm.hg/llvm/to > > ols/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:4594 > > #25 0x00007f08033b16f6 in SymbolFileDWARF::GetClangDeclContextForDIEOffset > > (this=0x7f07d40059b0, sc=..., die_offset=833179) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/ > > source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:4531 > > #26 0x00007f08033bf80b in SymbolFileDWARF::GetClangDeclContextForDIE > > (this=0x7f07d40059b0, sc=..., cu=0x7f07d4068d40, die=0x1368610) at > > /home/mikesart/data/src/llvm.hg/llvm/to > > ols/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:4598 > > #27 0x00007f08033b16f6 in SymbolFileDWARF::GetClangDeclContextForDIEOffset > > (this=0x7f07d40059b0, sc=..., die_offset=833247) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/ > > source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:4531 > > #28 0x00007f08033b163a in SymbolFileDWARF::GetClangDeclContextForTypeUID > > (this=0x7f07d40059b0, sc=..., type_uid=833247) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/sour > > ce/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp:2250 > > #29 0x00007f08032c24b8 in lldb_private::Function::GetClangDeclContext > > (this=0x1840070) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Symbol/Function.cpp:451 > > #30 0x00007f08031cf0dc in > > lldb_private::ClangExpressionDeclMap::FindExternalVisibleDecls > > (this=0x1b3e190, context=..., module_sp=..., namespace_decl=..., > > current_id=2) at /hom > > e/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Expression/ClangExpressionDeclMap.cpp:1329 > > #31 0x00007f08031cd6a6 in > > lldb_private::ClangExpressionDeclMap::FindExternalVisibleDecls > > (this=0x1b3e190, context=...) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/sourc > > e/Expression/ClangExpressionDeclMap.cpp:872 > > #32 0x00007f0803203539 in > > lldb_private::ClangASTSource::FindExternalVisibleDeclsByName > > (this=0x1b3e190, decl_ctx=0x13b62f0, clang_decl_name=...) at > > /home/mikesart/data/src/llv > > m.hg/llvm/tools/lldb/source/Expression/ClangASTSource.cpp:162 > > #33 0x00007f08031df7de in > > lldb_private::ClangASTSource::ClangASTSourceProxy::FindExternalVisibleDeclsByName(clang::DeclContext > > const*, clang::DeclarationName) () from /home/mi > > kesart/data/src/llvm.hg/build/lib/liblldb.so.3.4 > > #34 0x00007f08036c6fba in clang::DeclContext::lookup (this=0x13b62f0, > > Name=...) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/AST/DeclBase.cpp:1242 > > #35 0x00007f08036c99f1 in clang::DeclContext::lookup (this=0x13b62f0, > > Name=...) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/include/clang/AST/DeclBase.h:1439 > > #36 0x00007f080403986a in LookupDirect (S=..., R=..., DC=0x13b62f0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Sema/SemaLookup.cpp:673 > > #37 0x00007f0804038518 in CppNamespaceLookup (S=..., R=..., Context=..., > > NS=0x13b62f0, UDirs=...) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Sema/SemaLookup.cpp:7 > > 65 > > #38 0x00007f0804037ba5 in clang::Sema::CppLookupName (this=0x13b98e0, > > R=..., S=0x13be3b0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Sema/SemaLookup.cpp:1088 > > #39 0x00007f0804039499 in clang::Sema::LookupName (this=0x13b98e0, R=..., > > S=0x13ca620, AllowBuiltinCreation=true) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Sema/ > > SemaLookup.cpp:1261 > > #40 0x00007f080403a4ee in clang::Sema::LookupParsedName (this=0x13b98e0, > > R=..., S=0x13ca620, SS=0x7fffbd013ba8, AllowBuiltinCreation=true, > > EnteringContext=false) at /home/mike > > sart/data/src/llvm.hg/llvm/tools/clang/lib/Sema/SemaLookup.cpp:1684 > > #41 0x00007f0803dff79f in clang::Sema::ClassifyName (this=0x13b98e0, > > S=0x13ca620, SS=..., Name=@0x7fffbd013b90: 0x13d5fa8, NameLoc=..., > > NextToken=..., IsAddressOfOperand=false > > , CCC=0x7fffbd013da0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Sema/SemaDecl.cpp:610 > > #42 0x00007f0803cb4cd8 in clang::Parser::TryAnnotateName (this=0x13bbfe0, > > IsAddressOfOperand=false, CCC=0x7fffbd013da0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib > > /Parse/Parser.cpp:1384 > > #43 0x00007f0803d25d3f in > > clang::Parser::ParseStatementOrDeclarationAfterAttributes (this=0x13bbfe0, > > Stmts=..., OnlyStatement=false, TrailingElseLoc=0x0, Attrs=...) at /home/m > > ikesart/data/src/llvm.hg/llvm/tools/clang/lib/Parse/ParseStmt.cpp:166 > > #44 0x00007f0803d25695 in clang::Parser::ParseStatementOrDeclaration > > (this=0x13bbfe0, Stmts=..., OnlyStatement=false, TrailingElseLoc=0x0) at > > /home/mikesart/data/src/llvm.hg/l > > lvm/tools/clang/lib/Parse/ParseStmt.cpp:102 > > #45 0x00007f0803d2c4a0 in clang::Parser::ParseCompoundStatementBody > > (this=0x13bbfe0, isStmtExpr=false) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Parse/ParseStmt. > > cpp:843 > > #46 0x00007f0803d2f43f in clang::Parser::ParseFunctionStatementBody > > (this=0x13bbfe0, Decl=0x13c55a0, BodyScope=...) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Par > > se/ParseStmt.cpp:2393 > > #47 0x00007f0803cb3f65 in clang::Parser::ParseFunctionDefinition > > (this=0x13bbfe0, D=..., TemplateInfo=..., LateParsedAttrs=0x7fffbd014aa8) > > at /home/mikesart/data/src/llvm.hg/l > > lvm/tools/clang/lib/Parse/Parser.cpp:1118 > > #48 0x00007f0803ccb5d3 in clang::Parser::ParseDeclGroup (this=0x13bbfe0, > > DS=..., Context=0, AllowFunctionDefinitions=true, DeclEnd=0x0, FRI=0x0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Parse/ParseDecl.cpp:1622 > > #49 0x00007f0803cb3078 in clang::Parser::ParseDeclOrFunctionDefInternal > > (this=0x13bbfe0, attrs=..., DS=..., AS=clang::AS_none) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/cl > > ang/lib/Parse/Parser.cpp:896 > > #50 0x00007f0803cb2843 in > > clang::Parser::ParseDeclarationOrFunctionDefinition (this=0x13bbfe0, > > attrs=..., DS=0x0, AS=clang::AS_none) at > > /home/mikesart/data/src/llvm.hg/llvm/to > > ols/clang/lib/Parse/Parser.cpp:912 > > #51 0x00007f0803cb2060 in clang::Parser::ParseExternalDeclaration > > (this=0x13bbfe0, attrs=..., DS=0x0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Parse/Parser.cpp: > > 777 > > #52 0x00007f0803cb125b in clang::Parser::ParseTopLevelDecl (this=0x13bbfe0, > > Result=...) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Parse/Parser.cpp:582 > > #53 0x00007f0803cad102 in clang::ParseAST (S=..., PrintStats=false, > > SkipFunctionBodies=false) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Parse/ParseAST.cpp:144 > > #54 0x00007f0803caceaa in clang::ParseAST (PP=..., Consumer=0x1d30170, > > Ctx=..., PrintStats=false, TUKind=clang::TU_Complete, > > CompletionConsumer=0x0, SkipFunctionBodies=false) > > at > > /home/mikesart/data/src/llvm.hg/llvm/tools/clang/lib/Parse/ParseAST.cpp:96 > > #55 0x00007f08031d904a in lldb_private::ClangExpressionParser::Parse > > (this=0x7fffbd016120, stream=...) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Expression/Cla > > ngExpressionParser.cpp:400 > > #56 0x00007f0803196171 in lldb_private::ClangUserExpression::Parse > > (this=0x1cc8840, error_stream=..., exe_ctx=..., > > execution_policy=lldb_private::eExecutionPolicyOnlyWhenNeede > > d, keep_result_in_memory=true) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Expression/ClangUserExpression.cpp:504 > > #57 0x00007f0803197d4f in > > lldb_private::ClangUserExpression::EvaluateWithError (exe_ctx=..., > > execution_policy=lldb_private::eExecutionPolicyOnlyWhenNeeded, > > language=lldb::eLan > > guageTypeUnknown, > > desired_type=lldb_private::ClangExpression::eResultTypeAny, > > unwind_on_error=true, ignore_breakpoints=true, expr_cstr=0xfdddd8 "set", > > expr_prefix=0x0, result_ > > valobj_sp=..., error=..., run_others=true, timeout_usec=0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Expression/ClangUserExpression.cpp:1006 > > #58 0x00007f0803197b3c in lldb_private::ClangUserExpression::Evaluate > > (exe_ctx=..., > > execution_policy=lldb_private::eExecutionPolicyOnlyWhenNeeded, > > language=lldb::eLanguageType > > Unknown, desired_type=lldb_private::ClangExpression::eResultTypeAny, > > unwind_on_error=true, ignore_breakpoints=true, expr_cstr=0xfdddd8 "set", > > expr_prefix=0x0, result_valobj_sp > > =..., run_others=true, timeout_usec=0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Expression/ClangUserExpression.cpp:947 > > #59 0x00007f0803360671 in lldb_private::Target::EvaluateExpression > > (this=0x12812f0, expr_cstr=0xfdddd8 "set", frame=0x7f07d772d3d0, > > result_valobj_sp=..., options=...) at /home > > /mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Target/Target.cpp:1889 > > #60 0x00007f0803509388 in > > lldb_private::CommandObjectExpression::EvaluateExpression (this=0xe875a0, > > expr=0xfdddd8 "set", output_stream=0x127cfe0, error_stream=0x127d038, resul > > t=0x127cfe0) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Commands/CommandObjectExpression.cpp:345 > > #61 0x00007f0803509d0e in lldb_private::CommandObjectExpression::DoExecute > > (this=0xe875a0, command=0xfdddd8 "set", result=...) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/ll > > db/source/Commands/CommandObjectExpression.cpp:528 > > #62 0x00007f080323b545 in lldb_private::CommandObjectRaw::Execute > > (this=0xe875a0, args_string=0xfdddd8 "set", result=...) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/so > > urce/Interpreter/CommandObject.cpp:1064 > > #63 0x00007f080322cca2 in lldb_private::CommandInterpreter::HandleCommand > > (this=0xe7f5f0, command_line=0x7f07e8000ed8 "expr set", > > lazy_add_to_history=lldb_private::eLazyBoolYe > > s, result=..., override_context=0x0, repeat_on_empty_command=true, > > no_context_switching=false) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/source/Interpreter/CommandInt > > erpreter.cpp:1825 > > #64 0x00007f0802fe7404 in lldb::SBCommandInterpreter::HandleCommand > > (this=0x7fffbd017060, command_line=0x7f07e8000ed8 "expr set", result=..., > > add_to_history=true) at /home/mik > > esart/data/src/llvm.hg/llvm/tools/lldb/source/API/SBCommandInterpreter.cpp:122 > > #65 0x000000000040bf50 in Driver::HandleIOEvent (this=0x7fffbd019d20, > > event=...) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/tools/driver/Driver.cpp:1083 > > #66 0x000000000040d8aa in Driver::MainLoop (this=0x7fffbd019d20) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/tools/driver/Driver.cpp:1556 > > #67 0x000000000040e0db in main (argc=1, argv=0x7fffbd019f28, > > envp=0x7fffbd019f38) at > > /home/mikesart/data/src/llvm.hg/llvm/tools/lldb/tools/driver/Driver.cpp:1727 > > > > _______________________________________________ > > lldb-dev mailing list > > [email protected] > > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev > > _______________________________________________ lldb-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
