Correction to this: When we create a C++ class we start the definition right away, we don't do this for ObjC classes (since they don't inherit from TagDecl which has a isComplete() accessor) for the very reason that we are running into here. The SymbolFileDWARF::ResolveClangOpaqueTypeDefinition() then will:
1 - starts the definition for ObjC classes only (C++ classes get their definition started right away) 2 - parses all members (ivars, methods, etc) 3 - completes the definition On 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 _______________________________________________ lldb-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
