From scallanan at apple.com Mon Mar 14 19:17:19 2011 From: scallanan at apple.com (Sean Callanan) Date: Tue, 15 Mar 2011 00:17:19 -0000 Subject: [Lldb-commits] [lldb] r127634 - in /lldb/trunk: include/lldb/Core/ClangForward.h include/lldb/Expression/ClangExpressionParser.h llvm.zip scripts/build-llvm.pl source/Expression/ASTResultSynthesizer.cpp source/Expression/ASTStructExtractor.cpp source/Expression/ClangASTSource.cpp source/Expression/ClangExpressionParser.cpp source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp source/Symbol/ClangASTContext.cpp source/Symbol/ClangASTType.cpp Message-ID: <20110315001719.B70322A6C12C@llvm.org> Author: spyffe Date: Mon Mar 14 19:17:19 2011 New Revision: 127634 URL: http://llvm.org/viewvc/llvm-project?rev=127634&view=rev Log: Updated to LLVM/Clang revision 127600. Modified: lldb/trunk/include/lldb/Core/ClangForward.h lldb/trunk/include/lldb/Expression/ClangExpressionParser.h lldb/trunk/llvm.zip lldb/trunk/scripts/build-llvm.pl lldb/trunk/source/Expression/ASTResultSynthesizer.cpp lldb/trunk/source/Expression/ASTStructExtractor.cpp lldb/trunk/source/Expression/ClangASTSource.cpp lldb/trunk/source/Expression/ClangExpressionParser.cpp lldb/trunk/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp lldb/trunk/source/Symbol/ClangASTContext.cpp lldb/trunk/source/Symbol/ClangASTType.cpp Modified: lldb/trunk/include/lldb/Core/ClangForward.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ClangForward.h?rev=127634&r1=127633&r2=127634&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/ClangForward.h (original) +++ lldb/trunk/include/lldb/Core/ClangForward.h Mon Mar 14 19:17:19 2011 @@ -120,6 +120,7 @@ namespace llvm { + class LLVMContext; class ExecutionEngine; } Modified: lldb/trunk/include/lldb/Expression/ClangExpressionParser.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ClangExpressionParser.h?rev=127634&r1=127633&r2=127634&view=diff ============================================================================== --- lldb/trunk/include/lldb/Expression/ClangExpressionParser.h (original) +++ lldb/trunk/include/lldb/Expression/ClangExpressionParser.h Mon Mar 14 19:17:19 2011 @@ -178,6 +178,7 @@ ClangExpression &m_expr; ///< The expression to be parsed + std::auto_ptr m_llvm_context; ///< The LLVM context to generate IR into std::auto_ptr m_file_manager; ///< The Clang file manager object used by the compiler std::auto_ptr m_compiler; ///< The Clang compiler used to parse expressions into IR std::auto_ptr m_builtin_context; ///< Context for Clang built-ins Modified: lldb/trunk/llvm.zip URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/llvm.zip?rev=127634&r1=127633&r2=127634&view=diff ============================================================================== Binary files - no diff available. Modified: lldb/trunk/scripts/build-llvm.pl URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/build-llvm.pl?rev=127634&r1=127633&r2=127634&view=diff ============================================================================== --- lldb/trunk/scripts/build-llvm.pl (original) +++ lldb/trunk/scripts/build-llvm.pl Mon Mar 14 19:17:19 2011 @@ -25,7 +25,7 @@ our $llvm_configuration = $ENV{LLVM_CONFIGURATION}; -our $llvm_revision = "124349"; +our $llvm_revision = "127600"; our $llvm_source_dir = "$ENV{SRCROOT}"; our $cc = "$ENV{DEVELOPER_BIN_DIR}/gcc-4.2"; our $cxx = "$ENV{DEVELOPER_BIN_DIR}/g++-4.2"; @@ -81,6 +81,7 @@ "$llvm_configuration/lib/libLLVMX86CodeGen.a", "$llvm_configuration/lib/libLLVMX86Disassembler.a", "$llvm_configuration/lib/libLLVMX86Info.a", + "$llvm_configuration/lib/libLLVMX86Utils.a", ); if (-l $llvm_dstroot) Modified: lldb/trunk/source/Expression/ASTResultSynthesizer.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ASTResultSynthesizer.cpp?rev=127634&r1=127633&r2=127634&view=diff ============================================================================== --- lldb/trunk/source/Expression/ASTResultSynthesizer.cpp (original) +++ lldb/trunk/source/Expression/ASTResultSynthesizer.cpp Mon Mar 14 19:17:19 2011 @@ -320,6 +320,7 @@ result_decl = VarDecl::Create(Ctx, DC, SourceLocation(), + SourceLocation(), &result_ptr_id, ptr_qual_type, NULL, @@ -331,7 +332,7 @@ ExprResult address_of_expr = m_sema->CreateBuiltinUnaryOp(SourceLocation(), UO_AddrOf, last_expr); - m_sema->AddInitializerToDecl(result_decl, address_of_expr.take()); + m_sema->AddInitializerToDecl(result_decl, address_of_expr.take(), true, true); } else { @@ -339,7 +340,8 @@ result_decl = VarDecl::Create(Ctx, DC, - SourceLocation(), + SourceLocation(), + SourceLocation(), &result_id, expr_qual_type, NULL, @@ -349,7 +351,7 @@ if (!result_decl) return false; - m_sema->AddInitializerToDecl(result_decl, last_expr); + m_sema->AddInitializerToDecl(result_decl, last_expr, true, true); } DC->addDecl(result_decl); Modified: lldb/trunk/source/Expression/ASTStructExtractor.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ASTStructExtractor.cpp?rev=127634&r1=127633&r2=127634&view=diff ============================================================================== --- lldb/trunk/source/Expression/ASTStructExtractor.cpp (original) +++ lldb/trunk/source/Expression/ASTStructExtractor.cpp Mon Mar 14 19:17:19 2011 @@ -75,9 +75,9 @@ if (!struct_layout) return; - m_function.m_struct_size = struct_layout->getSize() / 8; // Clang returns sizes in bits. + m_function.m_struct_size = struct_layout->getSize().getQuantity(); // TODO Store m_struct_size as CharUnits m_function.m_return_offset = struct_layout->getFieldOffset(struct_layout->getFieldCount() - 1) / 8; - m_function.m_return_size = (struct_layout->getDataSize() / 8) - m_function.m_return_offset; + m_function.m_return_size = struct_layout->getDataSize().getQuantity() - m_function.m_return_offset; for (unsigned field_index = 0, num_fields = struct_layout->getFieldCount(); field_index < num_fields; Modified: lldb/trunk/source/Expression/ClangASTSource.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangASTSource.cpp?rev=127634&r1=127633&r2=127634&view=diff ============================================================================== --- lldb/trunk/source/Expression/ClangASTSource.cpp (original) +++ lldb/trunk/source/Expression/ClangASTSource.cpp Mon Mar 14 19:17:19 2011 @@ -159,6 +159,7 @@ clang::NamedDecl *Decl = VarDecl::Create(m_ast_source.m_ast_context, const_cast(m_decl_context), SourceLocation(), + SourceLocation(), ii, QualType::getFromOpaquePtr(type), 0, @@ -175,6 +176,7 @@ clang::FunctionDecl *func_decl = FunctionDecl::Create (m_ast_source.m_ast_context, const_cast(m_decl_context), SourceLocation(), + SourceLocation(), m_decl_name.getAsIdentifierInfo(), QualType::getFromOpaquePtr(type), NULL, @@ -204,6 +206,7 @@ param_var_decls[ArgIndex] = ParmVarDecl::Create (m_ast_source.m_ast_context, const_cast(m_decl_context), SourceLocation(), + SourceLocation(), NULL, arg_qual_type, NULL, Modified: lldb/trunk/source/Expression/ClangExpressionParser.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangExpressionParser.cpp?rev=127634&r1=127633&r2=127634&view=diff ============================================================================== --- lldb/trunk/source/Expression/ClangExpressionParser.cpp (original) +++ lldb/trunk/source/Expression/ClangExpressionParser.cpp Mon Mar 14 19:17:19 2011 @@ -47,13 +47,13 @@ #include "clang/Parse/ParseAST.h" #include "clang/Rewrite/FrontendActions.h" #include "clang/Sema/SemaConsumer.h" -#include "clang/StaticAnalyzer/FrontendActions.h" +#include "clang/StaticAnalyzer/Frontend/FrontendActions.h" #include "llvm/ADT/StringRef.h" #include "llvm/ExecutionEngine/ExecutionEngine.h" #include "llvm/ExecutionEngine/JIT.h" -#include "llvm/Module.h" #include "llvm/LLVMContext.h" +#include "llvm/Module.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/DynamicLibrary.h" @@ -112,7 +112,7 @@ case ASTDump: return new ASTDumpAction(); case ASTPrint: return new ASTPrintAction(); - case ASTPrintXML: return new ASTPrintXMLAction(); + case ASTDumpXML: return new ASTDumpXMLAction(); case ASTView: return new ASTViewAction(); case BoostCon: return new BoostConAction(); case DumpRawTokens: return new DumpRawTokensAction(); @@ -127,7 +127,6 @@ case FixIt: return new FixItAction(); case GeneratePCH: return new GeneratePCHAction(); case GeneratePTH: return new GeneratePTHAction(); - case InheritanceView: return new InheritanceViewAction(); case InitOnly: return new InitOnlyAction(); case ParseSyntaxOnly: return new SyntaxOnlyAction(); @@ -196,7 +195,6 @@ // 1. Create a new compiler instance. m_compiler.reset(new CompilerInstance()); - m_compiler->setLLVMContext(new LLVMContext()); // 2. Set options. @@ -305,10 +303,11 @@ std::string module_name("$__lldb_module"); + m_llvm_context.reset(new LLVMContext()); m_code_generator.reset(CreateLLVMCodeGen(m_compiler->getDiagnostics(), module_name, m_compiler->getCodeGenOpts(), - m_compiler->getLLVMContext())); + *m_llvm_context)); } ClangExpressionParser::~ClangExpressionParser() Modified: lldb/trunk/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp?rev=127634&r1=127633&r2=127634&view=diff ============================================================================== --- lldb/trunk/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp (original) +++ lldb/trunk/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp Mon Mar 14 19:17:19 2011 @@ -29,8 +29,7 @@ { const llvm::Triple &triple_ref = process->GetTarget().GetArchitecture().GetTriple(); const llvm::Triple::OSType os_type = triple_ref.getOS(); - if ((os_type == llvm::Triple::UnknownOS) || - (os_type == llvm::Triple::NoOS)) + if ((os_type == llvm::Triple::UnknownOS)) create = true; } Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=127634&r1=127633&r2=127634&view=diff ============================================================================== --- lldb/trunk/source/Symbol/ClangASTContext.cpp (original) +++ lldb/trunk/source/Symbol/ClangASTContext.cpp Mon Mar 14 19:17:19 2011 @@ -195,10 +195,14 @@ switch (IK) { case IK_None: case IK_AST: + case IK_LLVM_IR: assert (!"Invalid input kind!"); case IK_OpenCL: LangStd = LangStandard::lang_opencl; break; + case IK_CUDA: + LangStd = LangStandard::lang_cuda; + break; case IK_Asm: case IK_C: case IK_PreprocessedC: @@ -1050,6 +1054,7 @@ (TagDecl::TagKind)kind, decl_ctx, SourceLocation(), + SourceLocation(), name && name[0] ? &ast->Idents.get(name) : NULL); return ast->getTagDeclType(decl).getAsOpaquePtr(); @@ -1388,6 +1393,7 @@ { cxx_method_decl = CXXDestructorDecl::Create (*ast, cxx_record_decl, + SourceLocation(), DeclarationNameInfo (ast->DeclarationNames.getCXXDestructorName (ast->getCanonicalType (record_qual_type)), SourceLocation()), method_qual_type, NULL, @@ -1398,6 +1404,7 @@ { cxx_method_decl = CXXConstructorDecl::Create (*ast, cxx_record_decl, + SourceLocation(), DeclarationNameInfo (ast->DeclarationNames.getCXXConstructorName (ast->getCanonicalType (record_qual_type)), SourceLocation()), method_qual_type, NULL, // TypeSourceInfo * @@ -1415,23 +1422,27 @@ { cxx_method_decl = CXXMethodDecl::Create (*ast, cxx_record_decl, + SourceLocation(), DeclarationNameInfo (ast->DeclarationNames.getCXXOperatorName (op_kind), SourceLocation()), method_qual_type, NULL, // TypeSourceInfo * is_static, SC_None, - is_inline); + is_inline, + SourceLocation()); } else if (num_params == 0) { // Conversion operators don't take params... cxx_method_decl = CXXConversionDecl::Create (*ast, cxx_record_decl, + SourceLocation(), DeclarationNameInfo (ast->DeclarationNames.getCXXConversionFunctionName (ast->getCanonicalType (function_Type->getResultType())), SourceLocation()), method_qual_type, NULL, // TypeSourceInfo * is_inline, - is_explicit); + is_explicit, + SourceLocation()); } } @@ -1439,12 +1450,14 @@ { cxx_method_decl = CXXMethodDecl::Create (*ast, cxx_record_decl, + SourceLocation(), DeclarationNameInfo (decl_name, SourceLocation()), method_qual_type, NULL, // TypeSourceInfo * is_static, SC_None, - is_inline); + is_inline, + SourceLocation()); } } @@ -1464,6 +1477,7 @@ params[param_index] = ParmVarDecl::Create (*ast, cxx_method_decl, SourceLocation(), + SourceLocation(), NULL, // anonymous method_function_prototype->getArgType(param_index), NULL, @@ -1527,6 +1541,7 @@ FieldDecl *field = FieldDecl::Create (*ast, record_decl, SourceLocation(), + SourceLocation(), name ? &identifier_table->get(name) : NULL, // Identifier QualType::getFromOpaquePtr(field_type), // Field type NULL, // DeclaratorInfo * @@ -1790,6 +1805,7 @@ ObjCIvarDecl *field = ObjCIvarDecl::Create (*ast, class_interface_decl, SourceLocation(), + SourceLocation(), &identifier_table->get(name), // Identifier QualType::getFromOpaquePtr(ivar_opaque_type), // Field type NULL, // TypeSourceInfo * @@ -1957,6 +1973,7 @@ params.push_back (ParmVarDecl::Create (*ast, objc_method_decl, SourceLocation(), + SourceLocation(), NULL, // anonymous method_function_prototype->getArgType(param_index), NULL, @@ -2328,7 +2345,6 @@ case clang::BuiltinType::LongDouble: case clang::BuiltinType::Dependent: case clang::BuiltinType::Overload: - case clang::BuiltinType::UndeducedAuto: case clang::BuiltinType::ObjCId: case clang::BuiltinType::ObjCClass: case clang::BuiltinType::ObjCSel: @@ -3515,7 +3531,9 @@ case clang::Type::IncompleteArray: break; case clang::Type::VariableArray: break; case clang::Type::ConstantArray: break; + case clang::Type::DependentSizedArray: break; case clang::Type::ExtVector: break; + case clang::Type::DependentSizedExtVector: break; case clang::Type::Vector: break; case clang::Type::Builtin: break; case clang::Type::BlockPointer: break; @@ -3536,6 +3554,18 @@ case clang::Type::Decltype: break; //case clang::Type::QualifiedName: break; case clang::Type::TemplateSpecialization: break; + case clang::Type::DependentTemplateSpecialization: break; + case clang::Type::TemplateTypeParm: break; + case clang::Type::SubstTemplateTypeParm: break; + case clang::Type::SubstTemplateTypeParmPack:break; + case clang::Type::PackExpansion: break; + case clang::Type::UnresolvedUsing: break; + case clang::Type::Paren: break; + case clang::Type::Elaborated: break; + case clang::Type::Attributed: break; + case clang::Type::Auto: break; + case clang::Type::InjectedClassName: break; + case clang::Type::DependentName: break; } // No DeclContext in this type... return NULL; @@ -3553,7 +3583,7 @@ ASTContext *ast = getASTContext(); if (decl_ctx == NULL) decl_ctx = ast->getTranslationUnitDecl(); - return NamespaceDecl::Create(*ast, decl_ctx, SourceLocation(), &ast->Idents.get(name)); + return NamespaceDecl::Create(*ast, decl_ctx, SourceLocation(), SourceLocation(), &ast->Idents.get(name)); } return NULL; } @@ -3574,6 +3604,7 @@ return FunctionDecl::Create(*ast, ast->getTranslationUnitDecl(), SourceLocation(), + SourceLocation(), DeclarationName (&ast->Idents.get(name)), QualType::getFromOpaquePtr(function_clang_type), NULL, @@ -3586,6 +3617,7 @@ return FunctionDecl::Create(*ast, ast->getTranslationUnitDecl(), SourceLocation(), + SourceLocation(), DeclarationName (), QualType::getFromOpaquePtr(function_clang_type), NULL, @@ -3613,9 +3645,9 @@ // TODO: Detect calling convention in DWARF? FunctionProtoType::ExtProtoInfo proto_info; proto_info.Variadic = is_variadic; - proto_info.HasExceptionSpec = false; - proto_info.HasAnyExceptionSpec = false; + proto_info.ExceptionSpecType = EST_None; proto_info.TypeQuals = type_quals; + proto_info.RefQualifier = RQ_None; proto_info.NumExceptions = 0; proto_info.Exceptions = NULL; @@ -3633,6 +3665,7 @@ return ParmVarDecl::Create(*ast, ast->getTranslationUnitDecl(), SourceLocation(), + SourceLocation(), name && name[0] ? &ast->Idents.get(name) : NULL, QualType::getFromOpaquePtr(param_type), NULL, @@ -3779,8 +3812,8 @@ EnumDecl *enum_decl = EnumDecl::Create (*ast, decl_ctx, SourceLocation(), - name && name[0] ? &ast->Idents.get(name) : NULL, SourceLocation(), + name && name[0] ? &ast->Idents.get(name) : NULL, NULL, false, // IsScoped false, // IsScopedUsingClassTag @@ -4186,6 +4219,8 @@ const clang::Type::TypeClass type_class = qual_type->getTypeClass(); switch (type_class) { + default: + break; case clang::Type::Typedef: return ClangASTContext::IsFunctionPointerType (cast(qual_type)->getDecl()->getUnderlyingType().getAsOpaquePtr()); @@ -4225,6 +4260,8 @@ const clang::Type::TypeClass type_class = qual_type->getTypeClass(); switch (type_class) { + default: + break; case clang::Type::ConstantArray: if (member_type) *member_type = cast(qual_type)->getElementType().getAsOpaquePtr(); @@ -4271,6 +4308,7 @@ TypedefDecl *decl = TypedefDecl::Create (*ast, decl_ctx, SourceLocation(), + SourceLocation(), name ? &identifier_table->get(name) : NULL, // Identifier ast->CreateTypeSourceInfo(qual_type)); Modified: lldb/trunk/source/Symbol/ClangASTType.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTType.cpp?rev=127634&r1=127633&r2=127634&view=diff ============================================================================== --- lldb/trunk/source/Symbol/ClangASTType.cpp (original) +++ lldb/trunk/source/Symbol/ClangASTType.cpp Mon Mar 14 19:17:19 2011 @@ -202,6 +202,22 @@ return GetEncoding(cast(qual_type)->getDecl()->getUnderlyingType().getAsOpaquePtr(), count); break; + case clang::Type::DependentSizedArray: + case clang::Type::DependentSizedExtVector: + case clang::Type::UnresolvedUsing: + case clang::Type::Paren: + case clang::Type::Elaborated: + case clang::Type::Attributed: + case clang::Type::TemplateTypeParm: + case clang::Type::SubstTemplateTypeParm: + case clang::Type::SubstTemplateTypeParmPack: + case clang::Type::Auto: + case clang::Type::InjectedClassName: + case clang::Type::DependentName: + case clang::Type::DependentTemplateSpecialization: + case clang::Type::PackExpansion: + case clang::Type::ObjCObject: + case clang::Type::TypeOfExpr: case clang::Type::TypeOf: case clang::Type::Decltype: @@ -243,7 +259,7 @@ case clang::Type::Builtin: switch (cast(qual_type)->getKind()) { - default: assert(0 && "Unknown builtin type!"); + //default: assert(0 && "Unknown builtin type!"); case clang::BuiltinType::Void: break; @@ -272,7 +288,6 @@ case clang::BuiltinType::NullPtr: case clang::BuiltinType::Overload: case clang::BuiltinType::Dependent: - case clang::BuiltinType::UndeducedAuto: case clang::BuiltinType::ObjCId: case clang::BuiltinType::ObjCClass: case clang::BuiltinType::ObjCSel: return lldb::eFormatHex; @@ -297,6 +312,22 @@ case clang::Type::Typedef: return ClangASTType::GetFormat(cast(qual_type)->getDecl()->getUnderlyingType().getAsOpaquePtr()); + case clang::Type::DependentSizedArray: + case clang::Type::DependentSizedExtVector: + case clang::Type::UnresolvedUsing: + case clang::Type::Paren: + case clang::Type::Elaborated: + case clang::Type::Attributed: + case clang::Type::TemplateTypeParm: + case clang::Type::SubstTemplateTypeParm: + case clang::Type::SubstTemplateTypeParmPack: + case clang::Type::Auto: + case clang::Type::InjectedClassName: + case clang::Type::DependentName: + case clang::Type::DependentTemplateSpecialization: + case clang::Type::PackExpansion: + case clang::Type::ObjCObject: + case clang::Type::TypeOfExpr: case clang::Type::TypeOf: case clang::Type::Decltype: @@ -1068,6 +1099,10 @@ uint32_t offset = data_byte_offset; switch (encoding) { + case lldb::eEncodingInvalid: + break; + case lldb::eEncodingVector: + break; case lldb::eEncodingUint: if (byte_size <= sizeof(unsigned long long)) { @@ -1210,6 +1245,10 @@ uint32_t byte_size = (bit_width + 7 ) / 8; switch (encoding) { + case lldb::eEncodingInvalid: + break; + case lldb::eEncodingVector: + break; case lldb::eEncodingUint: switch (byte_size) { From gclayton at apple.com Mon Mar 14 21:31:39 2011 From: gclayton at apple.com (Greg Clayton) Date: Tue, 15 Mar 2011 02:31:39 -0000 Subject: [Lldb-commits] [lldb] r127651 - in /lldb/branches/apple/calcite/lldb: include/lldb/Core/ModuleList.h source/Core/ModuleList.cpp source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp Message-ID: <20110315023139.D7C9C2A6C12C@llvm.org> Author: gclayton Date: Mon Mar 14 21:31:39 2011 New Revision: 127651 URL: http://llvm.org/viewvc/llvm-project?rev=127651&view=rev Log: Added a fix to not re-use object files when doing DWARF with debug map. Modified: lldb/branches/apple/calcite/lldb/include/lldb/Core/ModuleList.h lldb/branches/apple/calcite/lldb/source/Core/ModuleList.cpp lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp Modified: lldb/branches/apple/calcite/lldb/include/lldb/Core/ModuleList.h URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/include/lldb/Core/ModuleList.h?rev=127651&r1=127650&r2=127651&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/include/lldb/Core/ModuleList.h (original) +++ lldb/branches/apple/calcite/lldb/include/lldb/Core/ModuleList.h Mon Mar 14 21:31:39 2011 @@ -373,7 +373,11 @@ off_t object_offset, lldb::ModuleSP &module_sp, lldb::ModuleSP *old_module_sp_ptr, - bool *did_create_ptr); + bool *did_create_ptr, + bool always_create = false); + + static bool + RemoveSharedModule (lldb::ModuleSP &module_sp); static size_t FindSharedModules (const FileSpec& in_file_spec, Modified: lldb/branches/apple/calcite/lldb/source/Core/ModuleList.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/source/Core/ModuleList.cpp?rev=127651&r1=127650&r2=127651&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/source/Core/ModuleList.cpp (original) +++ lldb/branches/apple/calcite/lldb/source/Core/ModuleList.cpp Mon Mar 14 21:31:39 2011 @@ -540,7 +540,6 @@ ) { ModuleList &shared_module_list = GetSharedModuleList (); - Mutex::Locker locker(shared_module_list.m_modules_mutex); return shared_module_list.FindModules (&in_file_spec, &arch, uuid_ptr, object_name_ptr, matching_module_list); } @@ -554,10 +553,12 @@ off_t object_offset, ModuleSP &module_sp, ModuleSP *old_module_sp_ptr, - bool *did_create_ptr + bool *did_create_ptr, + bool always_create ) { ModuleList &shared_module_list = GetSharedModuleList (); + Mutex::Locker locker(shared_module_list.m_modules_mutex); char path[PATH_MAX]; char uuid_cstr[64]; @@ -579,31 +580,43 @@ // Make sure no one else can try and get or create a module while this // function is actively working on it by doing an extra lock on the // global mutex list. - ModuleList matching_module_list; - Mutex::Locker locker(shared_module_list.m_modules_mutex); - if (shared_module_list.FindModules (&in_file_spec, &arch, uuid_ptr, object_name_ptr, matching_module_list) > 0) + if (always_create == false) { - module_sp = matching_module_list.GetModuleAtIndex(0); - - // If we didn't have a UUID in mind when looking for the object file, - // then we should make sure the modification time hasn't changed! - if (uuid_ptr == NULL) + ModuleList matching_module_list; + const size_t num_matching_modules = shared_module_list.FindModules (&in_file_spec, &arch, NULL, object_name_ptr, matching_module_list); + if (num_matching_modules > 0) { - TimeValue file_spec_mod_time(in_file_spec.GetModificationTime()); - if (file_spec_mod_time.IsValid()) + for (uint32_t module_idx = 0; module_idx < num_matching_modules; ++module_idx) { - if (file_spec_mod_time != module_sp->GetModificationTime()) + module_sp = matching_module_list.GetModuleAtIndex(module_idx); + if (uuid_ptr && uuid_ptr->IsValid()) { - if (old_module_sp_ptr) - *old_module_sp_ptr = module_sp; - shared_module_list.Remove (module_sp); - module_sp.reset(); + // We found the module we were looking for. + if (module_sp->GetUUID() == *uuid_ptr) + return error; + } + else + { + // If we didn't have a UUID in mind when looking for the object file, + // then we should make sure the modification time hasn't changed! + TimeValue file_spec_mod_time(in_file_spec.GetModificationTime()); + if (file_spec_mod_time.IsValid()) + { + if (file_spec_mod_time == module_sp->GetModificationTime()) + return error; + } } + if (old_module_sp_ptr && !old_module_sp_ptr->get()) + *old_module_sp_ptr = module_sp; + shared_module_list.Remove (module_sp); + module_sp.reset(); } } } - if (module_sp.get() == NULL) + if (module_sp) + return error; + else { module_sp.reset (new Module (in_file_spec, arch, object_name_ptr, object_offset)); if (module_sp) @@ -666,7 +679,6 @@ // Make sure no one else can try and get or create a module while this // function is actively working on it by doing an extra lock on the // global mutex list. - Mutex::Locker locker(shared_module_list.m_modules_mutex); ModuleList matching_module_list; if (shared_module_list.FindModules (&file_spec, &arch, uuid_ptr, object_name_ptr, matching_module_list) > 0) { @@ -730,3 +742,10 @@ return error; } +bool +ModuleList::RemoveSharedModule (lldb::ModuleSP &module_sp) +{ + return GetSharedModuleList ().Remove (module_sp); +} + + Modified: lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp?rev=127651&r1=127650&r2=127651&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp (original) +++ lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp Mon Mar 14 21:31:39 2011 @@ -72,6 +72,14 @@ SymbolFileDWARFDebugMap::~SymbolFileDWARFDebugMap() { + // Release all .o files so they don't persist in the shared cache + std::vector::iterator pos, end; + for (pos = m_compile_unit_infos.begin(), end = m_compile_unit_infos.end(); + pos != end; + ++pos) + { + ModuleList::RemoveSharedModule (pos->oso_module_sp); + } } void @@ -166,6 +174,11 @@ { FileSpec oso_file_spec(oso_symbol->GetMangled().GetName().AsCString(), true); + // Don't allow cached .o files since we dress up each .o file with + // new sections. We want them to be in the module list so we can + // always find a shared pointer to the module (in Module::GetSP()), + // but just don't share them. + const bool always_create = true; ModuleList::GetSharedModule (oso_file_spec, m_obj_file->GetModule()->GetArchitecture(), NULL, // UUID pointer @@ -173,7 +186,8 @@ 0, // object offset comp_unit_info->oso_module_sp, NULL, - NULL); + NULL, + always_create); //comp_unit_info->oso_module_sp.reset(new Module (oso_file_spec, m_obj_file->GetModule()->GetArchitecture())); } } From gclayton at apple.com Mon Mar 14 21:32:41 2011 From: gclayton at apple.com (Greg Clayton) Date: Tue, 15 Mar 2011 02:32:41 -0000 Subject: [Lldb-commits] [lldb] r127653 - in /lldb/branches/apple/calcite/lldb: lldb.xcodeproj/project.pbxproj resources/LLDB-Info.plist tools/debugserver/debugserver.xcodeproj/project.pbxproj Message-ID: <20110315023241.676AB2A6C12D@llvm.org> Author: gclayton Date: Mon Mar 14 21:32:41 2011 New Revision: 127653 URL: http://llvm.org/viewvc/llvm-project?rev=127653&view=rev Log: Bumped Xcode project for lldb-52 and debugserver-136. Modified: lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist lldb/branches/apple/calcite/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj Modified: lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj?rev=127653&r1=127652&r2=127653&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj (original) +++ lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj Mon Mar 14 21:32:41 2011 @@ -2976,9 +2976,9 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 51; + CURRENT_PROJECT_VERSION = 52; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 51; + DYLIB_CURRENT_VERSION = 52; EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3033,11 +3033,11 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 51; + CURRENT_PROJECT_VERSION = 52; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 51; + DYLIB_CURRENT_VERSION = 52; EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3120,7 +3120,7 @@ isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 51; + CURRENT_PROJECT_VERSION = 52; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3156,11 +3156,11 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 51; + CURRENT_PROJECT_VERSION = 52; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 51; + DYLIB_CURRENT_VERSION = 52; EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3214,7 +3214,7 @@ buildSettings = { CODE_SIGN_IDENTITY = lldb_codesign; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 51; + CURRENT_PROJECT_VERSION = 52; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"", @@ -3253,7 +3253,7 @@ ); CODE_SIGN_IDENTITY = lldb_codesign; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 51; + CURRENT_PROJECT_VERSION = 52; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", Modified: lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist?rev=127653&r1=127652&r2=127653&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist (original) +++ lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist Mon Mar 14 21:32:41 2011 @@ -17,7 +17,7 @@ CFBundleSignature ???? CFBundleVersion - 51 + 52 CFBundleName ${EXECUTABLE_NAME} Modified: lldb/branches/apple/calcite/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj?rev=127653&r1=127652&r2=127653&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj (original) +++ lldb/branches/apple/calcite/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj Mon Mar 14 21:32:41 2011 @@ -460,7 +460,7 @@ i386, ); COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 135; + CURRENT_PROJECT_VERSION = 136; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; STRIP_INSTALLED_PRODUCT = NO; @@ -478,7 +478,7 @@ x86_64, i386, ); - CURRENT_PROJECT_VERSION = 135; + CURRENT_PROJECT_VERSION = 136; DEAD_CODE_STRIPPING = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; @@ -498,7 +498,7 @@ x86_64, i386, ); - CURRENT_PROJECT_VERSION = 135; + CURRENT_PROJECT_VERSION = 136; DEAD_CODE_STRIPPING = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; @@ -515,7 +515,7 @@ buildSettings = { "CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 135; + CURRENT_PROJECT_VERSION = 136; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks; "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = ( @@ -556,7 +556,7 @@ "CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = lldb_codesign; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 135; + CURRENT_PROJECT_VERSION = 136; FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks; "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = ( "$(SDKROOT)/System/Library/PrivateFrameworks", @@ -597,7 +597,7 @@ "CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = lldb_codesign; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 135; + CURRENT_PROJECT_VERSION = 136; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks; "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = ( From gclayton at apple.com Mon Mar 14 22:56:33 2011 From: gclayton at apple.com (Greg Clayton) Date: Tue, 15 Mar 2011 03:56:33 -0000 Subject: [Lldb-commits] [lldb] r127659 - in /lldb/trunk: include/lldb/Core/ModuleList.h source/Core/ModuleList.cpp source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp Message-ID: <20110315035633.AE9392A6C12C@llvm.org> Author: gclayton Date: Mon Mar 14 22:56:33 2011 New Revision: 127659 URL: http://llvm.org/viewvc/llvm-project?rev=127659&view=rev Log: Added a fix to not re-use object files when doing DWARF with debug map. Modified: lldb/trunk/include/lldb/Core/ModuleList.h lldb/trunk/source/Core/ModuleList.cpp lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp Modified: lldb/trunk/include/lldb/Core/ModuleList.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ModuleList.h?rev=127659&r1=127658&r2=127659&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/ModuleList.h (original) +++ lldb/trunk/include/lldb/Core/ModuleList.h Mon Mar 14 22:56:33 2011 @@ -373,7 +373,11 @@ off_t object_offset, lldb::ModuleSP &module_sp, lldb::ModuleSP *old_module_sp_ptr, - bool *did_create_ptr); + bool *did_create_ptr, + bool always_create = false); + + static bool + RemoveSharedModule (lldb::ModuleSP &module_sp); static size_t FindSharedModules (const FileSpec& in_file_spec, Modified: lldb/trunk/source/Core/ModuleList.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ModuleList.cpp?rev=127659&r1=127658&r2=127659&view=diff ============================================================================== --- lldb/trunk/source/Core/ModuleList.cpp (original) +++ lldb/trunk/source/Core/ModuleList.cpp Mon Mar 14 22:56:33 2011 @@ -540,7 +540,6 @@ ) { ModuleList &shared_module_list = GetSharedModuleList (); - Mutex::Locker locker(shared_module_list.m_modules_mutex); return shared_module_list.FindModules (&in_file_spec, &arch, uuid_ptr, object_name_ptr, matching_module_list); } @@ -554,10 +553,12 @@ off_t object_offset, ModuleSP &module_sp, ModuleSP *old_module_sp_ptr, - bool *did_create_ptr + bool *did_create_ptr, + bool always_create ) { ModuleList &shared_module_list = GetSharedModuleList (); + Mutex::Locker locker(shared_module_list.m_modules_mutex); char path[PATH_MAX]; char uuid_cstr[64]; @@ -579,31 +580,43 @@ // Make sure no one else can try and get or create a module while this // function is actively working on it by doing an extra lock on the // global mutex list. - ModuleList matching_module_list; - Mutex::Locker locker(shared_module_list.m_modules_mutex); - if (shared_module_list.FindModules (&in_file_spec, &arch, uuid_ptr, object_name_ptr, matching_module_list) > 0) + if (always_create == false) { - module_sp = matching_module_list.GetModuleAtIndex(0); - - // If we didn't have a UUID in mind when looking for the object file, - // then we should make sure the modification time hasn't changed! - if (uuid_ptr == NULL) + ModuleList matching_module_list; + const size_t num_matching_modules = shared_module_list.FindModules (&in_file_spec, &arch, NULL, object_name_ptr, matching_module_list); + if (num_matching_modules > 0) { - TimeValue file_spec_mod_time(in_file_spec.GetModificationTime()); - if (file_spec_mod_time.IsValid()) + for (uint32_t module_idx = 0; module_idx < num_matching_modules; ++module_idx) { - if (file_spec_mod_time != module_sp->GetModificationTime()) + module_sp = matching_module_list.GetModuleAtIndex(module_idx); + if (uuid_ptr && uuid_ptr->IsValid()) { - if (old_module_sp_ptr) - *old_module_sp_ptr = module_sp; - shared_module_list.Remove (module_sp); - module_sp.reset(); + // We found the module we were looking for. + if (module_sp->GetUUID() == *uuid_ptr) + return error; + } + else + { + // If we didn't have a UUID in mind when looking for the object file, + // then we should make sure the modification time hasn't changed! + TimeValue file_spec_mod_time(in_file_spec.GetModificationTime()); + if (file_spec_mod_time.IsValid()) + { + if (file_spec_mod_time == module_sp->GetModificationTime()) + return error; + } } + if (old_module_sp_ptr && !old_module_sp_ptr->get()) + *old_module_sp_ptr = module_sp; + shared_module_list.Remove (module_sp); + module_sp.reset(); } } } - if (module_sp.get() == NULL) + if (module_sp) + return error; + else { module_sp.reset (new Module (in_file_spec, arch, object_name_ptr, object_offset)); if (module_sp) @@ -666,7 +679,6 @@ // Make sure no one else can try and get or create a module while this // function is actively working on it by doing an extra lock on the // global mutex list. - Mutex::Locker locker(shared_module_list.m_modules_mutex); ModuleList matching_module_list; if (shared_module_list.FindModules (&file_spec, &arch, uuid_ptr, object_name_ptr, matching_module_list) > 0) { @@ -730,3 +742,10 @@ return error; } +bool +ModuleList::RemoveSharedModule (lldb::ModuleSP &module_sp) +{ + return GetSharedModuleList ().Remove (module_sp); +} + + Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp?rev=127659&r1=127658&r2=127659&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp Mon Mar 14 22:56:33 2011 @@ -165,18 +165,11 @@ if (oso_symbol) { FileSpec oso_file_spec(oso_symbol->GetMangled().GetName().AsCString(), true); -#define SYMBOL_FILE_DWARF_DEBUG_MODULES 1 -#if defined (SYMBOL_FILE_DWARF_DEBUG_MODULES) - // Normally we don't want the .o files we open added to the shared - // module list. This is because we will add our own section - // remappning to each .o file, and if the executable changes, yet - // the .o file does not change, we can't have the old remapped - // sections in the .o file since they can be out of date. But when - // debugging issues in the debug map + DWARF in .o files, it is nice - // to be able to use the "image XXX" commands to look at the symbol - // tables and sections in the .o files, so the SYMBOL_FILE_DWARF_DEBUG_MODULES - // can be used when debugging issues, but it shouldn't be left in - // for normal debugging. + // Don't allow cached .o files since we dress up each .o file with + // new sections. We want them to be in the module list so we can + // always find a shared pointer to the module (in Module::GetSP()), + // but just don't share them. + const bool always_create = true; ModuleList::GetSharedModule (oso_file_spec, m_obj_file->GetModule()->GetArchitecture(), NULL, // lldb_private::UUID pointer @@ -184,10 +177,8 @@ 0, // object offset comp_unit_info->oso_module_sp, NULL, - NULL); -#else - comp_unit_info->oso_module_sp.reset(new Module (oso_file_spec, m_obj_file->GetModule()->GetArchitecture())); -#endif + NULL, + always_create); } } return comp_unit_info->oso_module_sp.get(); From gclayton at apple.com Mon Mar 14 23:25:12 2011 From: gclayton at apple.com (Greg Clayton) Date: Tue, 15 Mar 2011 04:25:12 -0000 Subject: [Lldb-commits] [lldb] r127660 - in /lldb/trunk/test/unique-types: ./ Makefile main.cpp Message-ID: <20110315042512.3E05C2A6C12C@llvm.org> Author: gclayton Date: Mon Mar 14 23:25:12 2011 New Revision: 127660 URL: http://llvm.org/viewvc/llvm-project?rev=127660&view=rev Log: Added a test case for unique types. In the test case there are two std::vector types that have different contents. Currently LLDB is incorrectly uniquing, on MacOSX, the std::vector _VectorImpl class from the two different vector templates. The DWARF looks like: 0x0000008e: DW_TAG_structure_type [7] * DW_AT_name( "_Vector_base >" ) DW_AT_declaration( 0x01 ) DW_AT_sibling( {0x00000103} ) 0x00000098: DW_TAG_structure_type [8] * DW_AT_name( "_Vector_impl" ) DW_AT_byte_size( 0x18 ) DW_AT_decl_file( "/usr/include/c++/4.2.1/bits/stl_vector.h" ) DW_AT_decl_line( 83 ) 0x000000a0: DW_TAG_inheritance [9] DW_AT_type( {0x000006fa} ( allocator ) ) DW_AT_data_member_location( +0 ) DW_AT_accessibility( DW_ACCESS_public ) 0x0000011b: DW_TAG_structure_type [7] * DW_AT_name( "_Vector_base >" ) DW_AT_declaration( 0x01 ) DW_AT_sibling( {0x00000190} ) 0x00000125: DW_TAG_structure_type [8] * DW_AT_name( "_Vector_impl" ) DW_AT_byte_size( 0x18 ) DW_AT_decl_file( "/usr/include/c++/4.2.1/bits/stl_vector.h" ) DW_AT_decl_line( 83 ) 0x0000012d: DW_TAG_inheritance [9] DW_AT_type( {0x00000f75} ( allocator ) ) DW_AT_data_member_location( +0 ) DW_AT_accessibility( DW_ACCESS_public ) In this case it using DIE 0x00000098 for both 0x00000098 and 0x00000125. This test will help detect this issue once I have a fix for it. I have a fix that I am testing. Added: lldb/trunk/test/unique-types/ lldb/trunk/test/unique-types/Makefile lldb/trunk/test/unique-types/main.cpp Added: lldb/trunk/test/unique-types/Makefile URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/unique-types/Makefile?rev=127660&view=auto ============================================================================== --- lldb/trunk/test/unique-types/Makefile (added) +++ lldb/trunk/test/unique-types/Makefile Mon Mar 14 23:25:12 2011 @@ -0,0 +1,5 @@ +LEVEL = ../make + +CXX_SOURCES := main.cpp + +include $(LEVEL)/Makefile.rules Added: lldb/trunk/test/unique-types/main.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/unique-types/main.cpp?rev=127660&view=auto ============================================================================== --- lldb/trunk/test/unique-types/main.cpp (added) +++ lldb/trunk/test/unique-types/main.cpp Mon Mar 14 23:25:12 2011 @@ -0,0 +1,16 @@ +#include + +#include +#include + +int main (int argc, char const *argv[], char const *envp[]) +{ + std::vector ints; + std::vector shorts; + for (int i=0; i<12; i++) + { + ints.push_back(i); + shorts.push_back((short)i); + } + return 0; +} From gclayton at apple.com Mon Mar 14 23:29:42 2011 From: gclayton at apple.com (Greg Clayton) Date: Tue, 15 Mar 2011 04:29:42 -0000 Subject: [Lldb-commits] [lldb] r127661 - /lldb/trunk/test/unique-types/main.cpp Message-ID: <20110315042942.34DCC2A6C12C@llvm.org> Author: gclayton Date: Mon Mar 14 23:29:42 2011 New Revision: 127661 URL: http://llvm.org/viewvc/llvm-project?rev=127661&view=rev Log: Make the first vector of "long" instead of "int" so we can tell the difference easier since "short" ends up with "short int" in the template allocators. Modified: lldb/trunk/test/unique-types/main.cpp Modified: lldb/trunk/test/unique-types/main.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/unique-types/main.cpp?rev=127661&r1=127660&r2=127661&view=diff ============================================================================== --- lldb/trunk/test/unique-types/main.cpp (original) +++ lldb/trunk/test/unique-types/main.cpp Mon Mar 14 23:29:42 2011 @@ -5,12 +5,12 @@ int main (int argc, char const *argv[], char const *envp[]) { - std::vector ints; + std::vector longs; std::vector shorts; for (int i=0; i<12; i++) { - ints.push_back(i); - shorts.push_back((short)i); + longs.push_back(i); + shorts.push_back(i); } return 0; } From gclayton at apple.com Mon Mar 14 23:38:20 2011 From: gclayton at apple.com (Greg Clayton) Date: Tue, 15 Mar 2011 04:38:20 -0000 Subject: [Lldb-commits] [lldb] r127662 - in /lldb/trunk/source/Plugins/SymbolFile/DWARF: SymbolFileDWARF.cpp UniqueDWARFASTType.cpp UniqueDWARFASTType.h Message-ID: <20110315043821.03B262A6C12C@llvm.org> Author: gclayton Date: Mon Mar 14 23:38:20 2011 New Revision: 127662 URL: http://llvm.org/viewvc/llvm-project?rev=127662&view=rev Log: Added a fix that should help incorrect type uniquing. There was an issue for templatized types that could cause parts of a std::vector (and I am sure other STL types) to be incorrectly uniqued to each other wreaking havoc on variable display for types within the same executable module. Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp lldb/trunk/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp lldb/trunk/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.h Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp?rev=127662&r1=127661&r2=127662&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Mon Mar 14 23:38:20 2011 @@ -2986,6 +2986,7 @@ ConstString type_name_const_str; Type::ResolveState resolve_state = Type::eResolveStateUnresolved; size_t byte_size = 0; + bool byte_size_valid = false; Declaration decl; Type::EncodingDataType encoding_data_type = Type::eEncodingIsUID; @@ -3028,7 +3029,7 @@ type_name_cstr = form_value.AsCString(&get_debug_str_data()); type_name_const_str.SetCString(type_name_cstr); break; - case DW_AT_byte_size: byte_size = form_value.Unsigned(); break; + case DW_AT_byte_size: byte_size = form_value.Unsigned(); byte_size_valid = true; break; case DW_AT_encoding: encoding = form_value.Unsigned(); break; case DW_AT_type: encoding_uid = form_value.Reference(dwarf_cu); break; default: @@ -3150,6 +3151,7 @@ case DW_AT_byte_size: byte_size = form_value.Unsigned(); + byte_size_valid = true; break; case DW_AT_accessibility: @@ -3182,8 +3184,11 @@ if (decl.IsValid()) { if (GetUniqueDWARFASTTypeMap().Find (type_name_const_str, + this, + dwarf_cu, die, decl, + byte_size_valid ? byte_size : -1, unique_ast_entry)) { // We have already parsed this type or from another @@ -3280,6 +3285,8 @@ // end up creating many copies of the same type over // and over in the ASTContext for our module unique_ast_entry.m_type_sp = type_sp; + unique_ast_entry.m_symfile = this; + unique_ast_entry.m_cu = dwarf_cu; unique_ast_entry.m_die = die; unique_ast_entry.m_declaration = decl; GetUniqueDWARFASTTypeMap().Insert (type_name_const_str, @@ -3333,7 +3340,7 @@ type_name_const_str.SetCString(type_name_cstr); break; case DW_AT_type: encoding_uid = form_value.Reference(dwarf_cu); break; - case DW_AT_byte_size: byte_size = form_value.Unsigned(); break; + case DW_AT_byte_size: byte_size = form_value.Unsigned(); byte_size_valid = true; break; case DW_AT_accessibility: accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned()); break; case DW_AT_declaration: is_forward_declaration = form_value.Unsigned() != 0; break; case DW_AT_allocated: @@ -3691,7 +3698,7 @@ break; case DW_AT_type: type_die_offset = form_value.Reference(dwarf_cu); break; - case DW_AT_byte_size: byte_size = form_value.Unsigned(); break; + case DW_AT_byte_size: byte_size = form_value.Unsigned(); byte_size_valid = true; break; case DW_AT_byte_stride: byte_stride = form_value.Unsigned(); break; case DW_AT_bit_stride: bit_stride = form_value.Unsigned(); break; case DW_AT_accessibility: accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned()); break; Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp?rev=127662&r1=127661&r2=127662&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp Mon Mar 14 23:38:20 2011 @@ -20,20 +20,64 @@ bool UniqueDWARFASTTypeList::Find ( + SymbolFileDWARF *symfile, + const DWARFCompileUnit *cu, const DWARFDebugInfoEntry *die, const lldb_private::Declaration &decl, + const int32_t byte_size, UniqueDWARFASTType &entry ) const { collection::const_iterator pos, end = m_collection.end(); for (pos = m_collection.begin(); pos != end; ++pos) { + // Make sure the tags match if (pos->m_die->Tag() == die->Tag()) { - if (pos->m_declaration == decl) + // Validate byte sizes of both types only if both are valid. + if (pos->m_byte_size < 0 || byte_size < 0 || pos->m_byte_size == byte_size) { - entry = *pos; - return true; + // Make sure the file and line match + if (pos->m_declaration == decl) + { + // The type has the same name, and was defined on the same + // file and line. Now verify all of the parent DIEs match. + const DWARFDebugInfoEntry *parent_arg_die = die->GetParent(); + const DWARFDebugInfoEntry *parend_pos_die = pos->m_die->GetParent(); + bool match = true; + bool done = false; + while (!done && match && parent_arg_die && parend_pos_die) + { + if (parent_arg_die->Tag() == parend_pos_die->Tag()) + { + const dw_tag_t tag = parent_arg_die->Tag(); + switch (tag) + { + case DW_TAG_class_type: + case DW_TAG_structure_type: + case DW_TAG_union_type: + case DW_TAG_namespace: + { + const char *parent_arg_die_name = parent_arg_die->GetName(symfile, cu); + const char *parent_pos_die_name = parend_pos_die->GetName(pos->m_symfile, pos->m_cu); + if (strcmp (parent_arg_die_name, parent_pos_die_name)) + match = false; + } + break; + + case DW_TAG_compile_unit: + done = true; + break; + } + } + } + + if (match) + { + entry = *pos; + return true; + } + } } } } Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.h?rev=127662&r1=127661&r2=127662&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.h (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.h Mon Mar 14 23:38:20 2011 @@ -32,24 +32,36 @@ //------------------------------------------------------------------ UniqueDWARFASTType () : m_type_sp (), + m_symfile (NULL), + m_cu (NULL), m_die (NULL), - m_declaration () + m_declaration (), + m_byte_size (-1) // Set to negative value to make sure we have a valid value { } UniqueDWARFASTType (lldb::TypeSP &type_sp, + SymbolFileDWARF *symfile, + DWARFCompileUnit *cu, DWARFDebugInfoEntry *die, - const lldb_private::Declaration &decl) : + const lldb_private::Declaration &decl, + int32_t byte_size) : m_type_sp (type_sp), + m_symfile (symfile), + m_cu (cu), m_die (die), - m_declaration (decl) + m_declaration (decl), + m_byte_size (byte_size) { } UniqueDWARFASTType (const UniqueDWARFASTType &rhs) : m_type_sp (rhs.m_type_sp), + m_symfile (rhs.m_symfile), + m_cu (rhs.m_cu), m_die (rhs.m_die), - m_declaration (rhs.m_declaration) + m_declaration (rhs.m_declaration), + m_byte_size (rhs.m_byte_size) { } @@ -63,15 +75,21 @@ if (this != &rhs) { m_type_sp = rhs.m_type_sp; + m_symfile = rhs.m_symfile; + m_cu = rhs.m_cu; m_die = rhs.m_die; m_declaration = rhs.m_declaration; + m_byte_size = rhs.m_byte_size; } return *this; } lldb::TypeSP m_type_sp; + SymbolFileDWARF *m_symfile; + const DWARFCompileUnit *m_cu; const DWARFDebugInfoEntry *m_die; - lldb_private::Declaration m_declaration; + lldb_private::Declaration m_declaration; + int32_t m_byte_size; }; class UniqueDWARFASTTypeList @@ -99,8 +117,11 @@ } bool - Find (const DWARFDebugInfoEntry *die, + Find (SymbolFileDWARF *symfile, + const DWARFCompileUnit *cu, + const DWARFDebugInfoEntry *die, const lldb_private::Declaration &decl, + const int32_t byte_size, UniqueDWARFASTType &entry) const; protected: @@ -129,15 +150,18 @@ bool Find (const lldb_private::ConstString &name, + SymbolFileDWARF *symfile, + const DWARFCompileUnit *cu, const DWARFDebugInfoEntry *die, const lldb_private::Declaration &decl, + const int32_t byte_size, UniqueDWARFASTType &entry) const { const char *unique_name_cstr = name.GetCString(); collection::const_iterator pos = m_collection.find (unique_name_cstr); if (pos != m_collection.end()) { - return pos->second.Find (die, decl, entry); + return pos->second.Find (symfile, cu, die, decl, byte_size, entry); } return false; } From gclayton at apple.com Tue Mar 15 13:51:42 2011 From: gclayton at apple.com (Greg Clayton) Date: Tue, 15 Mar 2011 18:51:42 -0000 Subject: [Lldb-commits] [lldb] r127686 - /lldb/trunk/lldb.xcodeproj/project.pbxproj Message-ID: <20110315185142.BAAA72A6C12C@llvm.org> Author: gclayton Date: Tue Mar 15 13:51:42 2011 New Revision: 127686 URL: http://llvm.org/viewvc/llvm-project?rev=127686&view=rev Log: Now that we have the debug map issues fixed, change the Xcode project to build lldb, LLDB.framework and debugserver all with just DWARF (no dSYM). Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=127686&r1=127685&r2=127686&view=diff ============================================================================== --- lldb/trunk/lldb.xcodeproj/project.pbxproj (original) +++ lldb/trunk/lldb.xcodeproj/project.pbxproj Tue Mar 15 13:51:42 2011 @@ -3029,7 +3029,7 @@ isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEBUG_INFORMATION_FORMAT = dwarf; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; @@ -3077,7 +3077,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 46; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEBUG_INFORMATION_FORMAT = dwarf; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 46; EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports"; @@ -3316,7 +3316,7 @@ CODE_SIGN_IDENTITY = lldb_codesign; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 46; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEBUG_INFORMATION_FORMAT = dwarf; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"", From scallanan at apple.com Tue Mar 15 15:57:04 2011 From: scallanan at apple.com (Sean Callanan) Date: Tue, 15 Mar 2011 20:57:04 -0000 Subject: [Lldb-commits] [lldb] r127695 - in /lldb/trunk: llvm.zip scripts/build-llvm.pl Message-ID: <20110315205704.340C12A6C12C@llvm.org> Author: spyffe Date: Tue Mar 15 15:57:04 2011 New Revision: 127695 URL: http://llvm.org/viewvc/llvm-project?rev=127695&view=rev Log: Updated LLVM/Clang to the latest release, to pick up AVX disassembly support. Modified: lldb/trunk/llvm.zip lldb/trunk/scripts/build-llvm.pl Modified: lldb/trunk/llvm.zip URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/llvm.zip?rev=127695&r1=127694&r2=127695&view=diff ============================================================================== Binary files - no diff available. Modified: lldb/trunk/scripts/build-llvm.pl URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/build-llvm.pl?rev=127695&r1=127694&r2=127695&view=diff ============================================================================== --- lldb/trunk/scripts/build-llvm.pl (original) +++ lldb/trunk/scripts/build-llvm.pl Tue Mar 15 15:57:04 2011 @@ -25,7 +25,7 @@ our $llvm_configuration = $ENV{LLVM_CONFIGURATION}; -our $llvm_revision = "127600"; +our $llvm_revision = "127682"; our $llvm_source_dir = "$ENV{SRCROOT}"; our $cc = "$ENV{DEVELOPER_BIN_DIR}/gcc-4.2"; our $cxx = "$ENV{DEVELOPER_BIN_DIR}/g++-4.2"; From gclayton at apple.com Tue Mar 15 17:42:13 2011 From: gclayton at apple.com (Greg Clayton) Date: Tue, 15 Mar 2011 22:42:13 -0000 Subject: [Lldb-commits] [lldb] r127708 - in /lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF: SymbolFileDWARF.cpp UniqueDWARFASTType.cpp UniqueDWARFASTType.h Message-ID: <20110315224213.E3FFB2A6C12C@llvm.org> Author: gclayton Date: Tue Mar 15 17:42:13 2011 New Revision: 127708 URL: http://llvm.org/viewvc/llvm-project?rev=127708&view=rev Log: Fixed an issue where types might not be uniqued correctly. 9133491 Modified: lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.h Modified: lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp?rev=127708&r1=127707&r2=127708&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp (original) +++ lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Tue Mar 15 17:42:13 2011 @@ -2985,6 +2985,7 @@ ConstString type_name_const_str; Type::ResolveState resolve_state = Type::eResolveStateUnresolved; size_t byte_size = 0; + bool byte_size_valid = false; Declaration decl; Type::EncodingDataType encoding_data_type = Type::eEncodingIsUID; @@ -3027,7 +3028,7 @@ type_name_cstr = form_value.AsCString(&get_debug_str_data()); type_name_const_str.SetCString(type_name_cstr); break; - case DW_AT_byte_size: byte_size = form_value.Unsigned(); break; + case DW_AT_byte_size: byte_size = form_value.Unsigned(); byte_size_valid = true; break; case DW_AT_encoding: encoding = form_value.Unsigned(); break; case DW_AT_type: encoding_uid = form_value.Reference(dwarf_cu); break; default: @@ -3149,6 +3150,7 @@ case DW_AT_byte_size: byte_size = form_value.Unsigned(); + byte_size_valid = true; break; case DW_AT_accessibility: @@ -3181,8 +3183,11 @@ if (decl.IsValid()) { if (GetUniqueDWARFASTTypeMap().Find (type_name_const_str, + this, + dwarf_cu, die, decl, + byte_size_valid ? byte_size : -1, unique_ast_entry)) { // We have already parsed this type or from another @@ -3279,6 +3284,8 @@ // end up creating many copies of the same type over // and over in the ASTContext for our module unique_ast_entry.m_type_sp = type_sp; + unique_ast_entry.m_symfile = this; + unique_ast_entry.m_cu = dwarf_cu; unique_ast_entry.m_die = die; unique_ast_entry.m_declaration = decl; GetUniqueDWARFASTTypeMap().Insert (type_name_const_str, @@ -3332,7 +3339,7 @@ type_name_const_str.SetCString(type_name_cstr); break; case DW_AT_type: encoding_uid = form_value.Reference(dwarf_cu); break; - case DW_AT_byte_size: byte_size = form_value.Unsigned(); break; + case DW_AT_byte_size: byte_size = form_value.Unsigned(); byte_size_valid = true; break; case DW_AT_accessibility: accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned()); break; case DW_AT_declaration: is_forward_declaration = form_value.Unsigned() != 0; break; case DW_AT_allocated: @@ -3690,7 +3697,7 @@ break; case DW_AT_type: type_die_offset = form_value.Reference(dwarf_cu); break; - case DW_AT_byte_size: byte_size = form_value.Unsigned(); break; + case DW_AT_byte_size: byte_size = form_value.Unsigned(); byte_size_valid = true; break; case DW_AT_byte_stride: byte_stride = form_value.Unsigned(); break; case DW_AT_bit_stride: bit_stride = form_value.Unsigned(); break; case DW_AT_accessibility: accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned()); break; Modified: lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp?rev=127708&r1=127707&r2=127708&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp (original) +++ lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp Tue Mar 15 17:42:13 2011 @@ -20,20 +20,64 @@ bool UniqueDWARFASTTypeList::Find ( + SymbolFileDWARF *symfile, + const DWARFCompileUnit *cu, const DWARFDebugInfoEntry *die, const lldb_private::Declaration &decl, + const int32_t byte_size, UniqueDWARFASTType &entry ) const { collection::const_iterator pos, end = m_collection.end(); for (pos = m_collection.begin(); pos != end; ++pos) { + // Make sure the tags match if (pos->m_die->Tag() == die->Tag()) { - if (pos->m_declaration == decl) + // Validate byte sizes of both types only if both are valid. + if (pos->m_byte_size < 0 || byte_size < 0 || pos->m_byte_size == byte_size) { - entry = *pos; - return true; + // Make sure the file and line match + if (pos->m_declaration == decl) + { + // The type has the same name, and was defined on the same + // file and line. Now verify all of the parent DIEs match. + const DWARFDebugInfoEntry *parent_arg_die = die->GetParent(); + const DWARFDebugInfoEntry *parend_pos_die = pos->m_die->GetParent(); + bool match = true; + bool done = false; + while (!done && match && parent_arg_die && parend_pos_die) + { + if (parent_arg_die->Tag() == parend_pos_die->Tag()) + { + const dw_tag_t tag = parent_arg_die->Tag(); + switch (tag) + { + case DW_TAG_class_type: + case DW_TAG_structure_type: + case DW_TAG_union_type: + case DW_TAG_namespace: + { + const char *parent_arg_die_name = parent_arg_die->GetName(symfile, cu); + const char *parent_pos_die_name = parend_pos_die->GetName(pos->m_symfile, pos->m_cu); + if (strcmp (parent_arg_die_name, parent_pos_die_name)) + match = false; + } + break; + + case DW_TAG_compile_unit: + done = true; + break; + } + } + } + + if (match) + { + entry = *pos; + return true; + } + } } } } Modified: lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.h URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.h?rev=127708&r1=127707&r2=127708&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.h (original) +++ lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.h Tue Mar 15 17:42:13 2011 @@ -32,24 +32,36 @@ //------------------------------------------------------------------ UniqueDWARFASTType () : m_type_sp (), + m_symfile (NULL), + m_cu (NULL), m_die (NULL), - m_declaration () + m_declaration (), + m_byte_size (-1) // Set to negative value to make sure we have a valid value { } UniqueDWARFASTType (lldb::TypeSP &type_sp, + SymbolFileDWARF *symfile, + DWARFCompileUnit *cu, DWARFDebugInfoEntry *die, - const lldb_private::Declaration &decl) : + const lldb_private::Declaration &decl, + int32_t byte_size) : m_type_sp (type_sp), + m_symfile (symfile), + m_cu (cu), m_die (die), - m_declaration (decl) + m_declaration (decl), + m_byte_size (byte_size) { } UniqueDWARFASTType (const UniqueDWARFASTType &rhs) : m_type_sp (rhs.m_type_sp), + m_symfile (rhs.m_symfile), + m_cu (rhs.m_cu), m_die (rhs.m_die), - m_declaration (rhs.m_declaration) + m_declaration (rhs.m_declaration), + m_byte_size (rhs.m_byte_size) { } @@ -63,15 +75,21 @@ if (this != &rhs) { m_type_sp = rhs.m_type_sp; + m_symfile = rhs.m_symfile; + m_cu = rhs.m_cu; m_die = rhs.m_die; m_declaration = rhs.m_declaration; + m_byte_size = rhs.m_byte_size; } return *this; } lldb::TypeSP m_type_sp; + SymbolFileDWARF *m_symfile; + const DWARFCompileUnit *m_cu; const DWARFDebugInfoEntry *m_die; - lldb_private::Declaration m_declaration; + lldb_private::Declaration m_declaration; + int32_t m_byte_size; }; class UniqueDWARFASTTypeList @@ -99,8 +117,11 @@ } bool - Find (const DWARFDebugInfoEntry *die, + Find (SymbolFileDWARF *symfile, + const DWARFCompileUnit *cu, + const DWARFDebugInfoEntry *die, const lldb_private::Declaration &decl, + const int32_t byte_size, UniqueDWARFASTType &entry) const; protected: @@ -129,15 +150,18 @@ bool Find (const lldb_private::ConstString &name, + SymbolFileDWARF *symfile, + const DWARFCompileUnit *cu, const DWARFDebugInfoEntry *die, const lldb_private::Declaration &decl, + const int32_t byte_size, UniqueDWARFASTType &entry) const { const char *unique_name_cstr = name.GetCString(); collection::const_iterator pos = m_collection.find (unique_name_cstr); if (pos != m_collection.end()) { - return pos->second.Find (die, decl, entry); + return pos->second.Find (symfile, cu, die, decl, byte_size, entry); } return false; } From gclayton at apple.com Tue Mar 15 18:08:25 2011 From: gclayton at apple.com (Greg Clayton) Date: Tue, 15 Mar 2011 23:08:25 -0000 Subject: [Lldb-commits] [lldb] r127709 - in /lldb/branches/apple/calcite/lldb/source/Plugins: Process/gdb-remote/GDBRemoteCommunication.cpp Process/gdb-remote/GDBRemoteCommunication.h Process/gdb-remote/ProcessGDBRemote.cpp Process/gdb-remote/ProcessGDBRemoteLog.cpp Process/gdb-remote/ProcessGDBRemoteLog.h SymbolFile/DWARF/UniqueDWARFASTType.cpp Message-ID: <20110315230825.5D84B2A6C12C@llvm.org> Author: gclayton Date: Tue Mar 15 18:08:25 2011 New Revision: 127709 URL: http://llvm.org/viewvc/llvm-project?rev=127709&view=rev Log: Fixed a race condition withing GDB remote where interrupting an executing process could result in an error being returned from a send packet and wait for response if the packet was sent asynchronously. Also patched an infinite loop found by Caroline Tice from the previous unique type fix. Modified: lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp Modified: lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp?rev=127709&r1=127708&r2=127709&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp (original) +++ lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp Tue Mar 15 18:08:25 2011 @@ -39,6 +39,7 @@ m_sequence_mutex (Mutex::eMutexTypeRecursive), m_public_is_running (false), m_private_is_running (false), + m_interrupt_in_progress (false), m_async_mutex (Mutex::eMutexTypeRecursive), m_async_packet_predicate (false), m_async_packet (), @@ -134,7 +135,7 @@ TimeValue timeout_time; timeout_time = TimeValue::Now(); timeout_time.OffsetWithSeconds (timeout_seconds); - LogSP log (ProcessGDBRemoteLog::GetLogIfAllCategoriesSet (GDBR_LOG_PROCESS)); + LogSP log (ProcessGDBRemoteLog::GetLogIfAnyCategoriesSet (GDBR_LOG_PROCESS | GDBR_LOG_ASYNC)); if (GetSequenceMutex (locker)) { @@ -284,6 +285,9 @@ process->BuildDynamicRegisterInfo (true); } + // If we are interrupting by sending a CTRL+C (0x03), the + // we need to let the sender know that the interrupt happened + m_interrupt_in_progress.SetValue (false, eBroadcastAlways); // Privately notify any internal threads that we have stopped // in case we wanted to interrupt our process, yet we might // send a packet and continue without returning control to the @@ -370,6 +374,10 @@ case 'W': case 'X': + // If we are interrupting by sending a CTRL+C (0x03), the + // we need to let the sender know that the interrupt happened + m_interrupt_in_progress.SetValue (false, eBroadcastAlways); + // process exited state = eStateExited; break; @@ -408,6 +416,7 @@ if (log) log->Printf ("GDBRemoteCommunication::%s () => %s", __FUNCTION__, StateAsCString(state)); response.SetFilePos(0); + m_interrupt_in_progress.SetValue (false, eBroadcastAlways); m_private_is_running.SetValue (false, eBroadcastAlways); m_public_is_running.SetValue (false, eBroadcastAlways); return state; @@ -508,61 +517,76 @@ { sent_interrupt = false; timed_out = false; - LogSP log (ProcessGDBRemoteLog::GetLogIfAllCategoriesSet (GDBR_LOG_PROCESS)); - if (IsRunning()) { + LogSP process_or_async_log (ProcessGDBRemoteLog::GetLogIfAnyCategoriesSet (GDBR_LOG_PROCESS | GDBR_LOG_ASYNC)); + // Only send an interrupt if our debugserver is running... if (GetSequenceMutex (locker) == false) { // Someone has the mutex locked waiting for a response or for the // inferior to stop, so send the interrupt on the down low... char ctrl_c = '\x03'; + bool success = false; ConnectionStatus status = eConnectionStatusSuccess; - TimeValue timeout; - if (seconds_to_wait_for_stop) + LogSP async_or_packet_log (ProcessGDBRemoteLog::GetLogIfAnyCategoriesSet (GDBR_LOG_PACKETS | GDBR_LOG_ASYNC)); + + if (m_interrupt_in_progress.GetValue()) { - timeout = TimeValue::Now(); - timeout.OffsetWithSeconds (seconds_to_wait_for_stop); + success = true; + if (async_or_packet_log) + async_or_packet_log->Printf ("interrupt already in progress"); } - ProcessGDBRemoteLog::LogIf (GDBR_LOG_PACKETS | GDBR_LOG_PROCESS, "sending packet: \\x03"); - size_t bytes_written = Write (&ctrl_c, 1, status, NULL); - ProcessGDBRemoteLog::LogIf (GDBR_LOG_PACKETS | GDBR_LOG_PROCESS, "sent packet: \\x03"); - if (bytes_written > 0) + else + { + m_interrupt_in_progress.SetValue (true, eBroadcastNever); + if (async_or_packet_log) + async_or_packet_log->Printf ("send packet: \\x03"); + size_t bytes_written = Write (&ctrl_c, 1, status, NULL); + if (async_or_packet_log) + async_or_packet_log->Printf ("send packet returned %zu", bytes_written); + success = bytes_written > 0; + } + + if (success) { sent_interrupt = true; if (seconds_to_wait_for_stop) { - if (m_private_is_running.WaitForValueEqualTo (false, &timeout, &timed_out)) + TimeValue timeout; + timeout = TimeValue::Now(); + timeout.OffsetWithSeconds (seconds_to_wait_for_stop); + if (m_interrupt_in_progress.WaitForValueEqualTo (false, &timeout, &timed_out)) { - if (log) - log->Printf ("GDBRemoteCommunication::%s () - sent interrupt, private state stopped", __FUNCTION__); - return true; + if (process_or_async_log) + process_or_async_log->Printf ("GDBRemoteCommunication::%s () - sent interrupt, private state stopped", __FUNCTION__); } else { - if (log) - log->Printf ("GDBRemoteCommunication::%s () - sent interrupt, timed out wating for async thread resume", __FUNCTION__); + if (process_or_async_log) + process_or_async_log->Printf ("GDBRemoteCommunication::%s () - sent interrupt, timed out wating for async thread resume", __FUNCTION__); + success = false; } } else { - if (log) - log->Printf ("GDBRemoteCommunication::%s () - sent interrupt, not waiting for stop...", __FUNCTION__); - return true; + if (process_or_async_log) + process_or_async_log->Printf ("GDBRemoteCommunication::%s () - sent interrupt, not waiting for stop...", __FUNCTION__); } } else { - if (log) - log->Printf ("GDBRemoteCommunication::%s () - failed to write interrupt", __FUNCTION__); + if (process_or_async_log) + process_or_async_log->Printf ("GDBRemoteCommunication::%s () - failed to write interrupt", __FUNCTION__); } - return false; + + m_interrupt_in_progress.SetValue (false, eBroadcastNever); + return success; } else { - if (log) - log->Printf ("GDBRemoteCommunication::%s () - got sequence mutex without having to interrupt", __FUNCTION__); + if (process_or_async_log) + process_or_async_log->Printf ("GDBRemoteCommunication::%s () - got sequence mutex without having to interrupt", __FUNCTION__); } } return true; Modified: lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h?rev=127709&r1=127708&r2=127709&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h (original) +++ lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h Tue Mar 15 18:08:25 2011 @@ -273,6 +273,7 @@ lldb_private::Mutex m_sequence_mutex; // Restrict access to sending/receiving packets to a single thread at a time lldb_private::Predicate m_public_is_running; lldb_private::Predicate m_private_is_running; + lldb_private::Predicate m_interrupt_in_progress; // If we need to send a packet while the target is running, the m_async_XXX // member variables take care of making this happen. Modified: lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp?rev=127709&r1=127708&r2=127709&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp (original) +++ lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp Tue Mar 15 18:08:25 2011 @@ -1492,7 +1492,7 @@ { uint8_t error_byte = response.GetError(); if (error_byte) - error.SetErrorStringWithFormat("%x packet failed with error: %i (0x%2.2x).\n", packet, error_byte, error_byte); + error.SetErrorStringWithFormat("'%s' packet failed with error: %i (0x%2.2x).\n", packet, error_byte, error_byte); } } } Modified: lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp?rev=127709&r1=127708&r2=127709&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp (original) +++ lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp Tue Mar 15 18:08:25 2011 @@ -42,6 +42,19 @@ return log; } +LogSP +ProcessGDBRemoteLog::GetLogIfAnyCategoriesSet (uint32_t mask) +{ + LogSP log(GetLog ()); + if (log) + { + uint32_t log_mask = log->GetMask().Get(); + if (log_mask & mask) + return log; + } + return LogSP(); +} + void ProcessGDBRemoteLog::DisableLog (Args &args, Stream *feedback_strm) { Modified: lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h?rev=127709&r1=127708&r2=127709&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h (original) +++ lldb/branches/apple/calcite/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h Tue Mar 15 18:08:25 2011 @@ -38,6 +38,9 @@ static lldb::LogSP GetLogIfAllCategoriesSet(uint32_t mask = 0); + static lldb::LogSP + GetLogIfAnyCategoriesSet (uint32_t mask = UINT32_MAX); + static void DisableLog (lldb_private::Args &args, lldb_private::Stream *feedback_strm); Modified: lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp?rev=127709&r1=127708&r2=127709&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp (original) +++ lldb/branches/apple/calcite/lldb/source/Plugins/SymbolFile/DWARF/UniqueDWARFASTType.cpp Tue Mar 15 18:08:25 2011 @@ -43,12 +43,12 @@ // The type has the same name, and was defined on the same // file and line. Now verify all of the parent DIEs match. const DWARFDebugInfoEntry *parent_arg_die = die->GetParent(); - const DWARFDebugInfoEntry *parend_pos_die = pos->m_die->GetParent(); + const DWARFDebugInfoEntry *parent_pos_die = pos->m_die->GetParent(); bool match = true; bool done = false; - while (!done && match && parent_arg_die && parend_pos_die) + while (!done && match && parent_arg_die && parent_pos_die) { - if (parent_arg_die->Tag() == parend_pos_die->Tag()) + if (parent_arg_die->Tag() == parent_pos_die->Tag()) { const dw_tag_t tag = parent_arg_die->Tag(); switch (tag) @@ -59,7 +59,7 @@ case DW_TAG_namespace: { const char *parent_arg_die_name = parent_arg_die->GetName(symfile, cu); - const char *parent_pos_die_name = parend_pos_die->GetName(pos->m_symfile, pos->m_cu); + const char *parent_pos_die_name = parent_pos_die->GetName(pos->m_symfile, pos->m_cu); if (strcmp (parent_arg_die_name, parent_pos_die_name)) match = false; } @@ -70,6 +70,8 @@ break; } } + parent_arg_die = parent_arg_die->GetParent(); + parent_pos_die = parent_pos_die->GetParent(); } if (match) From gclayton at apple.com Tue Mar 15 18:09:55 2011 From: gclayton at apple.com (Greg Clayton) Date: Tue, 15 Mar 2011 23:09:55 -0000 Subject: [Lldb-commits] [lldb] r127710 - in /lldb/branches/apple/calcite/lldb: lldb.xcodeproj/project.pbxproj resources/LLDB-Info.plist tools/debugserver/debugserver.xcodeproj/project.pbxproj Message-ID: <20110315230955.B72232A6C12C@llvm.org> Author: gclayton Date: Tue Mar 15 18:09:55 2011 New Revision: 127710 URL: http://llvm.org/viewvc/llvm-project?rev=127710&view=rev Log: Bumped Xcode project versions to lldb-53 and debugserver-137. Modified: lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist lldb/branches/apple/calcite/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj Modified: lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj?rev=127710&r1=127709&r2=127710&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj (original) +++ lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj Tue Mar 15 18:09:55 2011 @@ -2976,9 +2976,9 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 52; + CURRENT_PROJECT_VERSION = 53; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 52; + DYLIB_CURRENT_VERSION = 53; EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3033,11 +3033,11 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 52; + CURRENT_PROJECT_VERSION = 53; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 52; + DYLIB_CURRENT_VERSION = 53; EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3120,7 +3120,7 @@ isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 52; + CURRENT_PROJECT_VERSION = 53; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3156,11 +3156,11 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 52; + CURRENT_PROJECT_VERSION = 53; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 52; + DYLIB_CURRENT_VERSION = 53; EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3214,7 +3214,7 @@ buildSettings = { CODE_SIGN_IDENTITY = lldb_codesign; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 52; + CURRENT_PROJECT_VERSION = 53; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"", @@ -3253,7 +3253,7 @@ ); CODE_SIGN_IDENTITY = lldb_codesign; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 52; + CURRENT_PROJECT_VERSION = 53; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", Modified: lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist?rev=127710&r1=127709&r2=127710&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist (original) +++ lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist Tue Mar 15 18:09:55 2011 @@ -17,7 +17,7 @@ CFBundleSignature ???? CFBundleVersion - 52 + 53 CFBundleName ${EXECUTABLE_NAME} Modified: lldb/branches/apple/calcite/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj?rev=127710&r1=127709&r2=127710&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj (original) +++ lldb/branches/apple/calcite/lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj Tue Mar 15 18:09:55 2011 @@ -460,7 +460,7 @@ i386, ); COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 136; + CURRENT_PROJECT_VERSION = 137; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; STRIP_INSTALLED_PRODUCT = NO; @@ -478,7 +478,7 @@ x86_64, i386, ); - CURRENT_PROJECT_VERSION = 136; + CURRENT_PROJECT_VERSION = 137; DEAD_CODE_STRIPPING = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; @@ -498,7 +498,7 @@ x86_64, i386, ); - CURRENT_PROJECT_VERSION = 136; + CURRENT_PROJECT_VERSION = 137; DEAD_CODE_STRIPPING = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; @@ -515,7 +515,7 @@ buildSettings = { "CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 136; + CURRENT_PROJECT_VERSION = 137; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks; "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = ( @@ -556,7 +556,7 @@ "CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = lldb_codesign; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 136; + CURRENT_PROJECT_VERSION = 137; FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks; "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = ( "$(SDKROOT)/System/Library/PrivateFrameworks", @@ -597,7 +597,7 @@ "CODE_SIGN_ENTITLEMENTS[sdk=iphoneos*]" = "source/debugserver-entitlements.plist"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = lldb_codesign; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 136; + CURRENT_PROJECT_VERSION = 137; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = $SDKROOT/System/Library/PrivateFrameworks; "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = ( From ctice at apple.com Tue Mar 15 19:06:12 2011 From: ctice at apple.com (Caroline Tice) Date: Wed, 16 Mar 2011 00:06:12 -0000 Subject: [Lldb-commits] [lldb] r127712 - /lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Message-ID: <20110316000612.603E12A6C12E@llvm.org> Author: ctice Date: Tue Mar 15 19:06:12 2011 New Revision: 127712 URL: http://llvm.org/viewvc/llvm-project?rev=127712&view=rev Log: Fix various small bugs found in the instruction emulation functions. Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp?rev=127712&r1=127711&r2=127712&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp (original) +++ lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Tue Mar 15 19:06:12 2011 @@ -280,12 +280,14 @@ context.type = EmulateInstruction::eContextPushRegisterOnStack; Register dwarf_reg; dwarf_reg.SetRegister (eRegisterKindDWARF, 0); + Register sp_reg; + sp_reg.SetRegister (eRegisterKindDWARF, dwarf_sp); for (i=0; i<15; ++i) { if (BitIsSet (registers, i)) { dwarf_reg.num = dwarf_r0 + i; - context.SetRegisterPlusOffset (dwarf_reg, addr - sp); + context.SetRegisterToRegisterPlusOffset (dwarf_reg, sp_reg, addr - sp); uint32_t reg_value = ReadCoreReg(i, &success); if (!success) return false; @@ -651,10 +653,10 @@ // The context specifies that Rm is to be moved into Rd. EmulateInstruction::Context context; - context.type = EmulateInstruction::eContextRegisterPlusOffset; + context.type = EmulateInstruction::eContextRegisterLoad; Register dwarf_reg; dwarf_reg.SetRegister (eRegisterKindDWARF, dwarf_r0 + Rm); - context.SetRegisterPlusOffset (dwarf_reg, 0); + context.SetRegister (dwarf_reg); if (!WriteCoreRegOptionalFlags(context, result, Rd, setflags)) return false; @@ -1299,13 +1301,13 @@ break; } case eEncodingA1: - lr = pc + 4; // return address + lr = pc - 4; // return address imm32 = llvm::SignExtend32<26>(Bits32(opcode, 23, 0) << 2); target = Align(pc, 4) + imm32; context.SetModeAndImmediateSigned (eModeARM, 8 + imm32); break; case eEncodingA2: - lr = pc + 4; // return address + lr = pc - 4; // return address imm32 = llvm::SignExtend32<26>(Bits32(opcode, 23, 0) << 2 | Bits32(opcode, 24, 24) << 1); target = pc + imm32; context.SetModeAndImmediateSigned (eModeThumb, 8 + imm32); @@ -1691,8 +1693,10 @@ EmulateInstruction::Context context; if (Rd == 13) { + uint64_t imm64 = imm32; // Need to expand it to 64 bits before attempting to negate it, or the wrong + // value gets passed down to context.SetImmediateSigned. context.type = EmulateInstruction::eContextAdjustStackPointer; - context.SetImmediateSigned (-imm32); // the stack pointer offset + context.SetImmediateSigned (-imm64); // the stack pointer offset } else { From gclayton at apple.com Tue Mar 15 19:13:02 2011 From: gclayton at apple.com (Greg Clayton) Date: Wed, 16 Mar 2011 00:13:02 -0000 Subject: [Lldb-commits] [lldb] r127713 - in /lldb/branches/apple/calcite/lldb: lldb.xcodeproj/project.pbxproj resources/LLDB-Info.plist Message-ID: <20110316001302.9856B2A6C12E@llvm.org> Author: gclayton Date: Tue Mar 15 19:13:02 2011 New Revision: 127713 URL: http://llvm.org/viewvc/llvm-project?rev=127713&view=rev Log: Bumped Xcode project version to 54 for lldb-54. Modified: lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist Modified: lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj?rev=127713&r1=127712&r2=127713&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj (original) +++ lldb/branches/apple/calcite/lldb/lldb.xcodeproj/project.pbxproj Tue Mar 15 19:13:02 2011 @@ -2976,9 +2976,9 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 53; + CURRENT_PROJECT_VERSION = 54; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 53; + DYLIB_CURRENT_VERSION = 54; EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3033,11 +3033,11 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 53; + CURRENT_PROJECT_VERSION = 54; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 53; + DYLIB_CURRENT_VERSION = 54; EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3120,7 +3120,7 @@ isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 53; + CURRENT_PROJECT_VERSION = 54; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3156,11 +3156,11 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 53; + CURRENT_PROJECT_VERSION = 54; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 53; + DYLIB_CURRENT_VERSION = 54; EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -3214,7 +3214,7 @@ buildSettings = { CODE_SIGN_IDENTITY = lldb_codesign; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 53; + CURRENT_PROJECT_VERSION = 54; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"", @@ -3253,7 +3253,7 @@ ); CODE_SIGN_IDENTITY = lldb_codesign; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 53; + CURRENT_PROJECT_VERSION = 54; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", Modified: lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist URL: http://llvm.org/viewvc/llvm-project/lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist?rev=127713&r1=127712&r2=127713&view=diff ============================================================================== --- lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist (original) +++ lldb/branches/apple/calcite/lldb/resources/LLDB-Info.plist Tue Mar 15 19:13:02 2011 @@ -17,7 +17,7 @@ CFBundleSignature ???? CFBundleVersion - 53 + 54 CFBundleName ${EXECUTABLE_NAME} From ctice at apple.com Wed Mar 16 17:46:55 2011 From: ctice at apple.com (Caroline Tice) Date: Wed, 16 Mar 2011 22:46:55 -0000 Subject: [Lldb-commits] [lldb] r127770 - in /lldb/trunk: include/lldb/Core/EmulateInstruction.h source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp source/Plugins/Instruction/ARM/EmulateInstructionARM.h Message-ID: <20110316224655.E0E012A6C12C@llvm.org> Author: ctice Date: Wed Mar 16 17:46:55 2011 New Revision: 127770 URL: http://llvm.org/viewvc/llvm-project?rev=127770&view=rev Log: Add code to emulate STRH (Register) Arm instruction. Remove inaccurate comments from EmulateInstruction::Context definition. Fix contexts in a few arm instruction emulation routines. Modified: lldb/trunk/include/lldb/Core/EmulateInstruction.h lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.h Modified: lldb/trunk/include/lldb/Core/EmulateInstruction.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/EmulateInstruction.h?rev=127770&r1=127769&r2=127770&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/EmulateInstruction.h (original) +++ lldb/trunk/include/lldb/Core/EmulateInstruction.h Wed Mar 16 17:46:55 2011 @@ -95,63 +95,34 @@ // Exclusively used when saving a register to the stack as part of the // prologue - // arg0 = register kind - // arg1 = register number - // arg2 = signed offset from current SP value where register is being - // stored eContextPushRegisterOnStack, // Exclusively used when restoring a register off the stack as part of // the epilogue - // arg0 = register kind - // arg1 = register number - // arg2 = signed offset from current SP value where register is being - // restored eContextPopRegisterOffStack, // Add or subtract a value from the stack - // arg0 = register kind for SP - // arg1 = register number for SP - // arg2 = signed offset being applied to the SP value eContextAdjustStackPointer, // Add or subtract a value from a base address register (other than SP) - // arg0 = register kind for base register - // arg1 = register number of base register - // arg2 = signed offset being applied to base register eContextAdjustBaseRegister, // Used in WriteRegister callbacks to indicate where the - // arg0 = source register kind - // arg1 = source register number - // arg2 = source signed offset eContextRegisterPlusOffset, // Used in WriteMemory callback to indicate where the data came from - // arg0 = register kind - // arg1 = register number (register being stored) - // arg2 = address of store eContextRegisterStore, eContextRegisterLoad, // Used when performing a PC-relative branch where the - // arg0 = don't care - // arg1 = imm32 (signed offset) - // arg2 = target instruction set or don't care eContextRelativeBranchImmediate, // Used when performing an absolute branch where the - // arg0 = target register kind - // arg1 = target register number - // arg2 = target instruction set or don't care eContextAbsoluteBranchRegister, // Used when performing a supervisor call to an operating system to // provide a service: - // arg0 = current instruction set or don't care - // arg1 = immediate data or don't care - // arg2 = don't care eContextSupervisorCall, // Used when performing a MemU operation to read the PC-relative offset @@ -159,19 +130,15 @@ eContextTableBranchReadMemory, // Used when random bits are written into a register - // arg0 = target register kind - // arg1 = target register number - // arg2 = don't care eContextWriteRegisterRandomBits, // Used when random bits are written to memory - // arg0 = target memory address - // arg1 = don't care - // arg2 = don't care eContextWriteMemoryRandomBits, eContextMultiplication, + eContextAddition, + eContextReturnFromException }; @@ -179,6 +146,7 @@ eInfoTypeRegisterPlusOffset, eInfoTypeRegisterPlusIndirectOffset, eInfoTypeRegisterToRegisterPlusOffset, + eInfoTypeRegisterToRegisterPlusIndirectOffset, eInfoTypeRegisterRegisterOperands, eInfoTypeOffset, eInfoTypeRegister, @@ -230,6 +198,13 @@ int64_t offset; // offset for address calculation } RegisterToRegisterPlusOffset; + struct RegisterToRegisterPlusIndirectOffset + { + Register base_reg; // base register for address calculation + Register offset_reg; // offset register for address calculation + Register data_reg; // source/target register for data + } RegisterToRegisterPlusIndirectOffset; + struct RegisterRegisterOperands { Register operand1; // register containing first operand for binary op @@ -292,6 +267,17 @@ } void + SetRegisterToRegisterPlusIndirectOffset (Register base_reg, + Register offset_reg, + Register data_reg) + { + info_type = eInfoTypeRegisterToRegisterPlusIndirectOffset; + info.RegisterToRegisterPlusIndirectOffset.base_reg = base_reg; + info.RegisterToRegisterPlusIndirectOffset.offset_reg = offset_reg; + info.RegisterToRegisterPlusIndirectOffset.data_reg = data_reg; + } + + void SetRegisterRegisterOperands (Register op1_reg, Register op2_reg) { Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp?rev=127770&r1=127769&r2=127770&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp (original) +++ lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Wed Mar 16 17:46:55 2011 @@ -412,12 +412,14 @@ context.type = EmulateInstruction::eContextPopRegisterOffStack; Register dwarf_reg; dwarf_reg.SetRegister (eRegisterKindDWARF, 0); + Register sp_reg; + sp_reg.SetRegister (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP); for (i=0; i<15; ++i) { if (BitIsSet (registers, i)) { dwarf_reg.num = dwarf_r0 + i; - context.SetRegisterPlusOffset (dwarf_reg, addr - sp); + context.SetRegisterPlusOffset (sp_reg, addr - sp); data = MemARead(context, addr, 4, 0, &success); if (!success) return false; @@ -430,7 +432,7 @@ if (BitIsSet (registers, 15)) { dwarf_reg.num = dwarf_pc; - context.SetRegisterPlusOffset (dwarf_reg, addr - sp); + context.SetRegisterPlusOffset (sp_reg, addr - sp); data = MemARead(context, addr, 4, 0, &success); if (!success) return false; @@ -2509,8 +2511,12 @@ AddWithCarryResult res = AddWithCarry(val1, shifted, 0); EmulateInstruction::Context context; - context.type = EmulateInstruction::eContextImmediate; - context.SetNoArgs (); + context.type = EmulateInstruction::eContextAddition; + Register op1_reg; + Register op2_reg; + op1_reg.SetRegister (eRegisterKindDWARF, dwarf_r0 + Rn); + op2_reg.SetRegister (eRegisterKindDWARF, dwarf_r0 + Rm); + context.SetRegisterRegisterOperands (op1_reg, op2_reg); if (!WriteCoreRegOptionalFlags(context, res.result, Rd, setflags, res.carry_out, res.overflow)) return false; @@ -4834,6 +4840,186 @@ return true; } + +// STRH (register) calculates an address from a base register value and an offset register value, and stores a +// halfword from a register to memory. The offset register alue can be shifted left by 0, 1, 2, or 3 bits. +bool +EmulateInstructionARM::EmulateSTRHRegister (ARMEncoding encoding) +{ +#if 0 + if ConditionPassed() then + EncodingSpecificOperations(); NullCheckIfThumbEE(n); + offset = Shift(R[m], shift_t, shift_n, APSR.C); + offset_addr = if add then (R[n] + offset) else (R[n] - offset); + address = if index then offset_addr else R[n]; + if UnalignedSupport() || address<0> == ???0??? then + MemU[address,2] = R[t]<15:0>; + else // Can only occur before ARMv7 + MemU[address,2] = bits(16) UNKNOWN; + if wback then R[n] = offset_addr; +#endif + + bool success = false; + const uint32_t opcode = OpcodeAsUnsigned (&success); + if (!success) + return false; + + if (ConditionPassed ()) + { + uint32_t t; + uint32_t n; + uint32_t m; + bool index; + bool add; + bool wback; + ARM_ShifterType shift_t; + uint32_t shift_n; + + // EncodingSpecificOperations(); NullCheckIfThumbEE(n); + switch (encoding) + { + case eEncodingT1: + // if CurrentInstrSet() == InstrSet_ThumbEE then SEE "Modified operation in ThumbEE"; + // t = UInt(Rt); n = UInt(Rn); m = UInt(Rm); + t = Bits32 (opcode, 2, 0); + n = Bits32 (opcode, 5, 3); + m = Bits32 (opcode, 8, 6); + + // index = TRUE; add = TRUE; wback = FALSE; + index = true; + add = true; + wback = false; + + // (shift_t, shift_n) = (SRType_LSL, 0); + shift_t = SRType_LSL; + shift_n = 0; + + break; + + case eEncodingT2: + // if Rn == ???1111??? then UNDEFINED; + // t = UInt(Rt); n = UInt(Rn); m = UInt(Rm); + t = Bits32 (opcode, 15, 12); + n = Bits32 (opcode, 19, 16); + m = Bits32 (opcode, 3, 0); + if (n == 15) + return false; + + // index = TRUE; add = TRUE; wback = FALSE; + index = true; + add = true; + wback = false; + + // (shift_t, shift_n) = (SRType_LSL, UInt(imm2)); + shift_t = SRType_LSL; + shift_n = Bits32 (opcode, 5, 4); + + // if BadReg(t) || BadReg(m) then UNPREDICTABLE; + if (BadReg (t) || BadReg (m)) + return false; + + break; + + case eEncodingA1: + // if P == ???0??? && W == ???1??? then SEE STRHT; + // t = UInt(Rt); n = UInt(Rn); m = UInt(Rm); + t = Bits32 (opcode, 15, 12); + n = Bits32 (opcode, 19, 16); + m = Bits32 (opcode, 3, 0); + + // index = (P == ???1???); add = (U == ???1???); wback = (P == ???0???) || (W == ???1???); + index = BitIsSet (opcode, 24); + add = BitIsSet (opcode, 23); + wback = (BitIsClear (opcode, 24) || BitIsSet (opcode, 21)); + + // (shift_t, shift_n) = (SRType_LSL, 0); + shift_t = SRType_LSL; + shift_n = 0; + + // if t == 15 || m == 15 then UNPREDICTABLE; + if ((t == 15) || (m == 15)) + return false; + + // if wback && (n == 15 || n == t) then UNPREDICTABLE; + if (wback && ((n == 15) || (n == t))) + return false; + + break; + + default: + return false; + } + + uint32_t Rm = ReadCoreReg (m, &success); + if (!success) + return false; + + uint32_t Rn = ReadCoreReg (n, &success); + if (!success) + return false; + + // offset = Shift(R[m], shift_t, shift_n, APSR.C); + uint32_t offset = Shift (Rm, shift_t, shift_n, APSR_C); + + // offset_addr = if add then (R[n] + offset) else (R[n] - offset); + addr_t offset_addr; + if (add) + offset_addr = Rn + offset; + else + offset_addr = Rn - offset; + + // address = if index then offset_addr else R[n]; + addr_t address; + if (index) + address = offset_addr; + else + address = Rn; + + EmulateInstruction::Context context; + context.type = eContextRegisterStore; + Register base_reg; + base_reg.SetRegister (eRegisterKindDWARF, dwarf_r0 + n); + Register offset_reg; + offset_reg.SetRegister (eRegisterKindDWARF, dwarf_r0 + m); + + // if UnalignedSupport() || address<0> == ???0??? then + if (UnalignedSupport() || BitIsClear (address, 0)) + { + // MemU[address,2] = R[t]<15:0>; + uint32_t Rt = ReadCoreReg (t, &success); + if (!success) + return false; + + EmulateInstruction::Context context; + context.type = eContextRegisterStore; + Register base_reg; + base_reg.SetRegister (eRegisterKindDWARF, dwarf_r0 + n); + Register offset_reg; + offset_reg.SetRegister (eRegisterKindDWARF, dwarf_r0 + m); + Register data_reg; + data_reg.SetRegister (eRegisterKindDWARF, dwarf_r0 + t); + context.SetRegisterToRegisterPlusIndirectOffset (base_reg, offset_reg, data_reg); + + if (!MemUWrite (context, address, Bits32 (Rt, 15, 0), 2)) + return false; + } + else // Can only occur before ARMv7 + { + // MemU[address,2] = bits(16) UNKNOWN; + } + + // if wback then R[n] = offset_addr; + if (wback) + { + context.type = eContextAdjustBaseRegister; + context.SetAddress (offset_addr); + if (!WriteRegisterUnsigned (context, eRegisterKindDWARF, dwarf_r0 + n, offset_addr)) + return false; + } + } + + return true; +} // Add with Carry (immediate) adds an immediate value and the carry flag value to a register value, // and writes the result to the destination register. It can optionally update the condition flags @@ -9294,6 +9480,7 @@ { 0x0fd00000, 0x09000000, ARMvAll, eEncodingA1, eSize32, &EmulateInstructionARM::EmulateSTMDB, "stmdb {!} " }, { 0x0fd00000, 0x09800000, ARMvAll, eEncodingA1, eSize32, &EmulateInstructionARM::EmulateSTMIB, "stmib {!} " }, { 0x0e500010, 0x06000000, ARMvAll, eEncodingA1, eSize32, &EmulateInstructionARM::EmulateSTRRegister, "str [ +/- {}]{!}" }, + { 0x0e5000f0, 0x000000b0, ARMvAll, eEncodingA1, eSize32, &EmulateInstructionARM::EmulateSTRHRegister, "strh ,[,+/-[{!}" }, //---------------------------------------------------------------------- // Other instructions @@ -9572,6 +9759,8 @@ { 0xfffff800, 0x00007000, ARMV4T_ABOVE, eEncodingT1, eSize16, &EmulateInstructionARM::EmulateSTRBThumb, "strb , [, #]" }, { 0xfff00000, 0xf8800000, ARMV6T2_ABOVE, eEncodingT2, eSize32, &EmulateInstructionARM::EmulateSTRBThumb, "strb.w , [, #]" }, { 0xfff00800, 0xf8000800, ARMV6T2_ABOVE, eEncodingT3, eSize32, &EmulateInstructionARM::EmulateSTRBThumb, "strb ,[, #+/-]{!}" }, + { 0xfffffe00, 0x00005200, ARMV4T_ABOVE, eEncodingT1, eSize16, &EmulateInstructionARM::EmulateSTRHRegister, "strh ,[,]" }, + { 0xfff00fc0, 0xf8200000, ARMV6T2_ABOVE, eEncodingT2, eSize32, &EmulateInstructionARM::EmulateSTRHRegister, "strh.w ,[,{,LSL #}]" }, //---------------------------------------------------------------------- // Other instructions Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.h?rev=127770&r1=127769&r2=127770&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.h (original) +++ lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.h Wed Mar 16 17:46:55 2011 @@ -524,6 +524,10 @@ bool EmulateSTRBThumb (ARMEncoding encoding); + // A8.6.207 STRH (register) + bool + EmulateSTRHRegister (ARMEncoding encoding); + // A8.6.1 ADC (immediate) bool EmulateADCImm (ARMEncoding encoding); From johnny.chen at apple.com Wed Mar 16 19:38:22 2011 From: johnny.chen at apple.com (Johnny Chen) Date: Thu, 17 Mar 2011 00:38:22 -0000 Subject: [Lldb-commits] [lldb] r127782 - /lldb/trunk/test/dotest.py Message-ID: <20110317003822.39B812A6C12C@llvm.org> Author: johnny Date: Wed Mar 16 19:38:22 2011 New Revision: 127782 URL: http://llvm.org/viewvc/llvm-project?rev=127782&view=rev Log: As a simple measure, output the lldb version and the svn info for which the testsuite is run against. Modified: lldb/trunk/test/dotest.py Modified: lldb/trunk/test/dotest.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/dotest.py?rev=127782&r1=127781&r2=127782&view=diff ============================================================================== --- lldb/trunk/test/dotest.py (original) +++ lldb/trunk/test/dotest.py Wed Mar 16 19:38:22 2011 @@ -576,7 +576,10 @@ print "The 'lldb' executable cannot be located. Some of the tests may not be run as a result." else: os.environ["LLDB_EXEC"] = lldbExec - print "The 'lldb' executable path is", lldbExec + #print "The 'lldb' executable path is", lldbExec + os.system('%s -v' % lldbExec) + + os.system('svn info %s' % base) global ignore From johnny.chen at apple.com Wed Mar 16 19:59:57 2011 From: johnny.chen at apple.com (Johnny Chen) Date: Thu, 17 Mar 2011 00:59:57 -0000 Subject: [Lldb-commits] [lldb] r127785 - in /lldb/trunk/utils/test: README-disasm disasm.py Message-ID: <20110317005957.C71672A6C12C@llvm.org> Author: johnny Date: Wed Mar 16 19:59:57 2011 New Revision: 127785 URL: http://llvm.org/viewvc/llvm-project?rev=127785&view=rev Log: Add a Python script to take an executable, run gdb to disassemble a function, read the memory contents of the function, and then feed the bytes to the 'llvm-mc -disassemble' command. It uses the pexpect module located under ToT/test/pexpect-2.4 directory to automate the interaction with gdb. This is used initially to test the low level ARM disassembler of llvm. Added: lldb/trunk/utils/test/README-disasm lldb/trunk/utils/test/disasm.py (with props) Added: lldb/trunk/utils/test/README-disasm URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/utils/test/README-disasm?rev=127785&view=auto ============================================================================== --- lldb/trunk/utils/test/README-disasm (added) +++ lldb/trunk/utils/test/README-disasm Wed Mar 16 19:59:57 2011 @@ -0,0 +1,529 @@ +This README describes a sample invocation of disasm.py whose purpose is to test +the low level ARM/Thumb disassembly functionality from llvm using the llvm-mc +command line. We invoke gdb on an executable, try to disassemble a function, +and then read the memory contents of the disassembled function. + +The byte contents are written into a file named disasm-input.txt and then we +invoke llvm-mc -disassemble plus options (set with the -o/--options) on the +byte contents. + +See the following for a sample session using this command: + +da0603a-dhcp191:9131529 johnny$ /Volumes/data/lldb/svn/trunk/utils/test/disasm.py -m /Volumes/data/lldb/llvm/Debug+Asserts/bin/llvm-mc -e MessageComposer.app/MessageComposer -f main --options='-triple=arm-apple-darwin -debug-only=arm-disassembler' +executable: MessageComposer.app/MessageComposer +function: main +llvm-mc: /Volumes/data/lldb/llvm/Debug+Asserts/bin/llvm-mc +llvm-mc options: -triple=arm-apple-darwin -debug-only=arm-disassembler +GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:56:02 UTC 2011) +Copyright 2004 Free Software Foundation, Inc. +GDB is free software, covered by the GNU General Public License, and you are +welcome to change it and/or distribute copies of it under certain conditions. +Type "show copying" to see the conditions. +There is absolutely no warranty for GDB. Type "show warranty" for details. +This GDB was configured as "--host=x86_64-apple-darwin --target=arm-apple-darwin"... +warning: Unable to read symbols from "dyld" (prefix __dyld_) (not yet mapped into memory). + +warning: Unable to read symbols from "Foundation" (not yet mapped into memory). + +warning: Unable to read symbols for /System/Library/Frameworks/UIKit.framework/UIKit (file not found). + +warning: Unable to read symbols from "UIKit" (not yet mapped into memory). + +warning: Unable to read symbols for /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (file not found). + +warning: Unable to read symbols from "CoreGraphics" (not yet mapped into memory). + +warning: Unable to read symbols from "MessageUI" (not yet mapped into memory). + +warning: Unable to read symbols from "libSystem.B.dylib" (not yet mapped into memory). + +warning: Unable to read symbols from "libobjc.A.dylib" (not yet mapped into memory). + +warning: Unable to read symbols from "CoreFoundation" (not yet mapped into memory). + +warning: Could not find object file "/Volumes/Data/HD2/Data/work/tests/iphone-tests/MessageComposer/build/MessageComposer.build/Debug-iphoneos/MessageComposer.build/Objects-normal/armv6/main.o" - no debug information available for "/Volumes/Data/HD2/Data/work/tests/iphone-tests/MessageComposer/main.m". + + +warning: Could not find object file "/Volumes/Data/HD2/Data/work/tests/iphone-tests/MessageComposer/build/MessageComposer.build/Debug-iphoneos/MessageComposer.build/Objects-normal/armv6/MessageComposerAppDelegate.o" - no debug information available for "/Volumes/Data/HD2/Data/work/tests/iphone-tests/MessageComposer/Classes/MessageComposerAppDelegate.m". + + +warning: Could not find object file "/Volumes/Data/HD2/Data/work/tests/iphone-tests/MessageComposer/build/MessageComposer.build/Debug-iphoneos/MessageComposer.build/Objects-normal/armv6/MessageComposerViewController.o" - no debug information available for "/Volumes/Data/HD2/Data/work/tests/iphone-tests/MessageComposer/Classes/MessageComposerViewController.m". + + +(gdb) disassemble main +Dump of assembler code for function main: +0x00002180 : push {r7, lr} +0x00002184 : add r7, sp, #0 ; 0x0 +0x00002188 : sub sp, sp, #16 ; 0x10 +0x0000218c : str r0, [sp, #4] +0x00002190 : str r1, [sp] +0x00002194 : ldr r3, [pc, #144] ; 0x222c +0x00002198 : add r3, pc, r3 +0x0000219c : ldr r3, [r3] +0x000021a0 : mov r2, r3 +0x000021a4 : ldr r3, [pc, #132] ; 0x2230 +0x000021a8 : add r3, pc, r3 +0x000021ac : ldr r3, [r3] +0x000021b0 : mov r0, r2 +0x000021b4 : mov r1, r3 +0x000021b8 : bl 0x3ff4 +0x000021bc : mov r3, r0 +0x000021c0 : mov r2, r3 +0x000021c4 : ldr r3, [pc, #104] ; 0x2234 +0x000021c8 : add r3, pc, r3 +0x000021cc : ldr r3, [r3] +0x000021d0 : mov r0, r2 +0x000021d4 : mov r1, r3 +0x000021d8 : bl 0x3ff4 +0x000021dc : mov r3, r0 +0x000021e0 : str r3, [sp, #8] +0x000021e4 : ldr r0, [sp, #4] +0x000021e8 : ldr r1, [sp] +0x000021ec : mov r2, #0 ; 0x0 +0x000021f0 : mov r3, #0 ; 0x0 +0x000021f4 : bl 0x3fec +0x000021f8 : mov r3, r0 +0x000021fc : str r3, [sp, #12] +0x00002200 : ldr r2, [sp, #8] +0x00002204 : ldr r3, [pc, #44] ; 0x2238 +0x00002208 : add r3, pc, r3 +0x0000220c : ldr r3, [r3] +0x00002210 : mov r0, r2 +0x00002214 : mov r1, r3 +0x00002218 : bl 0x3ff4 +0x0000221c : ldr r3, [sp, #12] +0x00002220 : mov r0, r3 +0x00002224 : sub sp, r7, #0 ; 0x0 +0x00002228 : pop {r7, pc} +0x0000222c : strdeq r2, [r0], -r8 +0x00002230 : andeq r2, r0, r12, ror r4 +0x00002234 : andeq r2, r0, r8, asr r4 +0x00002238 : andeq r2, r0, r4, lsl r4 +End of assembler dump. +(gdb) x /4b 0x00002180 +0x2180
: 0x80 0x40 0x2d 0xe9 +(gdb) x /4b 0x00002184 +0x2184 : 0x00 0x70 0x8d 0xe2 +(gdb) x /4b 0x00002188 +0x2188 : 0x10 0xd0 0x4d 0xe2 +(gdb) x /4b 0x0000218c +0x218c : 0x04 0x00 0x8d 0xe5 +(gdb) x /4b 0x00002190 +0x2190 : 0x00 0x10 0x8d 0xe5 +(gdb) x /4b 0x00002194 +0x2194 : 0x90 0x30 0x9f 0xe5 +(gdb) x /4b 0x00002198 +0x2198 : 0x03 0x30 0x8f 0xe0 +(gdb) x /4b 0x0000219c +0x219c : 0x00 0x30 0x93 0xe5 +(gdb) x /4b 0x000021a0 +0x21a0 : 0x03 0x20 0xa0 0xe1 +(gdb) x /4b 0x000021a4 +0x21a4 : 0x84 0x30 0x9f 0xe5 +(gdb) x /4b 0x000021a8 +0x21a8 : 0x03 0x30 0x8f 0xe0 +(gdb) x /4b 0x000021ac +0x21ac : 0x00 0x30 0x93 0xe5 +(gdb) x /4b 0x000021b0 +0x21b0 : 0x02 0x00 0xa0 0xe1 +(gdb) x /4b 0x000021b4 +0x21b4 : 0x03 0x10 0xa0 0xe1 +(gdb) x /4b 0x000021b8 +0x21b8 : 0x8d 0x07 0x00 0xeb +(gdb) x /4b 0x000021bc +0x21bc : 0x00 0x30 0xa0 0xe1 +(gdb) x /4b 0x000021c0 +0x21c0 : 0x03 0x20 0xa0 0xe1 +(gdb) x /4b 0x000021c4 +0x21c4 : 0x68 0x30 0x9f 0xe5 +(gdb) x /4b 0x000021c8 +0x21c8 : 0x03 0x30 0x8f 0xe0 +(gdb) x /4b 0x000021cc +0x21cc : 0x00 0x30 0x93 0xe5 +(gdb) x /4b 0x000021d0 +0x21d0 : 0x02 0x00 0xa0 0xe1 +(gdb) x /4b 0x000021d4 +0x21d4 : 0x03 0x10 0xa0 0xe1 +(gdb) x /4b 0x000021d8 +0x21d8 : 0x85 0x07 0x00 0xeb +(gdb) x /4b 0x000021dc +0x21dc : 0x00 0x30 0xa0 0xe1 +(gdb) x /4b 0x000021e0 +0x21e0 : 0x08 0x30 0x8d 0xe5 +(gdb) x /4b 0x000021e4 +0x21e4 : 0x04 0x00 0x9d 0xe5 +(gdb) x /4b 0x000021e8 +0x21e8 : 0x00 0x10 0x9d 0xe5 +(gdb) x /4b 0x000021ec +0x21ec : 0x00 0x20 0xa0 0xe3 +(gdb) x /4b 0x000021f0 +0x21f0 : 0x00 0x30 0xa0 0xe3 +(gdb) x /4b 0x000021f4 +0x21f4 : 0x7c 0x07 0x00 0xeb +(gdb) x /4b 0x000021f8 +0x21f8 : 0x00 0x30 0xa0 0xe1 +(gdb) x /4b 0x000021fc +0x21fc : 0x0c 0x30 0x8d 0xe5 +(gdb) x /4b 0x00002200 +0x2200 : 0x08 0x20 0x9d 0xe5 +(gdb) x /4b 0x00002204 +0x2204 : 0x2c 0x30 0x9f 0xe5 +(gdb) x /4b 0x00002208 +0x2208 : 0x03 0x30 0x8f 0xe0 +(gdb) x /4b 0x0000220c +0x220c : 0x00 0x30 0x93 0xe5 +(gdb) x /4b 0x00002210 +0x2210 : 0x02 0x00 0xa0 0xe1 +(gdb) x /4b 0x00002214 +0x2214 : 0x03 0x10 0xa0 0xe1 +(gdb) x /4b 0x00002218 +0x2218 : 0x75 0x07 0x00 0xeb +(gdb) x /4b 0x0000221c +0x221c : 0x0c 0x30 0x9d 0xe5 +(gdb) x /4b 0x00002220 +0x2220 : 0x03 0x00 0xa0 0xe1 +(gdb) x /4b 0x00002224 +0x2224 : 0x00 0xd0 0x47 0xe2 +(gdb) x /4b 0x00002228 +0x2228 : 0x80 0x80 0xbd 0xe8 +(gdb) x /4b 0x0000222c +0x222c : 0xf8 0x24 0x00 0x00 +(gdb) x /4b 0x00002230 +0x2230 : 0x7c 0x24 0x00 0x00 +(gdb) x /4b 0x00002234 +0x2234 : 0x58 0x24 0x00 0x00 +(gdb) x /4b 0x00002238 +0x2238 : 0x14 0x24 0x00 0x00 +(gdb) quit + +Executing command: /Volumes/data/lldb/llvm/Debug+Asserts/bin/llvm-mc -disassemble -triple=arm-apple-darwin -debug-only=arm-disassembler disasm-input.txt +Opcode=345 Name=STMDB_UPD Format=ARM_FORMAT_LDSTMULFRM(10) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 1: 0: 0: 1| 0: 0: 1: 0| 1: 1: 0: 1| 0: 1: 0: 0| 0: 0: 0: 0| 1: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + push {r7, lr} +Opcode=23 Name=ADDri Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 1: 0| 1: 0: 0: 0| 1: 1: 0: 1| 0: 1: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + add r7, sp, #0 +Opcode=374 Name=SUBri Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 1: 0| 0: 1: 0: 0| 1: 1: 0: 1| 1: 1: 0: 1| 0: 0: 0: 0| 0: 0: 0: 1| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + sub sp, sp, #16 +Opcode=369 Name=STRi12 Format=ARM_FORMAT_STFRM(7) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 0| 1: 1: 0: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 1: 0: 0| +------------------------------------------------------------------------------------------------- + + str r0, [sp, #4] +Opcode=369 Name=STRi12 Format=ARM_FORMAT_STFRM(7) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 0| 1: 1: 0: 1| 0: 0: 0: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + str r1, [sp] +Opcode=165 Name=LDRcp Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 1: 1: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 1: 0: 0: 1| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r3, [pc, #144] +Opcode=24 Name=ADDrr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 0| 1: 0: 0: 0| 1: 1: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| +------------------------------------------------------------------------------------------------- + + add r3, pc, r3 +Opcode=166 Name=LDRi12 Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 0: 0: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r3, [r3] +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| +------------------------------------------------------------------------------------------------- + + mov r2, r3 +Opcode=165 Name=LDRcp Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 1: 1: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 1: 0: 0: 0| 0: 1: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r3, [pc, #132] +Opcode=24 Name=ADDrr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 0| 1: 0: 0: 0| 1: 1: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| +------------------------------------------------------------------------------------------------- + + add r3, pc, r3 +Opcode=166 Name=LDRi12 Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 0: 0: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r3, [r3] +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 0| +------------------------------------------------------------------------------------------------- + + mov r0, r2 +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| +------------------------------------------------------------------------------------------------- + + mov r1, r3 +Opcode=66 Name=BL Format=ARM_FORMAT_BRFRM(2) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 1: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 1: 1: 1| 1: 0: 0: 0| 1: 1: 0: 1| +------------------------------------------------------------------------------------------------- + + bl #7732 +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + mov r3, r0 +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| +------------------------------------------------------------------------------------------------- + + mov r2, r3 +Opcode=165 Name=LDRcp Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 1: 1: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 1: 1: 0| 1: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r3, [pc, #104] +Opcode=24 Name=ADDrr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 0| 1: 0: 0: 0| 1: 1: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| +------------------------------------------------------------------------------------------------- + + add r3, pc, r3 +Opcode=166 Name=LDRi12 Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 0: 0: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r3, [r3] +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 0| +------------------------------------------------------------------------------------------------- + + mov r0, r2 +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| +------------------------------------------------------------------------------------------------- + + mov r1, r3 +Opcode=66 Name=BL Format=ARM_FORMAT_BRFRM(2) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 1: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 1: 1: 1| 1: 0: 0: 0| 0: 1: 0: 1| +------------------------------------------------------------------------------------------------- + + bl #7700 +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + mov r3, r0 +Opcode=369 Name=STRi12 Format=ARM_FORMAT_STFRM(7) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 0| 1: 1: 0: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 1: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + str r3, [sp, #8] +Opcode=166 Name=LDRi12 Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 1: 1: 0: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 1: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r0, [sp, #4] +Opcode=166 Name=LDRi12 Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 1: 1: 0: 1| 0: 0: 0: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r1, [sp] +Opcode=189 Name=MOVi Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 1: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + mov r2, #0 +Opcode=189 Name=MOVi Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 1: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + mov r3, #0 +Opcode=66 Name=BL Format=ARM_FORMAT_BRFRM(2) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 1: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 1: 1: 1| 0: 1: 1: 1| 1: 1: 0: 0| +------------------------------------------------------------------------------------------------- + + bl #7664 +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + mov r3, r0 +Opcode=369 Name=STRi12 Format=ARM_FORMAT_STFRM(7) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 0| 1: 1: 0: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 1: 1: 0: 0| +------------------------------------------------------------------------------------------------- + + str r3, [sp, #12] +Opcode=166 Name=LDRi12 Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 1: 1: 0: 1| 0: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 0| 1: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r2, [sp, #8] +Opcode=165 Name=LDRcp Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 1: 1: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 1: 0| 1: 1: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r3, [pc, #44] +Opcode=24 Name=ADDrr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 0| 1: 0: 0: 0| 1: 1: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| +------------------------------------------------------------------------------------------------- + + add r3, pc, r3 +Opcode=166 Name=LDRi12 Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 0: 0: 1: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r3, [r3] +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 0| +------------------------------------------------------------------------------------------------- + + mov r0, r2 +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| +------------------------------------------------------------------------------------------------- + + mov r1, r3 +Opcode=66 Name=BL Format=ARM_FORMAT_BRFRM(2) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 1: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 1: 1: 1| 0: 1: 1: 1| 0: 1: 0: 1| +------------------------------------------------------------------------------------------------- + + bl #7636 +Opcode=166 Name=LDRi12 Format=ARM_FORMAT_LDFRM(6) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 1: 0: 1| 1: 0: 0: 1| 1: 1: 0: 1| 0: 0: 1: 1| 0: 0: 0: 0| 0: 0: 0: 0| 1: 1: 0: 0| +------------------------------------------------------------------------------------------------- + + ldr r3, [sp, #12] +Opcode=193 Name=MOVr Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| +------------------------------------------------------------------------------------------------- + + mov r0, r3 +Opcode=374 Name=SUBri Format=ARM_FORMAT_DPFRM(4) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 0: 0: 1: 0| 0: 1: 0: 0| 0: 1: 1: 1| 1: 1: 0: 1| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + sub sp, r7, #0 +Opcode=135 Name=LDMIA_UPD Format=ARM_FORMAT_LDSTMULFRM(10) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 1: 1: 1: 0| 1: 0: 0: 0| 1: 0: 1: 1| 1: 1: 0: 1| 1: 0: 0: 0| 0: 0: 0: 0| 1: 0: 0: 0| 0: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + pop {r7, pc} +Opcode=356 Name=STRD_POST Format=ARM_FORMAT_STMISCFRM(9) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 0| 0: 1: 0: 0| 1: 1: 1: 1| 1: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + strdeq r2, r3, [r0], -r8 +Opcode=31 Name=ANDrs Format=ARM_FORMAT_DPSOREGFRM(5) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 0| 0: 1: 0: 0| 0: 1: 1: 1| 1: 1: 0: 0| +------------------------------------------------------------------------------------------------- + + andeq r2, r0, r12, ror r4 +Opcode=31 Name=ANDrs Format=ARM_FORMAT_DPSOREGFRM(5) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 0| 0: 1: 0: 0| 0: 1: 0: 1| 1: 0: 0: 0| +------------------------------------------------------------------------------------------------- + + andeq r2, r0, r8, asr r4 +Opcode=31 Name=ANDrs Format=ARM_FORMAT_DPSOREGFRM(5) + 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +------------------------------------------------------------------------------------------------- +| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 1: 0| 0: 1: 0: 0| 0: 0: 0: 1| 0: 1: 0: 0| +------------------------------------------------------------------------------------------------- + + andeq r2, r0, r4, lsl r4 +da0603a-dhcp191:9131529 johnny$ Added: lldb/trunk/utils/test/disasm.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/utils/test/disasm.py?rev=127785&view=auto ============================================================================== --- lldb/trunk/utils/test/disasm.py (added) +++ lldb/trunk/utils/test/disasm.py Wed Mar 16 19:59:57 2011 @@ -0,0 +1,169 @@ +#!/usr/bin/env python + +""" +Run gdb to disassemble a function, feed the bytes to 'llvm-mc -disassemble' command, +and display the disassembly result. + +""" + +import os +import sys +from optparse import OptionParser + +def is_exe(fpath): + """Check whether fpath is an executable.""" + return os.path.isfile(fpath) and os.access(fpath, os.X_OK) + +def which(program): + """Find the full path to a program, or return None.""" + fpath, fname = os.path.split(program) + if fpath: + if is_exe(program): + return program + else: + for path in os.environ["PATH"].split(os.pathsep): + exe_file = os.path.join(path, program) + if is_exe(exe_file): + return exe_file + return None + +def do_llvm_mc_disassembly(exe, func, mc, mc_options = None): + import pexpect + + gdb_prompt = "\r\n\(gdb\) " + gdb = pexpect.spawn('gdb %s' % exe) + # Turn on logging for what gdb sends back. + gdb.logfile_read = sys.stdout + + gdb.expect(gdb_prompt) + gdb.sendline('disassemble %s' % func) + gdb.expect(gdb_prompt) + + # Get the output from gdb. + gdb_output = gdb.before + + # Open disasm-input.txt for writing the hex strings for llvm-mc to work on. + mc_input = open('disasm-input.txt', 'w') + + # These keep track of the states of our simple gdb_output parser. + prev_line = None + prev_addr = None + curr_addr = None + addr_diff = 0 + looking = False + for line in gdb_output.split(os.linesep): + if line.startswith('Dump of assembler code'): + looking = True + continue + + if line.startswith('End of assembler dump.'): + looking = False + prev_addr = curr_addr + if mc_options and mc_options.find('arm') != -1: + addr_diff = 4 + if mc_options and mc_options.find('thumb') != -1: + # It is obviously wrong to assume the last instruction of the + # function has two bytes. + # FIXME + addr_diff = 2 + + if looking and line.startswith('0x'): + # It's an assembler code dump. + prev_addr = curr_addr + curr_addr = line.split(None, 1)[0] + if prev_addr and curr_addr: + addr_diff = int(curr_addr, 16) - int(prev_addr, 16) + + if prev_addr: + # Feed the examining memory command to gdb. + gdb.sendline('x /%db %s' % (addr_diff, prev_addr)) + gdb.expect(gdb_prompt) + x_output = gdb.before + memory_dump = x_output.split(os.linesep)[-1].split(':')[-1] + #print "\nbytes:", memory_dump + mc_input.write(memory_dump + '\n') + + # We're done with the processing. Assign the current line to be prev_line. + prev_line = line + + # Close the gdb session now that we are done with it. + gdb.sendline('quit') + gdb.expect(pexpect.EOF) + gdb.close() + + # Close the mc_input now that we are done writing it. + mc_input.close() + + mc_cmd = '%s -disassemble %s disasm-input.txt' % (mc, mc_options) + print "\nExecuting command:", mc_cmd + os.system(mc_cmd) + + # And invoke llvm-mc with the just recorded file. + #mc = pexpect.spawn('%s -disassemble %s disasm-input.txt' % (mc, mc_options)) + #mc.logfile_read = sys.stdout + #print "mc:", mc + #mc.close() + + +def main(): + # This is to set up the Python path to include the pexpect-2.4 dir. + # Remember to update this when/if things change. + scriptPath = sys.path[0] + sys.path.append(os.path.join(scriptPath, os.pardir, os.pardir, 'test', 'pexpect-2.4')) + + parser = OptionParser(usage="""\ +Run gdb to disassemble a function, feed the bytes to 'llvm-mc -disassemble' command, +and display the disassembly result. + +Usage: %prog [options] +""") + parser.add_option('-e', '--executable', + type='string', action='store', + dest='executable', + help="""The executable to do disassembly on.""") + parser.add_option('-f', '--function', + type='string', action='store', + dest='function', + help="""The function name (could be an address to gdb) for disassembly.""") + parser.add_option('-m', '--llvm-mc', + type='string', action='store', + dest='llvm_mc', + help="""The llvm-mc executable full path, if specified. + Otherwise, it must be present in your PATH environment.""") + + parser.add_option('-o', '--options', + type='string', action='store', + dest='llvm_mc_options', + help="""The extra options passed to 'llvm-mc -disassemble' command if specified.""") + + opts, args = parser.parse_args() + + if not opts.executable: + parser.print_help() + sys.exit(1) + executable = opts.executable + + if not opts.function: + parser.print_help() + sys.exit(1) + function = opts.function + + llvm_mc = opts.llvm_mc if opts.llvm_mc else which('llvm-mc') + if not llvm_mc: + parser.print_help() + sys.exit(1) + + # This is optional. For example: + # --options='-triple=arm-apple-darwin -debug-only=arm-disassembler' + llvm_mc_options = opts.llvm_mc_options + + # We have parsed the options. + print "executable:", executable + print "function:", function + print "llvm-mc:", llvm_mc + print "llvm-mc options:", llvm_mc_options + + do_llvm_mc_disassembly(executable, function, llvm_mc, llvm_mc_options) + +if __name__ == '__main__': + main() Propchange: lldb/trunk/utils/test/disasm.py ------------------------------------------------------------------------------ svn:executable = * From johnny.chen at apple.com Thu Mar 17 14:05:34 2011 From: johnny.chen at apple.com (Johnny Chen) Date: Thu, 17 Mar 2011 19:05:34 -0000 Subject: [Lldb-commits] [lldb] r127823 - /lldb/trunk/utils/test/disasm.py Message-ID: <20110317190534.A1CDE2A6C12C@llvm.org> Author: johnny Date: Thu Mar 17 14:05:34 2011 New Revision: 127823 URL: http://llvm.org/viewvc/llvm-project?rev=127823&view=rev Log: Tidy up the input file given to 'llvm-mc -disassemble' and also append the gdb assembler code to the memory dump. Modified: lldb/trunk/utils/test/disasm.py Modified: lldb/trunk/utils/test/disasm.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/utils/test/disasm.py?rev=127823&r1=127822&r2=127823&view=diff ============================================================================== --- lldb/trunk/utils/test/disasm.py (original) +++ lldb/trunk/utils/test/disasm.py Thu Mar 17 14:05:34 2011 @@ -28,6 +28,7 @@ return None def do_llvm_mc_disassembly(exe, func, mc, mc_options = None): + from cStringIO import StringIO import pexpect gdb_prompt = "\r\n\(gdb\) " @@ -42,8 +43,8 @@ # Get the output from gdb. gdb_output = gdb.before - # Open disasm-input.txt for writing the hex strings for llvm-mc to work on. - mc_input = open('disasm-input.txt', 'w') + # Use StringIO to record the memory dump as well as the gdb assembler code. + mc_input = StringIO() # These keep track of the states of our simple gdb_output parser. prev_line = None @@ -74,14 +75,15 @@ if prev_addr and curr_addr: addr_diff = int(curr_addr, 16) - int(prev_addr, 16) - if prev_addr: + if prev_addr and addr_diff > 0: # Feed the examining memory command to gdb. gdb.sendline('x /%db %s' % (addr_diff, prev_addr)) gdb.expect(gdb_prompt) x_output = gdb.before - memory_dump = x_output.split(os.linesep)[-1].split(':')[-1] + memory_dump = x_output.split(os.linesep)[-1].split(':')[-1].strip() #print "\nbytes:", memory_dump - mc_input.write(memory_dump + '\n') + disasm_str = prev_line.split(':')[1] + print >> mc_input, '%s # %s' % (memory_dump, disasm_str) # We're done with the processing. Assign the current line to be prev_line. prev_line = line @@ -91,8 +93,9 @@ gdb.expect(pexpect.EOF) gdb.close() - # Close the mc_input now that we are done writing it. - mc_input.close() + # Write the memory dump into a file. + with open('disasm-input.txt', 'w') as f: + f.write(mc_input.getvalue()) mc_cmd = '%s -disassemble %s disasm-input.txt' % (mc, mc_options) print "\nExecuting command:", mc_cmd From jingham at apple.com Thu Mar 17 15:02:56 2011 From: jingham at apple.com (Jim Ingham) Date: Thu, 17 Mar 2011 20:02:56 -0000 Subject: [Lldb-commits] [lldb] r127825 - in /lldb/trunk: include/lldb/Expression/ClangFunction.h lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme source/Expression/ClangFunction.cpp source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp Message-ID: <20110317200256.EB97C2A6C12C@llvm.org> Author: jingham Date: Thu Mar 17 15:02:56 2011 New Revision: 127825 URL: http://llvm.org/viewvc/llvm-project?rev=127825&view=rev Log: Get ObjC stepping working again when the process is not the default host architecture. Modified: lldb/trunk/include/lldb/Expression/ClangFunction.h lldb/trunk/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme lldb/trunk/source/Expression/ClangFunction.cpp lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp Modified: lldb/trunk/include/lldb/Expression/ClangFunction.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ClangFunction.h?rev=127825&r1=127824&r2=127825&view=diff ============================================================================== --- lldb/trunk/include/lldb/Expression/ClangFunction.h (original) +++ lldb/trunk/include/lldb/Expression/ClangFunction.h Thu Mar 17 15:02:56 2011 @@ -71,8 +71,8 @@ /// Constructor /// /// @param[in] exe_scope - /// An execution context scope that gets us a target and/or - /// process (possibly neither.). + /// An execution context scope that gets us at least a target and + /// process. /// /// @param[in] function_ptr /// The default function to be called. Can be overridden using @@ -85,7 +85,7 @@ /// The default values to use when calling this function. Can /// be overridden using WriteFunctionArguments(). //------------------------------------------------------------------ - ClangFunction (ExecutionContextScope *exe_scope, + ClangFunction (ExecutionContextScope &exe_scope, Function &function_ptr, ClangASTContext *ast_context, const ValueList &arg_value_list); @@ -94,8 +94,8 @@ /// Constructor /// /// @param[in] exe_scope - /// An execution context scope that gets us a target and/or - /// process (possibly neither.). + /// An execution context scope that gets us at least a target and + /// process. /// /// @param[in] ast_context /// The AST context to evaluate argument types in. @@ -111,7 +111,7 @@ /// The default values to use when calling this function. Can /// be overridden using WriteFunctionArguments(). //------------------------------------------------------------------ - ClangFunction (ExecutionContextScope *exe_scope, + ClangFunction (ExecutionContextScope &exe_scope, ClangASTContext *ast_context, void *return_qualtype, const Address& function_address, @@ -614,7 +614,6 @@ Address m_function_addr; ///< If we don't have the FunctionSP, we at least need the address & return type. void *m_function_return_qual_type; ///< The opaque clang qual type for the function return type. ClangASTContext *m_clang_ast_context; ///< This is the clang_ast_context that we're getting types from the and value, and the function return the function pointer is NULL. - ArchSpec m_arch; ///< The target triple to compile the wrapper function for. std::string m_wrapper_function_name; ///< The name of the wrapper function. std::string m_wrapper_function_text; ///< The contents of the wrapper function. Modified: lldb/trunk/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme?rev=127825&r1=127824&r2=127825&view=diff ============================================================================== --- lldb/trunk/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme (original) +++ lldb/trunk/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme Thu Mar 17 15:02:56 2011 @@ -76,7 +76,7 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" displayScaleIsEnabled = "NO" displayScale = "1.00" - launchStyle = "0" + launchStyle = "1" useCustomWorkingDirectory = "NO" buildConfiguration = "Debug"> Modified: lldb/trunk/source/Expression/ClangFunction.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangFunction.cpp?rev=127825&r1=127824&r2=127825&view=diff ============================================================================== --- lldb/trunk/source/Expression/ClangFunction.cpp (original) +++ lldb/trunk/source/Expression/ClangFunction.cpp Thu Mar 17 15:02:56 2011 @@ -50,13 +50,12 @@ //---------------------------------------------------------------------- ClangFunction::ClangFunction ( - ExecutionContextScope *exe_scope, + ExecutionContextScope &exe_scope, ClangASTContext *ast_context, void *return_qualtype, const Address& functionAddress, const ValueList &arg_value_list ) : - m_arch (), m_function_ptr (NULL), m_function_addr (functionAddress), m_function_return_qual_type(return_qualtype), @@ -68,22 +67,20 @@ m_compiled (false), m_JITted (false) { - if (exe_scope) - { - Target *target = exe_scope->CalculateTarget(); - if (target) - m_arch = target->GetArchitecture(); - } + Process *process = exe_scope.CalculateProcess(); + // Can't make a ClangFunction without a process. + assert (process != NULL); + + m_jit_process_sp = process->GetSP(); } ClangFunction::ClangFunction ( - ExecutionContextScope *exe_scope, + ExecutionContextScope &exe_scope, Function &function, ClangASTContext *ast_context, const ValueList &arg_value_list ) : - m_arch (), m_function_ptr (&function), m_function_addr (), m_function_return_qual_type (), @@ -95,12 +92,11 @@ m_compiled (false), m_JITted (false) { - if (exe_scope) - { - Target *target = exe_scope->CalculateTarget(); - if (target) - m_arch = target->GetArchitecture(); - } + Process *process = exe_scope.CalculateProcess(); + // Can't make a ClangFunction without a process. + assert (process != NULL); + + m_jit_process_sp = process->GetSP(); m_function_addr = m_function_ptr->GetAddressRange().GetBaseAddress(); m_function_return_qual_type = m_function_ptr->GetReturnClangType(); @@ -225,8 +221,8 @@ log->Printf ("Expression: \n\n%s\n\n", m_wrapper_function_text.c_str()); // Okay, now compile this expression - - m_parser.reset(new ClangExpressionParser(NULL, *this)); + + m_parser.reset(new ClangExpressionParser(m_jit_process_sp.get(), *this)); num_errors = m_parser->Parse (errors); @@ -245,6 +241,9 @@ if (!process) return false; + + if (process != m_jit_process_sp.get()) + return false; if (!m_compiled) return false; @@ -293,6 +292,9 @@ if (process == NULL) return return_value; + + if (process != m_jit_process_sp.get()) + return false; if (args_addr_ref == LLDB_INVALID_ADDRESS) { @@ -419,6 +421,12 @@ std::vector data_buffer; data_buffer.resize(m_return_size); Process *process = exe_ctx.process; + + if (process == NULL) + return false; + if (process != m_jit_process_sp.get()) + return false; + Error error; size_t bytes_read = process->ReadMemory(args_addr + m_return_offset, &data_buffer.front(), m_return_size, error); Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp?rev=127825&r1=127824&r2=127825&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp Thu Mar 17 15:02:56 2011 @@ -111,7 +111,7 @@ ret.SetContext(Value::eContextTypeClangType, return_qualtype); // Now we're ready to call the function: - ClangFunction func (exe_ctx.GetBestExecutionContextScope(), + ClangFunction func (*exe_ctx.GetBestExecutionContextScope(), ast_context, return_qualtype, *function_address, Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp?rev=127825&r1=127824&r2=127825&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp Thu Mar 17 15:02:56 2011 @@ -819,7 +819,7 @@ // Next make the runner function for our implementation utility function. if (!m_impl_function.get()) { - m_impl_function.reset(new ClangFunction (&thread, + m_impl_function.reset(new ClangFunction (thread, clang_ast_context, clang_void_ptr_type, impl_code_address, From jingham at apple.com Thu Mar 17 16:04:33 2011 From: jingham at apple.com (Jim Ingham) Date: Thu, 17 Mar 2011 21:04:33 -0000 Subject: [Lldb-commits] [lldb] r127830 - /lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp Message-ID: <20110317210433.C7EC92A6C12C@llvm.org> Author: jingham Date: Thu Mar 17 16:04:33 2011 New Revision: 127830 URL: http://llvm.org/viewvc/llvm-project?rev=127830&view=rev Log: Fix a problem where we were looking up the class pointer in the {class/sel -> implementation} cache for a objc_msgSendSuper call - where we should have looked up the class's super-class. Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp?rev=127830&r1=127829&r2=127830&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp Thu Mar 17 16:04:33 2011 @@ -664,35 +664,127 @@ if (!success) return ret_plan_sp; - // Pull the class out of the Object and see if we've already cached this method call, - // If so we can push a run-to-address plan directly. Otherwise we have to figure out where - // the implementation lives. - - Value isa_value(*(argument_values.GetValueAtIndex(obj_index))); - - // This is a little cheesy, but since object->isa is the first field, - // making the object value a load address value and resolving it will get - // the pointer sized data pointed to by that value... ExecutionContext exe_ctx; thread.CalculateExecutionContext (exe_ctx); - isa_value.SetValueType(Value::eValueTypeLoadAddress); - isa_value.ResolveValue(&exe_ctx, clang_ast_context->getASTContext()); - lldb::addr_t isa_addr = isa_value.GetScalar().ULongLong(); + // isa_addr will store the class pointer that the method is being dispatched to - so either the class + // directly or the super class if this is one of the objc_msgSendSuper flavors. That's mostly used to + // look up the class/selector pair in our cache. + + lldb::addr_t isa_addr = LLDB_INVALID_ADDRESS; lldb::addr_t sel_addr = argument_values.GetValueAtIndex(sel_index)->GetScalar().ULongLong(); + + // Figure out the class this is being dispatched to and see if we've already cached this method call, + // If so we can push a run-to-address plan directly. Otherwise we have to figure out where + // the implementation lives. - if (log) + if (this_dispatch.is_super) { - log->Printf("Resolving method call for class - 0x%llx and selector - 0x%llx", - isa_addr, sel_addr); + if (this_dispatch.is_super2) + { + // In the objc_msgSendSuper2 case, we don't get the object directly, we get a structure containing + // the object and the class to which the super message is being sent. So we need to dig the super + // out of the class and use that. + + Value super_value(*(argument_values.GetValueAtIndex(obj_index))); + super_value.GetScalar() += process->GetAddressByteSize(); + super_value.ResolveValue (&exe_ctx, clang_ast_context->getASTContext()); + + if (super_value.GetScalar().IsValid()) + { + + // isa_value now holds the class pointer. The second word of the class pointer is the super-class pointer: + super_value.GetScalar() += process->GetAddressByteSize(); + super_value.ResolveValue (&exe_ctx, clang_ast_context->getASTContext()); + if (super_value.GetScalar().IsValid()) + isa_addr = super_value.GetScalar().ULongLong(); + else + { + if (log) + log->Printf("Failed to extract the super class value from the class in objc_super."); + } + } + else + { + if (log) + log->Printf("Failed to extract the class value from objc_super."); + } + } + else + { + // In the objc_msgSendSuper case, we don't get the object directly, we get a two element structure containing + // the object and the super class to which the super message is being sent. So the class we want is + // the second element of this structure. + + Value super_value(*(argument_values.GetValueAtIndex(obj_index))); + super_value.GetScalar() += process->GetAddressByteSize(); + super_value.ResolveValue (&exe_ctx, clang_ast_context->getASTContext()); + + if (super_value.GetScalar().IsValid()) + { + isa_addr = super_value.GetScalar().ULongLong(); + } + else + { + if (log) + log->Printf("Failed to extract the class value from objc_super."); + } + } } - ObjCLanguageRuntime *objc_runtime = m_process_sp->GetObjCLanguageRuntime (); - assert(objc_runtime != NULL); + else + { + // In the direct dispatch case, the object->isa is the class pointer we want. + + // This is a little cheesy, but since object->isa is the first field, + // making the object value a load address value and resolving it will get + // the pointer sized data pointed to by that value... + + // Note, it isn't a fatal error not to be able to get the address from the object, since this might + // be a "tagged pointer" which isn't a real object, but rather some word length encoded dingus. + + Value isa_value(*(argument_values.GetValueAtIndex(obj_index))); + + isa_value.SetValueType(Value::eValueTypeLoadAddress); + isa_value.ResolveValue(&exe_ctx, clang_ast_context->getASTContext()); + if (isa_value.GetScalar().IsValid()) + { + isa_addr = isa_value.GetScalar().ULongLong(); + } + else + { + if (log) + log->Printf("Failed to extract the isa value from object."); + } + + } + + // Okay, we've got the address of the class for which we're resolving this, let's see if it's in our cache: + lldb::addr_t impl_addr = LLDB_INVALID_ADDRESS; - lldb::addr_t impl_addr = objc_runtime->LookupInMethodCache (isa_addr, sel_addr); - - if (impl_addr == LLDB_INVALID_ADDRESS) - { + if (isa_addr != LLDB_INVALID_ADDRESS) + { + if (log) + { + log->Printf("Resolving call for class - 0x%llx and selector - 0x%llx", + isa_addr, sel_addr); + } + ObjCLanguageRuntime *objc_runtime = m_process_sp->GetObjCLanguageRuntime (); + assert(objc_runtime != NULL); + + impl_addr = objc_runtime->LookupInMethodCache (isa_addr, sel_addr); + } + + if (impl_addr != LLDB_INVALID_ADDRESS) + { + // Yup, it was in the cache, so we can run to that address directly. + + if (log) + log->Printf ("Found implementation address in cache: 0x%llx", impl_addr); + + ret_plan_sp.reset (new ThreadPlanRunToAddress (thread, impl_addr, stop_others)); + } + else + { // We haven't seen this class/selector pair yet. Look it up. StreamString errors; Address impl_code_address; @@ -866,13 +958,6 @@ log->Printf("Using ObjC step plan: %s.\n", s.GetData()); } } - else - { - if (log) - log->Printf ("Found implementation address in cache: 0x%llx", impl_addr); - - ret_plan_sp.reset (new ThreadPlanRunToAddress (thread, impl_addr, stop_others)); - } } return ret_plan_sp; From ctice at apple.com Thu Mar 17 18:50:16 2011 From: ctice at apple.com (Caroline Tice) Date: Thu, 17 Mar 2011 23:50:16 -0000 Subject: [Lldb-commits] [lldb] r127838 - /lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Message-ID: <20110317235017.1BFD82A6C12C@llvm.org> Author: ctice Date: Thu Mar 17 18:50:16 2011 New Revision: 127838 URL: http://llvm.org/viewvc/llvm-project?rev=127838&view=rev Log: Make all the codee that attempts to read the PC consistently use ReadCoreReg (which 'does the right thing', adding to pc when needed); fixed places in code where extra addition was being passed along. Fix bug in insn tables. Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp?rev=127838&r1=127837&r2=127838&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp (original) +++ lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Thu Mar 17 18:50:16 2011 @@ -1773,7 +1773,7 @@ const uint32_t pc = ReadCoreReg(PC_REG, &success); if (!success) return false; - if (!MemUWrite (context, addr, pc + 8, addr_byte_size)) + if (!MemUWrite (context, addr, pc, addr_byte_size)) return false; } @@ -3914,11 +3914,11 @@ Register pc_reg; pc_reg.SetRegister (eRegisterKindDWARF, dwarf_pc); context.SetRegisterPlusOffset (pc_reg, 8); - const uint32_t pc = ReadRegisterUnsigned(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, 0, &success); + const uint32_t pc = ReadCoreReg (PC_REG, &success); if (!success) return false; - if (!MemAWrite (context, address + offset, pc + 8, addr_byte_size)) + if (!MemAWrite (context, address + offset, pc, addr_byte_size)) return false; } @@ -4042,11 +4042,11 @@ Register pc_reg; pc_reg.SetRegister (eRegisterKindDWARF, dwarf_pc); context.SetRegisterPlusOffset (pc_reg, 8); - const uint32_t pc = ReadRegisterUnsigned(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, 0, &success); + const uint32_t pc = ReadCoreReg (PC_REG, &success); if (!success) return false; - if (!MemAWrite (context, address + offset, pc + 8, addr_byte_size)) + if (!MemAWrite (context, address + offset, pc, addr_byte_size)) return false; } @@ -4196,11 +4196,11 @@ Register pc_reg; pc_reg.SetRegister (eRegisterKindDWARF, dwarf_pc); context.SetRegisterPlusOffset (pc_reg, 8); - const uint32_t pc = ReadRegisterUnsigned(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, 0, &success); + const uint32_t pc = ReadCoreReg (PC_REG, &success); if (!success) return false; - if (!MemAWrite (context, address + offset, pc + 8, addr_byte_size)) + if (!MemAWrite (context, address + offset, pc, addr_byte_size)) return false; } @@ -4325,11 +4325,11 @@ Register pc_reg; pc_reg.SetRegister (eRegisterKindDWARF, dwarf_pc); context.SetRegisterPlusOffset (pc_reg, 8); - const uint32_t pc = ReadRegisterUnsigned(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, 0, &success); + const uint32_t pc = ReadCoreReg (PC_REG, &success); if (!success) return false; - if (!MemAWrite (context, address + offset, pc + 8, addr_byte_size)) + if (!MemAWrite (context, address + offset, pc, addr_byte_size)) return false; } @@ -4657,7 +4657,7 @@ // if t == 15 then // Only possible for encoding A1 if (t == 15) // data = PCStoreValue(); - data = ReadRegisterUnsigned(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, 0, &success); + data = ReadCoreReg (PC_REG, &success); else // data = R[t]; data = ReadRegisterUnsigned (eRegisterKindDWARF, dwarf_r0 + t, 0, &success); @@ -5646,13 +5646,13 @@ addr_t address; addr_t offset_addr; - addr_t base_address = ReadRegisterUnsigned (eRegisterKindDWARF, dwarf_r0 + n, 0, &success); + addr_t base_address = ReadCoreReg (n, &success); if (!success) return false; // offset_addr = if add then (R[n] + imm32) else (R[n] - imm32); if (add) - offset_addr = base_address + imm32; + offset_addr = base_address + imm32; else offset_addr = base_address - imm32; @@ -6126,7 +6126,7 @@ } // base = Align(PC,4); - uint32_t pc_val = ReadRegisterUnsigned (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, 0, &success); + uint32_t pc_val = ReadCoreReg (PC_REG, &success); if (!success) return false; @@ -6530,7 +6530,7 @@ } // base = Align(PC,4); - uint64_t pc_value = ReadRegisterUnsigned (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, 0, &success); + uint64_t pc_value = ReadCoreReg (PC_REG, &success); if (!success) return false; @@ -6963,8 +6963,7 @@ } // base = Align(PC,4); - uint64_t pc_value = ReadRegisterUnsigned (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, LLDB_INVALID_ADDRESS, - &success); + uint64_t pc_value = ReadCoreReg (PC_REG, &success); if (!success) return false; uint64_t base = AlignPC (pc_value); @@ -7382,7 +7381,7 @@ } // base = Align(PC,4); - uint64_t pc_value = ReadRegisterUnsigned (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, 0, &success); + uint64_t pc_value = ReadCoreReg (PC_REG, &success); if (!success) return false; @@ -9328,7 +9327,7 @@ // push one register // if Rn == '1101' && imm12 == '000000000100' then SEE PUSH; - { 0x0fff0000, 0x052d0000, ARMvAll, eEncodingA1, eSize32, &EmulateInstructionARM::EmulateSTRRtSP, "str Rt, [sp, #-imm12]!" }, + { 0x0e500000, 0x04000000, ARMvAll, eEncodingA1, eSize32, &EmulateInstructionARM::EmulateSTRRtSP, "str Rt, [sp, #-imm12]!" }, // vector push consecutive extension register(s) { 0x0fbf0f00, 0x0d2d0b00, ARMV6T2_ABOVE, eEncodingA1, eSize32, &EmulateInstructionARM::EmulateVPUSH, "vpush.64 "}, From jingham at apple.com Thu Mar 17 19:05:19 2011 From: jingham at apple.com (Jim Ingham) Date: Fri, 18 Mar 2011 00:05:19 -0000 Subject: [Lldb-commits] [lldb] r127841 - in /lldb/trunk: include/lldb/Core/ValueObject.h source/Core/ValueObject.cpp source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp Message-ID: <20110318000519.1C40A2A6C12C@llvm.org> Author: jingham Date: Thu Mar 17 19:05:18 2011 New Revision: 127841 URL: http://llvm.org/viewvc/llvm-project?rev=127841&view=rev Log: Relax the constraint on the types of ValueObjects that we'll by default try the ObjC runtime for print object to Pointer AND Integer (from just pointer.) Modified: lldb/trunk/include/lldb/Core/ValueObject.h lldb/trunk/source/Core/ValueObject.cpp lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp Modified: lldb/trunk/include/lldb/Core/ValueObject.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObject.h?rev=127841&r1=127840&r2=127841&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/ValueObject.h (original) +++ lldb/trunk/include/lldb/Core/ValueObject.h Thu Mar 17 19:05:18 2011 @@ -93,6 +93,9 @@ return false; } + bool + IsIntegerType (bool &is_signed); + virtual bool GetBaseClassPath (Stream &s); Modified: lldb/trunk/source/Core/ValueObject.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObject.cpp?rev=127841&r1=127840&r2=127841&view=diff ============================================================================== --- lldb/trunk/source/Core/ValueObject.cpp (original) +++ lldb/trunk/source/Core/ValueObject.cpp Thu Mar 17 19:05:18 2011 @@ -588,13 +588,16 @@ if (runtime == NULL) { - // Aw, hell, if the things a pointer, let's try ObjC anyway... + // Aw, hell, if the things a pointer, or even just an integer, let's try ObjC anyway... clang_type_t opaque_qual_type = GetClangType(); if (opaque_qual_type != NULL) { - clang::QualType qual_type (clang::QualType::getFromOpaquePtr(opaque_qual_type).getNonReferenceType()); - if (qual_type->isAnyPointerType()) + bool is_signed; + if (ClangASTContext::IsIntegerType (opaque_qual_type, is_signed) + || ClangASTContext::IsPointerType (opaque_qual_type)) + { runtime = process->GetLanguageRuntime(lldb::eLanguageTypeObjC); + } } } @@ -892,7 +895,11 @@ return ClangASTContext::IsPointerType (GetClangType()); } - +bool +ValueObject::IsIntegerType (bool &is_signed) +{ + return ClangASTContext::IsIntegerType (GetClangType(), is_signed); +} bool ValueObject::IsPointerOrReferenceType () Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp?rev=127841&r1=127840&r2=127841&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp Thu Mar 17 19:05:18 2011 @@ -41,9 +41,11 @@ bool AppleObjCRuntime::GetObjectDescription (Stream &str, ValueObject &object, ExecutionContextScope *exe_scope) { - - // ObjC objects can only be pointers: - if (!object.IsPointerType()) + bool is_signed; + // ObjC objects can only be pointers, but we extend this to integer types because an expression might just + // result in an address, and we should try that to see if the address is an ObjC object. + + if (!(object.IsPointerType() || object.IsIntegerType(is_signed))) return NULL; // Make the argument list: we pass one arg, the address of our pointer, to the print function. From ctice at apple.com Fri Mar 18 14:41:00 2011 From: ctice at apple.com (Caroline Tice) Date: Fri, 18 Mar 2011 19:41:00 -0000 Subject: [Lldb-commits] [lldb] r127898 - /lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Message-ID: <20110318194101.14D262A6C12C@llvm.org> Author: ctice Date: Fri Mar 18 14:41:00 2011 New Revision: 127898 URL: http://llvm.org/viewvc/llvm-project?rev=127898&view=rev Log: Fix various small problems with EmulateInstructionARM::EmulateSTRRtSP. Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp?rev=127898&r1=127897&r2=127898&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp (original) +++ lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Fri Mar 18 14:41:00 2011 @@ -1741,25 +1741,49 @@ return false; uint32_t Rt; // the source register uint32_t imm12; + uint32_t Rn; // This function assumes Rn is the SP, but we should verify that. + + bool index; + bool add; + bool wback; switch (encoding) { case eEncodingA1: Rt = Bits32(opcode, 15, 12); imm12 = Bits32(opcode, 11, 0); + Rn = Bits32 (opcode, 19, 16); + + if (Rn != 13) // 13 is the SP reg on ARM. Verify that Rn == SP. + return false; + + index = BitIsSet (opcode, 24); + add = BitIsSet (opcode, 23); + wback = (BitIsClear (opcode, 24) || BitIsSet (opcode, 21)); + + if (wback && ((Rn == 15) || (Rn == Rt))) + return false; break; default: return false; } - addr_t sp_offset = imm12; - addr_t addr = sp - sp_offset; + addr_t offset_addr; + if (add) + offset_addr = sp + imm12; + else + offset_addr = sp - imm12; + + addr_t addr; + if (index) + addr = offset_addr; + else + addr = sp; EmulateInstruction::Context context; context.type = EmulateInstruction::eContextPushRegisterOnStack; - Register dwarf_reg; - dwarf_reg.SetRegister (eRegisterKindDWARF, 0); + Register sp_reg; + sp_reg.SetRegister (eRegisterKindDWARF, dwarf_sp); + context.SetRegisterPlusOffset (sp_reg, addr - sp); if (Rt != 15) { - dwarf_reg.num = dwarf_r0 + Rt; - context.SetRegisterPlusOffset (dwarf_reg, addr - sp); uint32_t reg_value = ReadCoreReg(Rt, &success); if (!success) return false; @@ -1768,8 +1792,6 @@ } else { - dwarf_reg.num = dwarf_pc; - context.SetRegisterPlusOffset (dwarf_reg, addr - sp); const uint32_t pc = ReadCoreReg(PC_REG, &success); if (!success) return false; @@ -1777,11 +1799,14 @@ return false; } - context.type = EmulateInstruction::eContextAdjustStackPointer; - context.SetImmediateSigned (-sp_offset); - - if (!WriteRegisterUnsigned (context, eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP, sp - sp_offset)) - return false; + + if (wback) + { + context.type = EmulateInstruction::eContextAdjustStackPointer; + context.SetImmediateSigned (addr - sp); + if (!WriteRegisterUnsigned (context, eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP, offset_addr)) + return false; + } } return true; } @@ -9327,7 +9352,7 @@ // push one register // if Rn == '1101' && imm12 == '000000000100' then SEE PUSH; - { 0x0e500000, 0x04000000, ARMvAll, eEncodingA1, eSize32, &EmulateInstructionARM::EmulateSTRRtSP, "str Rt, [sp, #-imm12]!" }, + { 0x0e5f0000, 0x040d0000, ARMvAll, eEncodingA1, eSize32, &EmulateInstructionARM::EmulateSTRRtSP, "str Rt, [sp, #-imm12]!" }, // vector push consecutive extension register(s) { 0x0fbf0f00, 0x0d2d0b00, ARMV6T2_ABOVE, eEncodingA1, eSize32, &EmulateInstructionARM::EmulateVPUSH, "vpush.64 "}, From johnny.chen at apple.com Fri Mar 18 15:51:13 2011 From: johnny.chen at apple.com (Johnny Chen) Date: Fri, 18 Mar 2011 20:51:13 -0000 Subject: [Lldb-commits] [lldb] r127904 - in /lldb/trunk/test/unique-types: TestUniqueTypes.py main.cpp Message-ID: <20110318205113.EE7B32A6C12C@llvm.org> Author: johnny Date: Fri Mar 18 15:51:13 2011 New Revision: 127904 URL: http://llvm.org/viewvc/llvm-project?rev=127904&view=rev Log: Add cases to test that two template instantiations of std::vector and std::vector in the same compilation module show up as different types for lldb debugger. Added: lldb/trunk/test/unique-types/TestUniqueTypes.py Modified: lldb/trunk/test/unique-types/main.cpp Added: lldb/trunk/test/unique-types/TestUniqueTypes.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/unique-types/TestUniqueTypes.py?rev=127904&view=auto ============================================================================== --- lldb/trunk/test/unique-types/TestUniqueTypes.py (added) +++ lldb/trunk/test/unique-types/TestUniqueTypes.py Fri Mar 18 15:51:13 2011 @@ -0,0 +1,73 @@ +""" +Test that template instaniations of std::vector and in the same module have the correct types. +""" + +import unittest2 +import lldb +from lldbtest import * + +class UniqueTypesTestCase(TestBase): + + mydir = "unique-types" + + @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") + def test_with_dsym(self): + """Test for unique types of std::vector and std::vector.""" + self.buildDsym() + self.unique_types() + + def test_with_dwarf(self): + """Test for unique types of std::vector and std::vector.""" + self.buildDwarf() + self.unique_types() + + def setUp(self): + # Call super's setUp(). + TestBase.setUp(self) + # Find the line number inside main.cpp. + self.line = line_number("main.cpp", + "// Set breakpoint here to verify that std::vector 'longs' and 'shorts' have unique types.") + + def unique_types(self): + """Test for unique types of std::vector and std::vector.""" + exe = os.path.join(os.getcwd(), "a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + self.expect("breakpoint set -f main.cpp -l %d" % self.line, + BREAKPOINT_CREATED, + startstr = "Breakpoint created: 1: file ='main.cpp', line = %d, locations = 1" % + self.line) + + self.runCmd("run", RUN_SUCCEEDED) + + # The stop reason of the thread should be breakpoint. + self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, + substrs = ['state is stopped', + 'stop reason = breakpoint']) + + # Do a "frame variable -t longs" and verify "long" is in each line of output. + self.runCmd("frame variable -t longs") + output = self.res.GetOutput() + for x in [line.strip() for line in output.split(os.linesep)]: + # Skip empty line or closing brace. + if not x or x == '}': + continue + self.expect(x, "Expect type 'long'", exe=False, + substrs = ['long']) + + # Do a "frame variable -t shorts" and verify "short" is in each line of output. + self.runCmd("frame variable -t shorts") + output = self.res.GetOutput() + for x in [line.strip() for line in output.split(os.linesep)]: + # Skip empty line or closing brace. + if not x or x == '}': + continue + self.expect(x, "Expect type 'short'", exe=False, + substrs = ['short']) + + +if __name__ == '__main__': + import atexit + lldb.SBDebugger.Initialize() + atexit.register(lambda: lldb.SBDebugger.Terminate()) + unittest2.main() Modified: lldb/trunk/test/unique-types/main.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/unique-types/main.cpp?rev=127904&r1=127903&r2=127904&view=diff ============================================================================== --- lldb/trunk/test/unique-types/main.cpp (original) +++ lldb/trunk/test/unique-types/main.cpp Fri Mar 18 15:51:13 2011 @@ -1,3 +1,11 @@ +//===-- main.c --------------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// #include #include @@ -12,5 +20,5 @@ longs.push_back(i); shorts.push_back(i); } - return 0; + return 0; // Set breakpoint here to verify that std::vector 'longs' and 'shorts' have unique types. } From gclayton at apple.com Fri Mar 18 20:12:22 2011 From: gclayton at apple.com (Greg Clayton) Date: Sat, 19 Mar 2011 01:12:22 -0000 Subject: [Lldb-commits] [lldb] r127934 - in /lldb/trunk: include/lldb/ include/lldb/Core/ include/lldb/Host/ include/lldb/Interpreter/ include/lldb/Symbol/ include/lldb/Target/ lldb.xcodeproj/ source/ source/Breakpoint/ source/Commands/ source/Core/ source/Host/macosx/ source/Interpreter/ source/Plugins/Disassembler/llvm/ source/Plugins/ObjectFile/Mach-O/ source/Plugins/Platform/MacOSX/ source/Plugins/Process/MacOSX-User/source/ source/Plugins/Process/gdb-remote/ source/Symbol/ source/Target/ Message-ID: <20110319011222.AC5EC2A6C130@llvm.org> Author: gclayton Date: Fri Mar 18 20:12:21 2011 New Revision: 127934 URL: http://llvm.org/viewvc/llvm-project?rev=127934&view=rev Log: Added more platform support. There are now some new commands: platform status -- gets status information for the selected platform platform create -- creates a new instance of a remote platform platform list -- list all available platforms platform select -- select a platform instance as the current platform (not working yet) When using "platform create" it will create a remote platform and make it the selected platform. For instances for iPhone OS debugging on Mac OS X one can do: (lldb) platform create remote-ios --sdk-version=4.0 Remote platform: iOS platform SDK version: 4.0 SDK path: "/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.0" Not connected to a remote device. (lldb) file ~/Documents/a.out Current executable set to '~/Documents/a.out' (armv6). (lldb) image list [ 0] /Volumes/work/gclayton/Documents/devb/attach/a.out [ 1] /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.0/Symbols/usr/lib/dyld [ 2] /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.0/Symbols/usr/lib/libSystem.B.dylib Note that this is all happening prior to running _or_ connecting to a remote platform. Once connected to a remote platform the OS version might change which means we will need to update our dependecies. Also once we run, we will need to match up the actualy binaries with the actualy UUID's to files in the SDK, or download and cache them locally. This is just the start of the remote platforms, but this modification is the first iteration in getting the platforms really doing something. Added: lldb/trunk/source/Commands/CommandObjectPlatform.cpp lldb/trunk/source/Commands/CommandObjectPlatform.h lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h Modified: lldb/trunk/include/lldb/Core/Address.h lldb/trunk/include/lldb/Core/ArchSpec.h lldb/trunk/include/lldb/Core/Debugger.h lldb/trunk/include/lldb/Host/Host.h lldb/trunk/include/lldb/Interpreter/Args.h lldb/trunk/include/lldb/Symbol/ObjectFile.h lldb/trunk/include/lldb/Target/Platform.h lldb/trunk/include/lldb/Target/Process.h lldb/trunk/include/lldb/Target/Target.h lldb/trunk/include/lldb/lldb-enumerations.h lldb/trunk/include/lldb/lldb-forward.h lldb/trunk/lldb.xcodeproj/project.pbxproj lldb/trunk/source/Breakpoint/Breakpoint.cpp lldb/trunk/source/Breakpoint/BreakpointLocationList.cpp lldb/trunk/source/Breakpoint/BreakpointSiteList.cpp lldb/trunk/source/Commands/CommandObjectFrame.cpp lldb/trunk/source/Commands/CommandObjectProcess.cpp lldb/trunk/source/Core/Address.cpp lldb/trunk/source/Core/ArchSpec.cpp lldb/trunk/source/Core/Debugger.cpp lldb/trunk/source/Core/PluginManager.cpp lldb/trunk/source/Host/macosx/Host.mm lldb/trunk/source/Interpreter/Args.cpp lldb/trunk/source/Interpreter/CommandInterpreter.cpp lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h lldb/trunk/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp lldb/trunk/source/Plugins/Platform/MacOSX/PlatformMacOSX.h lldb/trunk/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.cpp lldb/trunk/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.h lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h lldb/trunk/source/Symbol/ObjectFile.cpp lldb/trunk/source/Target/Platform.cpp lldb/trunk/source/Target/Process.cpp lldb/trunk/source/Target/Target.cpp lldb/trunk/source/Target/TargetList.cpp lldb/trunk/source/lldb.cpp Modified: lldb/trunk/include/lldb/Core/Address.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Address.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/Address.h (original) +++ lldb/trunk/include/lldb/Core/Address.h Fri Mar 18 20:12:21 2011 @@ -246,6 +246,9 @@ DumpStyle fallback_style = DumpStyleInvalid, uint32_t addr_byte_size = UINT32_MAX) const; + lldb::AddressClass + GetAddressClass () const; + //------------------------------------------------------------------ /// Get the file address. /// Modified: lldb/trunk/include/lldb/Core/ArchSpec.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ArchSpec.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/ArchSpec.h (original) +++ lldb/trunk/include/lldb/Core/ArchSpec.h Fri Mar 18 20:12:21 2011 @@ -43,6 +43,9 @@ eCore_arm_armv5t, eCore_arm_armv6, eCore_arm_armv7, + eCore_arm_armv7f, + eCore_arm_armv7k, + eCore_arm_armv7s, eCore_arm_xscale, eCore_ppc_generic, Modified: lldb/trunk/include/lldb/Core/Debugger.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Debugger.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/Debugger.h (original) +++ lldb/trunk/include/lldb/Core/Debugger.h Fri Mar 18 20:12:21 2011 @@ -24,6 +24,7 @@ #include "lldb/Core/UserID.h" #include "lldb/Core/UserSettingsController.h" #include "lldb/Target/ExecutionContext.h" +#include "lldb/Target/Platform.h" #include "lldb/Target/TargetList.h" namespace lldb_private { @@ -320,16 +321,29 @@ } CommandInterpreter & - GetCommandInterpreter (); + GetCommandInterpreter () + { + assert (m_command_interpreter_ap.get()); + return *m_command_interpreter_ap; + } Listener & - GetListener (); + GetListener () + { + return m_listener; + } SourceManager & - GetSourceManager (); + GetSourceManager () + { + return m_source_manager; + } lldb::TargetSP - GetSelectedTarget (); + GetSelectedTarget () + { + return m_target_list.GetSelectedTarget (); + } ExecutionContext GetSelectedExecutionContext(); @@ -344,8 +358,17 @@ /// @return /// A global shared target list. //------------------------------------------------------------------ - TargetList& - GetTargetList (); + TargetList & + GetTargetList () + { + return m_target_list; + } + + PlatformList & + GetPlatformList () + { + return m_platform_list; + } void DispatchInputInterrupt (); @@ -410,13 +433,17 @@ CheckIfTopInputReaderIsDone (); void - DisconnectInput(); + DisconnectInput() + { + m_input_comm.Clear (); + } Communication m_input_comm; StreamFile m_input_file; StreamFile m_output_file; StreamFile m_error_file; TargetList m_target_list; + PlatformList m_platform_list; Listener m_listener; SourceManager m_source_manager; std::auto_ptr m_command_interpreter_ap; Modified: lldb/trunk/include/lldb/Host/Host.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/Host.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/include/lldb/Host/Host.h (original) +++ lldb/trunk/include/lldb/Host/Host.h Fri Mar 18 20:12:21 2011 @@ -96,6 +96,11 @@ static lldb::ByteOrder GetByteOrder (); + static bool + GetOSVersion (uint32_t &major, + uint32_t &minor, + uint32_t &update); + //------------------------------------------------------------------ /// Gets the host architecture. /// Modified: lldb/trunk/include/lldb/Interpreter/Args.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Interpreter/Args.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/include/lldb/Interpreter/Args.h (original) +++ lldb/trunk/include/lldb/Interpreter/Args.h Fri Mar 18 20:12:21 2011 @@ -357,6 +357,9 @@ static Error StringToFormat (const char *s, lldb::Format &format); + static const char * + StringToVersion (const char *s, uint32_t &major, uint32_t &minor, uint32_t &update); + // This one isn't really relevant to Arguments per se, but we're using the Args as a // general strings container, so... void Modified: lldb/trunk/include/lldb/Symbol/ObjectFile.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/ObjectFile.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/include/lldb/Symbol/ObjectFile.h (original) +++ lldb/trunk/include/lldb/Symbol/ObjectFile.h Fri Mar 18 20:12:21 2011 @@ -143,6 +143,23 @@ GetAddressByteSize () const = 0; //------------------------------------------------------------------ + /// Get the address type given a file address in an object file. + /// + /// Many binary file formats know what kinds + /// This is primarily for ARM binaries, though it can be applied to + /// any executable file format that supports different opcode types + /// within the same binary. ARM binaries support having both ARM and + /// Thumb within the same executable container. We need to be able + /// to get + /// @return + /// The size of an address in bytes for the currently selected + /// architecture (and object for archives). Returns zero if no + /// architecture or object has been selected. + //------------------------------------------------------------------ + virtual lldb::AddressClass + GetAddressClass (lldb::addr_t file_addr); + + //------------------------------------------------------------------ /// Extract the dependent modules from an object file. /// /// If an object file has information about which other images it Modified: lldb/trunk/include/lldb/Target/Platform.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Platform.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/include/lldb/Target/Platform.h (original) +++ lldb/trunk/include/lldb/Target/Platform.h Fri Mar 18 20:12:21 2011 @@ -58,44 +58,19 @@ static void SetDefaultPlatform (const lldb::PlatformSP &platform_sp); - //------------------------------------------------------------------ - /// Select the active platform. - /// - /// In order to debug remotely, other platform's can be remotely - /// connected to and set as the selected platform for any subsequent - /// debugging. This allows connection to remote targets and allows - /// the ability to discover process info, launch and attach to remote - /// processes. - //------------------------------------------------------------------ - static lldb::PlatformSP - GetSelectedPlatform (); - - static void - SetSelectedPlatform (const lldb::PlatformSP &platform_sp); - - //------------------------------------------------------------------ - /// Connect to a remote platform - /// - /// When connecting to a remote platform, the name of that platform - /// (the short plug-in name) is required, along with a URL that the - /// platform plug-in can use to remotely attach. - //------------------------------------------------------------------ static lldb::PlatformSP - ConnectRemote (const char *platform_name, - const char *remote_connect_url, - Error &error); + Create (const char *platform_name, Error &error); static uint32_t GetNumConnectedRemotePlatforms (); static lldb::PlatformSP GetConnectedRemotePlatformAtIndex (uint32_t idx); - //------------------------------------------------------------------ /// Default Constructor //------------------------------------------------------------------ - Platform (); + Platform (bool is_host_platform); //------------------------------------------------------------------ /// Destructor. @@ -130,6 +105,44 @@ const ArchSpec &arch, lldb::ModuleSP &module_sp); + bool + GetOSVersion (uint32_t &major, + uint32_t &minor, + uint32_t &update); + + bool + SetOSVersion (uint32_t major, + uint32_t minor, + uint32_t update); + + virtual const char * + GetDescription () = 0; + + //------------------------------------------------------------------ + /// Report the current status for this platform. + /// + /// The returned string usually involves returning the OS version + /// (if available), and any SDK directory that might be being used + /// for local file caching, and if connected a quick blurb about + /// what this platform is connected to. + //------------------------------------------------------------------ + virtual void + GetStatus (Stream &strm) = 0; + + //------------------------------------------------------------------ + // Subclasses must be able to fetch the current OS version + // + // Remote classes must be connected for this to succeed. Local + // subclasses don't need to override this function as it will just + // call the Host::GetOSVersion(). + //------------------------------------------------------------------ +protected: + virtual bool + FetchRemoteOSVersion () + { + return false; + } + //------------------------------------------------------------------ /// Locate a file for a platform. /// @@ -149,6 +162,7 @@ /// @return /// An error object. //------------------------------------------------------------------ +public: virtual Error GetFile (const FileSpec &platform_file, FileSpec &local_file); @@ -176,6 +190,10 @@ virtual bool GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch) = 0; + virtual size_t + GetSoftwareBreakpointTrapOpcode (Target &target, + BreakpointSite *bp_site) = 0; + //------------------------------------------------------------------ /// Launch a new process. /// @@ -291,10 +309,57 @@ return m_remote_url; } - protected: + bool + IsHost () const + { + return m_is_host; // Is this the default host platform? + } + + bool + IsRemote () const + { + return !m_is_host; + } - std::string m_remote_url; + bool + IsConnected () const + { + return m_is_connected; + } + const ArchSpec & + GetSystemArchitecture(); + + void + SetSystemArchitecture (const ArchSpec &arch) + { + m_system_arch = arch; + if (IsHost()) + m_os_version_set_while_connected = m_system_arch.IsValid(); + } + + // Remote Platform subclasses need to override this function + virtual ArchSpec + FetchRemoteSystemArchitecture () + { + return ArchSpec(); // Return an invalid architecture + } + + protected: + bool m_is_host; + bool m_is_connected; + // Set to true when we are able to actually set the OS version while + // being connected. For remote platforms, we might set the version ahead + // of time before we actually connect and this version might change when + // we actually connect to a remote platform. For the host platform this + // will be set to the once we call Host::GetOSVersion(). + bool m_os_version_set_while_connected; + bool m_system_arch_set_while_connected; + std::string m_remote_url; + uint32_t m_major_os_version; + uint32_t m_minor_os_version; + uint32_t m_update_os_version; + ArchSpec m_system_arch; // The architecture of the kernel or the remote platform private: DISALLOW_COPY_AND_ASSIGN (Platform); }; @@ -314,10 +379,12 @@ } void - Append (const lldb::PlatformSP &platform_sp) + Append (const lldb::PlatformSP &platform_sp, bool set_selected) { Mutex::Locker locker (m_mutex); m_platforms.push_back (platform_sp); + if (set_selected) + m_selected_platform_sp = m_platforms.back(); } size_t @@ -339,10 +406,50 @@ return platform_sp; } + //------------------------------------------------------------------ + /// Select the active platform. + /// + /// In order to debug remotely, other platform's can be remotely + /// connected to and set as the selected platform for any subsequent + /// debugging. This allows connection to remote targets and allows + /// the ability to discover process info, launch and attach to remote + /// processes. + //------------------------------------------------------------------ + lldb::PlatformSP + GetSelectedPlatform () + { + Mutex::Locker locker (m_mutex); + if (!m_selected_platform_sp && !m_platforms.empty()) + m_selected_platform_sp = m_platforms.front(); + + return m_selected_platform_sp; + } + + void + SetSelectedPlatform (const lldb::PlatformSP &platform_sp) + { + if (platform_sp) + { + Mutex::Locker locker (m_mutex); + const size_t num_platforms = m_platforms.size(); + for (size_t idx=0; idx collection; mutable Mutex m_mutex; collection m_platforms; + lldb::PlatformSP m_selected_platform_sp; private: DISALLOW_COPY_AND_ASSIGN (PlatformList); Modified: lldb/trunk/include/lldb/Target/Process.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Process.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/include/lldb/Target/Process.h (original) +++ lldb/trunk/include/lldb/Target/Process.h Fri Mar 18 20:12:21 2011 @@ -1726,8 +1726,8 @@ //---------------------------------------------------------------------- // Process Breakpoints //---------------------------------------------------------------------- - virtual size_t - GetSoftwareBreakpointTrapOpcode (BreakpointSite* bp_site) = 0; + size_t + GetSoftwareBreakpointTrapOpcode (BreakpointSite* bp_site); virtual Error EnableBreakpoint (BreakpointSite *bp_site) = 0; Modified: lldb/trunk/include/lldb/Target/Target.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Target.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/include/lldb/Target/Target.h (original) +++ lldb/trunk/include/lldb/Target/Target.h Fri Mar 18 20:12:21 2011 @@ -101,7 +101,6 @@ m_execution_os_type = execution_os_type; } - protected: void @@ -175,7 +174,7 @@ /// /// @see TargetList::CreateTarget(const FileSpec*, const ArchSpec*) //------------------------------------------------------------------ - Target(Debugger &debugger); + Target(Debugger &debugger, const lldb::PlatformSP &platform_sp); public: ~Target(); @@ -641,6 +640,12 @@ return (*pos).second; } + lldb::PlatformSP + GetPlatform () + { + return m_platform_sp; + } + //------------------------------------------------------------------ // Target::SettingsController //------------------------------------------------------------------ @@ -694,6 +699,7 @@ // Member variables. //------------------------------------------------------------------ Debugger & m_debugger; + lldb::PlatformSP m_platform_sp; ///< The platform for this target. Mutex m_mutex; ///< An API mutex that is used by the lldb::SB* classes make the SB interface thread safe ArchSpec m_arch_spec; ModuleList m_images; ///< The list of images for this process (shared libraries and anything dynamically loaded). Modified: lldb/trunk/include/lldb/lldb-enumerations.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/lldb-enumerations.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/include/lldb/lldb-enumerations.h (original) +++ lldb/trunk/include/lldb/lldb-enumerations.h Fri Mar 18 20:12:21 2011 @@ -77,6 +77,21 @@ eAddressTypeHost ///< Address is an address in the process that is running this code } AddressType; + //---------------------------------------------------------------------- + // Address Types + //---------------------------------------------------------------------- +typedef enum AddressClass +{ + eAddressClassInvalid, + eAddressClassUnknown, + eAddressClassCode, + eAddressClassCodeAlternateISA, + eAddressClassData, + eAddressClassDataConst, + eAddressClassDebug, + eAddressClassRuntime +} AddressClass; + //---------------------------------------------------------------------- // Byte ordering definitions //---------------------------------------------------------------------- Modified: lldb/trunk/include/lldb/lldb-forward.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/lldb-forward.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/include/lldb/lldb-forward.h (original) +++ lldb/trunk/include/lldb/lldb-forward.h Fri Mar 18 20:12:21 2011 @@ -65,7 +65,6 @@ class DataBuffer; class DataExtractor; class Debugger; -class Debugger; class Declaration; class Disassembler; class DynamicLoader; Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/lldb.xcodeproj/project.pbxproj (original) +++ lldb/trunk/lldb.xcodeproj/project.pbxproj Fri Mar 18 20:12:21 2011 @@ -80,6 +80,10 @@ 266A42D6128E3FFB0090CF7C /* ClangNamespaceDecl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266A42D5128E3FFB0090CF7C /* ClangNamespaceDecl.cpp */; }; 266A42D8128E40040090CF7C /* ClangNamespaceDecl.h in Headers */ = {isa = PBXBuildFile; fileRef = 266A42D7128E40040090CF7C /* ClangNamespaceDecl.h */; }; 266F5CBC12FC846200DFCE33 /* Config.h in Headers */ = {isa = PBXBuildFile; fileRef = 266F5CBB12FC846200DFCE33 /* Config.h */; }; + 2675F7001332BE690067997B /* PlatformRemoteiOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2675F6FE1332BE690067997B /* PlatformRemoteiOS.cpp */; }; + 2675F7011332BE690067997B /* PlatformRemoteiOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 2675F6FF1332BE690067997B /* PlatformRemoteiOS.h */; }; + 26879CE61333F5750012C1F8 /* CommandObjectPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 26879CE51333F5750012C1F8 /* CommandObjectPlatform.h */; }; + 26879CE81333F58B0012C1F8 /* CommandObjectPlatform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26879CE71333F58B0012C1F8 /* CommandObjectPlatform.cpp */; }; 268A683F1321B53B000E3FB8 /* DynamicLoaderStatic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268A683D1321B53B000E3FB8 /* DynamicLoaderStatic.cpp */; }; 268A68401321B53B000E3FB8 /* DynamicLoaderStatic.h in Headers */ = {isa = PBXBuildFile; fileRef = 268A683E1321B53B000E3FB8 /* DynamicLoaderStatic.h */; }; 268DA872130095D000C9483A /* Terminal.h in Headers */ = {isa = PBXBuildFile; fileRef = 268DA871130095D000C9483A /* Terminal.h */; }; @@ -611,12 +615,16 @@ 266F5CBB12FC846200DFCE33 /* Config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Config.h; path = include/lldb/Host/Config.h; sourceTree = ""; }; 2672D8461189055500FF4019 /* CommandObjectFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectFrame.cpp; path = source/Commands/CommandObjectFrame.cpp; sourceTree = ""; }; 2672D8471189055500FF4019 /* CommandObjectFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectFrame.h; path = source/Commands/CommandObjectFrame.h; sourceTree = ""; }; + 2675F6FE1332BE690067997B /* PlatformRemoteiOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformRemoteiOS.cpp; sourceTree = ""; }; + 2675F6FF1332BE690067997B /* PlatformRemoteiOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformRemoteiOS.h; sourceTree = ""; }; 2676A093119C93C8008A98EF /* StringExtractorGDBRemote.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringExtractorGDBRemote.cpp; path = source/Utility/StringExtractorGDBRemote.cpp; sourceTree = ""; }; 2676A094119C93C8008A98EF /* StringExtractorGDBRemote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StringExtractorGDBRemote.h; path = source/Utility/StringExtractorGDBRemote.h; sourceTree = ""; }; 2682F16A115EDA0D00CCFF99 /* PseudoTerminal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PseudoTerminal.cpp; path = source/Utility/PseudoTerminal.cpp; sourceTree = ""; }; 2682F16B115EDA0D00CCFF99 /* PseudoTerminal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PseudoTerminal.h; path = include/lldb/Utility/PseudoTerminal.h; sourceTree = ""; }; 2682F284115EF3A700CCFF99 /* SBError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBError.cpp; path = source/API/SBError.cpp; sourceTree = ""; }; 2682F286115EF3BD00CCFF99 /* SBError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBError.h; path = include/lldb/API/SBError.h; sourceTree = ""; }; + 26879CE51333F5750012C1F8 /* CommandObjectPlatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectPlatform.h; path = source/Commands/CommandObjectPlatform.h; sourceTree = ""; }; + 26879CE71333F58B0012C1F8 /* CommandObjectPlatform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectPlatform.cpp; path = source/Commands/CommandObjectPlatform.cpp; sourceTree = ""; }; 2689B0A4113EE3CD00A4AEDB /* Symbols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Symbols.h; path = include/lldb/Host/Symbols.h; sourceTree = ""; }; 2689B0B5113EE47E00A4AEDB /* Symbols.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Symbols.cpp; path = source/Host/macosx/Symbols.cpp; sourceTree = ""; }; 268A683D1321B53B000E3FB8 /* DynamicLoaderStatic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicLoaderStatic.cpp; sourceTree = ""; }; @@ -1935,6 +1943,8 @@ 264AD83711095BA600E0B039 /* CommandObjectLog.cpp */, 26BC7D1D10F1B76300F91463 /* CommandObjectMemory.h */, 26BC7E3610F1B84700F91463 /* CommandObjectMemory.cpp */, + 26879CE51333F5750012C1F8 /* CommandObjectPlatform.h */, + 26879CE71333F58B0012C1F8 /* CommandObjectPlatform.cpp */, 26BC7D1F10F1B76300F91463 /* CommandObjectProcess.h */, 26BC7E3810F1B84700F91463 /* CommandObjectProcess.cpp */, 26BC7D2010F1B76300F91463 /* CommandObjectQuit.h */, @@ -2169,6 +2179,8 @@ children = ( 26C5577B132575AD008FD8FE /* PlatformMacOSX.cpp */, 26C5577C132575AD008FD8FE /* PlatformMacOSX.h */, + 2675F6FE1332BE690067997B /* PlatformRemoteiOS.cpp */, + 2675F6FF1332BE690067997B /* PlatformRemoteiOS.h */, ); path = MacOSX; sourceTree = ""; @@ -2415,6 +2427,8 @@ 264A43BC1320B3B4005B4096 /* Platform.h in Headers */, 268A68401321B53B000E3FB8 /* DynamicLoaderStatic.h in Headers */, 26C557811325781D008FD8FE /* PlatformMacOSX.h in Headers */, + 2675F7011332BE690067997B /* PlatformRemoteiOS.h in Headers */, + 26879CE61333F5750012C1F8 /* CommandObjectPlatform.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2924,6 +2938,8 @@ 264A43BE1320BCEB005B4096 /* Platform.cpp in Sources */, 268A683F1321B53B000E3FB8 /* DynamicLoaderStatic.cpp in Sources */, 26C557801325781A008FD8FE /* PlatformMacOSX.cpp in Sources */, + 2675F7001332BE690067997B /* PlatformRemoteiOS.cpp in Sources */, + 26879CE81333F58B0012C1F8 /* CommandObjectPlatform.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3104,7 +3120,7 @@ "$(LLVM_BUILD_DIR)", ); LLVM_BUILD_DIR = "$(SRCROOT)/llvm"; - LLVM_CONFIGURATION = Release; + LLVM_CONFIGURATION = "Debug+Asserts"; OTHER_CFLAGS = ( "-DFOR_DYLD=0", "-DSUPPORT_REMOTE_UNWINDING", @@ -3161,7 +3177,7 @@ "$(LLVM_BUILD_DIR)", ); LLVM_BUILD_DIR = "$(SRCROOT)/llvm"; - LLVM_CONFIGURATION = Release; + LLVM_CONFIGURATION = "Debug+Asserts"; OTHER_CFLAGS = ( "-DFOR_DYLD=0", "-DSUPPORT_REMOTE_UNWINDING", @@ -3284,7 +3300,7 @@ "$(LLVM_BUILD_DIR)", ); LLVM_BUILD_DIR = "$(DERIVED_FILE_DIR)/llvm.build"; - LLVM_CONFIGURATION = Release; + LLVM_CONFIGURATION = "Debug+Asserts"; OTHER_CFLAGS = ( "-DFOR_DYLD=0", "-DSUPPORT_REMOTE_UNWINDING", Modified: lldb/trunk/source/Breakpoint/Breakpoint.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/Breakpoint.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Breakpoint/Breakpoint.cpp (original) +++ lldb/trunk/source/Breakpoint/Breakpoint.cpp Fri Mar 18 20:12:21 2011 @@ -412,7 +412,7 @@ // Verbose mode does a debug dump of the breakpoint Dump (s); s->EOL (); - s->Indent(); + //s->Indent(); GetOptions()->GetDescription(s, level); break; Modified: lldb/trunk/source/Breakpoint/BreakpointLocationList.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/BreakpointLocationList.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Breakpoint/BreakpointLocationList.cpp (original) +++ lldb/trunk/source/Breakpoint/BreakpointLocationList.cpp Fri Mar 18 20:12:21 2011 @@ -133,7 +133,7 @@ BreakpointLocationList::Dump (Stream *s) const { s->Printf("%.*p: ", (int)sizeof(void*) * 2, this); - s->Indent(); + //s->Indent(); Mutex::Locker locker (m_mutex); s->Printf("BreakpointLocationList with %zu BreakpointLocations:\n", m_locations.size()); s->IndentMore(); Modified: lldb/trunk/source/Breakpoint/BreakpointSiteList.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/BreakpointSiteList.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Breakpoint/BreakpointSiteList.cpp (original) +++ lldb/trunk/source/Breakpoint/BreakpointSiteList.cpp Fri Mar 18 20:12:21 2011 @@ -168,7 +168,7 @@ BreakpointSiteList::Dump (Stream *s) const { s->Printf("%.*p: ", (int)sizeof(void*) * 2, this); - s->Indent(); + //s->Indent(); s->Printf("BreakpointSiteList with %u BreakpointSites:\n", (uint32_t)m_bp_site_list.size()); s->IndentMore(); collection::const_iterator pos; Modified: lldb/trunk/source/Commands/CommandObjectFrame.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectFrame.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectFrame.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectFrame.cpp Fri Mar 18 20:12:21 2011 @@ -319,7 +319,8 @@ case 'L': show_location= true; break; case 'c': show_decl = true; break; case 'D': debug = true; break; - case 'f': flat_output = true; break; + case 'f': error = Args::StringToFormat(option_arg, format); break; + case 'F': flat_output = true; break; case 'd': max_depth = Args::StringToUInt32 (option_arg, UINT32_MAX, 0, &success); if (!success) @@ -367,6 +368,7 @@ flat_output = false; max_depth = UINT32_MAX; ptr_depth = 0; + format = eFormatDefault; globals.clear(); } @@ -393,6 +395,7 @@ flat_output:1; uint32_t max_depth; // The depth to print when dumping concrete (not pointers) aggreate values uint32_t ptr_depth; // The default depth that is dumped when we find pointers + lldb::Format format; // The format to use when dumping variables or children of variables std::vector globals; // Instance variables to hold the values for command options. }; @@ -491,6 +494,9 @@ if (valobj_sp) { + if (m_options.format != eFormatDefault) + valobj_sp->SetFormat (m_options.format); + if (m_options.show_decl && var_sp->GetDeclaration ().GetFile()) { var_sp->GetDeclaration ().DumpStopContext (&s, false); @@ -550,6 +556,9 @@ valobj_sp = exe_ctx.frame->GetValueObjectForFrameVariable (var_sp); if (valobj_sp) { + if (m_options.format != eFormatDefault) + valobj_sp->SetFormat (m_options.format); + if (m_options.show_decl && var_sp->GetDeclaration ().GetFile()) { var_sp->GetDeclaration ().DumpStopContext (&s, false); @@ -593,6 +602,9 @@ valobj_sp = exe_ctx.frame->GetValueForVariableExpressionPath (name_cstr, expr_path_options, error); if (valobj_sp) { + if (m_options.format != eFormatDefault) + valobj_sp->SetFormat (m_options.format); + if (m_options.show_decl && var_sp->GetDeclaration ().GetFile()) { var_sp->GetDeclaration ().DumpStopContext (&s, false); @@ -672,6 +684,9 @@ valobj_sp = exe_ctx.frame->GetValueObjectForFrameVariable (var_sp); if (valobj_sp) { + if (m_options.format != eFormatDefault) + valobj_sp->SetFormat (m_options.format); + // When dumping all variables, don't print any variables // that are not in scope to avoid extra unneeded output if (valobj_sp->IsInScope (exe_ctx.frame)) @@ -726,7 +741,8 @@ { LLDB_OPT_SET_1, false, "objc", 'o', no_argument, NULL, 0, eArgTypeNone, "When looking up a variable by name, print as an Objective-C object."}, { LLDB_OPT_SET_1, false, "ptr-depth", 'p', required_argument, NULL, 0, eArgTypeCount, "The number of pointers to be traversed when dumping values (default is zero)."}, { LLDB_OPT_SET_1, false, "regex", 'r', no_argument, NULL, 0, eArgTypeRegularExpression, "The argument for name lookups are regular expressions."}, -{ LLDB_OPT_SET_1, false, "flat", 'f', no_argument, NULL, 0, eArgTypeNone, "Display results in a flat format that uses expression paths for each variable or member."}, +{ LLDB_OPT_SET_1, false, "flat", 'F', no_argument, NULL, 0, eArgTypeNone, "Display results in a flat format that uses expression paths for each variable or member."}, +{ LLDB_OPT_SET_1, false, "format", 'f', required_argument, NULL, 0, eArgTypeExprFormat, "Specify the format that the variable output should use."}, { 0, false, NULL, 0, 0, NULL, NULL, eArgTypeNone, NULL } }; #pragma mark CommandObjectMultiwordFrame Added: lldb/trunk/source/Commands/CommandObjectPlatform.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectPlatform.cpp?rev=127934&view=auto ============================================================================== --- lldb/trunk/source/Commands/CommandObjectPlatform.cpp (added) +++ lldb/trunk/source/Commands/CommandObjectPlatform.cpp Fri Mar 18 20:12:21 2011 @@ -0,0 +1,306 @@ +//===-- CommandObjectPlatform.cpp -------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "CommandObjectPlatform.h" + +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes +#include "lldb/Core/DataExtractor.h" +#include "lldb/Core/Debugger.h" +#include "lldb/Core/PluginManager.h" +#include "lldb/Interpreter/Args.h" +#include "lldb/Interpreter/CommandInterpreter.h" +#include "lldb/Interpreter/CommandReturnObject.h" +#include "lldb/Target/ExecutionContext.h" +#include "lldb/Target/Platform.h" + +using namespace lldb; +using namespace lldb_private; + +//---------------------------------------------------------------------- +// "platform create " +//---------------------------------------------------------------------- +class CommandObjectPlatformCreate : public CommandObject +{ +public: + CommandObjectPlatformCreate (CommandInterpreter &interpreter) : + CommandObject (interpreter, + "platform create", + "Create a platform instance by name and select it as the current platform.", + "platform create ", + 0) + { + } + + virtual + ~CommandObjectPlatformCreate () + { + } + + virtual bool + Execute (Args& args, CommandReturnObject &result) + { + Error error; + if (args.GetArgumentCount() == 1) + { + PlatformSP platform_sp (Platform::Create (args.GetArgumentAtIndex (0), error)); + + if (platform_sp) + { + m_interpreter.GetDebugger().GetPlatformList().Append (platform_sp, true); + if (m_options.os_version_major != UINT32_MAX) + { + platform_sp->SetOSVersion (m_options.os_version_major, + m_options.os_version_minor, + m_options.os_version_update); + } + + platform_sp->GetStatus (result.GetOutputStream()); + } + } + else + { + result.AppendError ("command not implemented"); + result.SetStatus (eReturnStatusFailed); + } + return result.Succeeded(); + } + + virtual Options * + GetOptions () + { + return &m_options; + } + +protected: + + class CommandOptions : public Options + { + public: + + CommandOptions () : + os_version_major (UINT32_MAX), + os_version_minor (UINT32_MAX), + os_version_update (UINT32_MAX) + { + } + + virtual + ~CommandOptions () + { + } + + virtual Error + SetOptionValue (int option_idx, const char *option_arg) + { + Error error; + char short_option = (char) m_getopt_table[option_idx].val; + + switch (short_option) + { + case 'v': + if (Args::StringToVersion (option_arg, + os_version_major, + os_version_minor, + os_version_update) == option_arg) + { + error.SetErrorStringWithFormat ("invalid version string '%s'", option_arg); + } + break; + + default: + error.SetErrorStringWithFormat ("Unrecognized option '%c'.\n", short_option); + break; + } + + return error; + } + + void + ResetOptionValues () + { + os_version_major = UINT32_MAX; + os_version_minor = UINT32_MAX; + os_version_update = UINT32_MAX; + } + + const lldb::OptionDefinition* + GetDefinitions () + { + return g_option_table; + } + + // Options table: Required for subclasses of Options. + + static lldb::OptionDefinition g_option_table[]; + + // Instance variables to hold the values for command options. + + uint32_t os_version_major; + uint32_t os_version_minor; + uint32_t os_version_update; + }; + CommandOptions m_options; +}; + +lldb::OptionDefinition +CommandObjectPlatformCreate::CommandOptions::g_option_table[] = +{ + { LLDB_OPT_SET_ALL, false, "sdk-version", 'v', required_argument, NULL, 0, eArgTypeNone, "Specify the initial SDK version to use prior to connecting." }, + { 0, false, NULL, 0, 0, NULL, 0, eArgTypeNone, NULL } +}; + +//---------------------------------------------------------------------- +// "platform list" +//---------------------------------------------------------------------- +class CommandObjectPlatformList : public CommandObject +{ +public: + CommandObjectPlatformList (CommandInterpreter &interpreter) : + CommandObject (interpreter, + "platform list", + "List all platforms that are available.", + NULL, + 0) + { + } + + virtual + ~CommandObjectPlatformList () + { + } + + virtual bool + Execute (Args& args, CommandReturnObject &result) + { + Stream &ostrm = result.GetOutputStream(); + ostrm.Printf("Available platforms:\n"); + + PlatformSP host_platform_sp (Platform::GetDefaultPlatform()); + ostrm.Printf ("%s: %s\n", + host_platform_sp->GetShortPluginName(), + host_platform_sp->GetDescription()); + + uint32_t idx; + for (idx = 0; 1; ++idx) + { + const char *plugin_name = PluginManager::GetPlatformPluginNameAtIndex (idx); + if (plugin_name == NULL) + break; + const char *plugin_desc = PluginManager::GetPlatformPluginDescriptionAtIndex (idx); + if (plugin_desc == NULL) + break; + ostrm.Printf("%s: %s\n", plugin_name, plugin_desc); + } + + if (idx == 0) + { + result.AppendError ("no platforms are available"); + result.SetStatus (eReturnStatusFailed); + } + return result.Succeeded(); + } +}; + +//---------------------------------------------------------------------- +// "platform status" +//---------------------------------------------------------------------- +class CommandObjectPlatformStatus : public CommandObject +{ +public: + CommandObjectPlatformStatus (CommandInterpreter &interpreter) : + CommandObject (interpreter, + "platform status", + "Display status for the currently selected platform.", + NULL, + 0) + { + } + + virtual + ~CommandObjectPlatformStatus () + { + } + + virtual bool + Execute (Args& args, CommandReturnObject &result) + { + Stream &ostrm = result.GetOutputStream(); + + PlatformSP selected_platform_sp (m_interpreter.GetDebugger().GetPlatformList().GetSelectedPlatform()); + if (selected_platform_sp) + { + selected_platform_sp->GetStatus (ostrm); + result.SetStatus (eReturnStatusSuccessFinishResult); + } + else + { + result.AppendError ("no platform us currently selected"); + result.SetStatus (eReturnStatusFailed); + } + return result.Succeeded(); + } +}; + + +//---------------------------------------------------------------------- +// "platform select " +//---------------------------------------------------------------------- +class CommandObjectPlatformSelect : public CommandObject +{ +public: + CommandObjectPlatformSelect (CommandInterpreter &interpreter) : + CommandObject (interpreter, + "platform select", + "Select a platform by name to be the currently selected platform.", + "platform select ", + 0) + { + } + + virtual + ~CommandObjectPlatformSelect () + { + } + + virtual bool + Execute (Args& args, CommandReturnObject &result) + { + result.AppendError ("command not implemented"); + result.SetStatus (eReturnStatusFailed); + return result.Succeeded(); + } +}; + + + +//---------------------------------------------------------------------- +// CommandObjectPlatform constructor +//---------------------------------------------------------------------- +CommandObjectPlatform::CommandObjectPlatform(CommandInterpreter &interpreter) : + CommandObjectMultiword (interpreter, + "platform", + "A set of commands to manage and create platforms.", + "platform [create|list|status|select] ...") +{ + LoadSubCommand ("create", CommandObjectSP (new CommandObjectPlatformCreate (interpreter))); + LoadSubCommand ("list" , CommandObjectSP (new CommandObjectPlatformList (interpreter))); + LoadSubCommand ("select", CommandObjectSP (new CommandObjectPlatformSelect (interpreter))); + LoadSubCommand ("status", CommandObjectSP (new CommandObjectPlatformStatus (interpreter))); +} + + +//---------------------------------------------------------------------- +// Destructor +//---------------------------------------------------------------------- +CommandObjectPlatform::~CommandObjectPlatform() +{ +} Added: lldb/trunk/source/Commands/CommandObjectPlatform.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectPlatform.h?rev=127934&view=auto ============================================================================== --- lldb/trunk/source/Commands/CommandObjectPlatform.h (added) +++ lldb/trunk/source/Commands/CommandObjectPlatform.h Fri Mar 18 20:12:21 2011 @@ -0,0 +1,45 @@ +//===-- CommandObjectPlatform.h ---------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_CommandObjectPlatform_h_ +#define liblldb_CommandObjectPlatform_h_ + +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes +#include "lldb/Interpreter/CommandObjectMultiword.h" + +namespace lldb_private { + +//------------------------------------------------------------------------- +// CommandObjectPlatform +//------------------------------------------------------------------------- + +class CommandObjectPlatform : public CommandObjectMultiword +{ +public: + //------------------------------------------------------------------ + // Constructors and Destructors + //------------------------------------------------------------------ + CommandObjectPlatform(CommandInterpreter &interpreter); + + virtual + ~CommandObjectPlatform(); + +private: + //------------------------------------------------------------------ + // For CommandObjectPlatform only + //------------------------------------------------------------------ + DISALLOW_COPY_AND_ASSIGN (CommandObjectPlatform); +}; + +} // namespace lldb_private + +#endif // liblldb_CommandObjectPlatform_h_ Modified: lldb/trunk/source/Commands/CommandObjectProcess.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectProcess.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectProcess.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectProcess.cpp Fri Mar 18 20:12:21 2011 @@ -523,7 +523,7 @@ const char *partial_name = NULL; partial_name = input.GetArgumentAtIndex(opt_arg_pos); - PlatformSP platform_sp (Platform::GetSelectedPlatform ()); + PlatformSP platform_sp (interpeter.GetDebugger().GetPlatformList().GetSelectedPlatform ()); if (platform_sp) { ProcessInfoList process_infos; @@ -703,7 +703,7 @@ if (attach_pid == LLDB_INVALID_PROCESS_ID && wait_name != NULL) { ProcessInfoList process_infos; - PlatformSP platform_sp (Platform::GetSelectedPlatform ()); + PlatformSP platform_sp (m_interpreter.GetDebugger().GetPlatformList().GetSelectedPlatform ()); if (platform_sp) { platform_sp->FindProcessesByName (wait_name, eNameMatchEquals, process_infos); Modified: lldb/trunk/source/Core/Address.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Address.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Core/Address.cpp (original) +++ lldb/trunk/source/Core/Address.cpp Fri Mar 18 20:12:21 2011 @@ -808,3 +808,16 @@ } } } + +lldb::AddressClass +Address::GetAddressClass () const +{ + Module *module = GetModule(); + if (module) + { + ObjectFile *obj_file = module->GetObjectFile(); + if (obj_file) + return obj_file->GetAddressClass (GetFileAddress()); + } + return eAddressClassUnknown; +} Modified: lldb/trunk/source/Core/ArchSpec.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ArchSpec.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Core/ArchSpec.cpp (original) +++ lldb/trunk/source/Core/ArchSpec.cpp Fri Mar 18 20:12:21 2011 @@ -49,6 +49,9 @@ { eByteOrderLittle, 4, llvm::Triple::arm , ArchSpec::eCore_arm_armv5t , "armv5t" }, { eByteOrderLittle, 4, llvm::Triple::arm , ArchSpec::eCore_arm_armv6 , "armv6" }, { eByteOrderLittle, 4, llvm::Triple::arm , ArchSpec::eCore_arm_armv7 , "armv7" }, + { eByteOrderLittle, 4, llvm::Triple::arm , ArchSpec::eCore_arm_armv7f , "armv7f" }, + { eByteOrderLittle, 4, llvm::Triple::arm , ArchSpec::eCore_arm_armv7k , "armv7k" }, + { eByteOrderLittle, 4, llvm::Triple::arm , ArchSpec::eCore_arm_armv7s , "armv7s" }, { eByteOrderLittle, 4, llvm::Triple::arm , ArchSpec::eCore_arm_xscale , "xscale" }, { eByteOrderLittle, 4, llvm::Triple::ppc , ArchSpec::eCore_ppc_generic , "ppc" }, @@ -112,6 +115,9 @@ { ArchSpec::eCore_arm_armv5 , llvm::MachO::CPUTypeARM , 7 }, { ArchSpec::eCore_arm_xscale , llvm::MachO::CPUTypeARM , 8 }, { ArchSpec::eCore_arm_armv7 , llvm::MachO::CPUTypeARM , 9 }, + { ArchSpec::eCore_arm_armv7f , llvm::MachO::CPUTypeARM , 10 }, + { ArchSpec::eCore_arm_armv7k , llvm::MachO::CPUTypeARM , 12 }, + { ArchSpec::eCore_arm_armv7s , llvm::MachO::CPUTypeARM , 11 }, { ArchSpec::eCore_ppc_generic , llvm::MachO::CPUTypePowerPC , CPU_ANY }, { ArchSpec::eCore_ppc_generic , llvm::MachO::CPUTypePowerPC , 0 }, { ArchSpec::eCore_ppc_ppc601 , llvm::MachO::CPUTypePowerPC , 1 }, Modified: lldb/trunk/source/Core/Debugger.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Debugger.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Core/Debugger.cpp (original) +++ lldb/trunk/source/Core/Debugger.cpp Fri Mar 18 20:12:21 2011 @@ -225,6 +225,7 @@ m_output_file (), m_error_file (), m_target_list (), + m_platform_list (), m_listener ("lldb.Debugger"), m_source_manager (), m_command_interpreter_ap (new CommandInterpreter (*this, eScriptLanguageDefault, false)), @@ -234,6 +235,10 @@ { m_input_comm.SetCloseOnEOF(false); m_command_interpreter_ap->Initialize (); + // Always add our default platform to the platform list + PlatformSP default_platform_sp (Platform::GetDefaultPlatform()); + assert (default_platform_sp.get()); + m_platform_list.Append (default_platform_sp, true); } Debugger::~Debugger () @@ -262,11 +267,6 @@ m_command_interpreter_ap->SetSynchronous (!async_execution); } -void -Debugger::DisconnectInput() -{ - m_input_comm.Clear (); -} void Debugger::SetInputFileHandle (FILE *fh, bool tranfer_ownership) @@ -311,26 +311,6 @@ err_file.SetStream (stderr, false); } -CommandInterpreter & -Debugger::GetCommandInterpreter () -{ - assert (m_command_interpreter_ap.get()); - return *m_command_interpreter_ap; -} - -Listener & -Debugger::GetListener () -{ - return m_listener; -} - - -TargetSP -Debugger::GetSelectedTarget () -{ - return m_target_list.GetSelectedTarget (); -} - ExecutionContext Debugger::GetSelectedExecutionContext () { @@ -360,19 +340,6 @@ } -SourceManager & -Debugger::GetSourceManager () -{ - return m_source_manager; -} - - -TargetList& -Debugger::GetTargetList () -{ - return m_target_list; -} - InputReaderSP Debugger::GetCurrentInputReader () { Modified: lldb/trunk/source/Core/PluginManager.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/PluginManager.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Core/PluginManager.cpp (original) +++ lldb/trunk/source/Core/PluginManager.cpp Fri Mar 18 20:12:21 2011 @@ -226,50 +226,19 @@ typedef std::vector ABIInstances; -static bool -AccessABIInstances (PluginAction action, ABIInstance &instance, uint32_t index) +static Mutex & +GetABIInstancesMutex () { - static ABIInstances g_plugin_instances; - - switch (action) - { - case ePluginRegisterInstance: - if (instance.create_callback) - { - g_plugin_instances.push_back (instance); - return true; - } - break; - - case ePluginUnregisterInstance: - if (instance.create_callback) - { - ABIInstances::iterator pos, end = g_plugin_instances.end(); - for (pos = g_plugin_instances.begin(); pos != end; ++ pos) - { - if (pos->create_callback == instance.create_callback) - { - g_plugin_instances.erase(pos); - return true; - } - } - } - break; - - case ePluginGetInstanceAtIndex: - if (index < g_plugin_instances.size()) - { - instance = g_plugin_instances[index]; - return true; - } - break; - - default: - break; - } - return false; + static Mutex g_instances_mutex (Mutex::eMutexTypeRecursive); + return g_instances_mutex; } +static ABIInstances & +GetABIInstances () +{ + static ABIInstances g_instances; + return g_instances; +} bool PluginManager::RegisterPlugin @@ -287,7 +256,9 @@ if (description && description[0]) instance.description = description; instance.create_callback = create_callback; - return AccessABIInstances (ePluginRegisterInstance, instance, 0); + Mutex::Locker locker (GetABIInstancesMutex ()); + GetABIInstances ().push_back (instance); + return true; } return false; } @@ -297,9 +268,18 @@ { if (create_callback) { - ABIInstance instance; - instance.create_callback = create_callback; - return AccessABIInstances (ePluginUnregisterInstance, instance, 0); + Mutex::Locker locker (GetABIInstancesMutex ()); + ABIInstances &instances = GetABIInstances (); + + ABIInstances::iterator pos, end = instances.end(); + for (pos = instances.begin(); pos != end; ++ pos) + { + if (pos->create_callback == create_callback) + { + instances.erase(pos); + return true; + } + } } return false; } @@ -307,9 +287,11 @@ ABICreateInstance PluginManager::GetABICreateCallbackAtIndex (uint32_t idx) { - ABIInstance instance; - if (AccessABIInstances (ePluginGetInstanceAtIndex, instance, idx)) - return instance.create_callback; + Mutex::Locker locker (GetABIInstancesMutex ()); + ABIInstances &instances = GetABIInstances (); + + if (idx < instances.size()) + return instances[idx].create_callback; return NULL; } @@ -318,12 +300,15 @@ { if (name && name[0]) { - ABIInstance instance; + Mutex::Locker locker (GetABIInstancesMutex ()); std::string ss_name(name); - for (uint32_t idx = 0; AccessABIInstances (ePluginGetInstanceAtIndex, instance, idx); ++idx) + ABIInstances &instances = GetABIInstances (); + + ABIInstances::iterator pos, end = instances.end(); + for (pos = instances.begin(); pos != end; ++ pos) { - if (instance.name == ss_name) - return instance.create_callback; + if (pos->name == ss_name) + return pos->create_callback; } } return NULL; @@ -1212,50 +1197,19 @@ typedef std::vector PlatformInstances; -static bool -AccessPlatformInstances (PluginAction action, PlatformInstance &instance, uint32_t index) +static Mutex & +GetPlatformInstancesMutex () { - static PlatformInstances g_plugin_instances; - - switch (action) - { - case ePluginRegisterInstance: - if (instance.create_callback) - { - g_plugin_instances.push_back (instance); - return true; - } - break; - - case ePluginUnregisterInstance: - if (instance.create_callback) - { - PlatformInstances::iterator pos, end = g_plugin_instances.end(); - for (pos = g_plugin_instances.begin(); pos != end; ++ pos) - { - if (pos->create_callback == instance.create_callback) - { - g_plugin_instances.erase(pos); - return true; - } - } - } - break; - - case ePluginGetInstanceAtIndex: - if (index < g_plugin_instances.size()) - { - instance = g_plugin_instances[index]; - return true; - } - break; - - default: - break; - } - return false; + static Mutex g_platform_instances_mutex (Mutex::eMutexTypeRecursive); + return g_platform_instances_mutex; } +static PlatformInstances & +GetPlatformInstances () +{ + static PlatformInstances g_platform_instances; + return g_platform_instances; +} bool PluginManager::RegisterPlugin (const char *name, @@ -1264,13 +1218,16 @@ { if (create_callback) { + Mutex::Locker locker (GetPlatformInstancesMutex ()); + PlatformInstance instance; assert (name && name[0]); instance.name = name; if (description && description[0]) instance.description = description; instance.create_callback = create_callback; - return AccessPlatformInstances (ePluginRegisterInstance, instance, 0); + GetPlatformInstances ().push_back (instance); + return true; } return false; } @@ -1278,18 +1235,20 @@ const char * PluginManager::GetPlatformPluginNameAtIndex (uint32_t idx) { - PlatformInstance instance; - if (AccessPlatformInstances (ePluginGetInstanceAtIndex, instance, idx)) - return instance.name.c_str(); + Mutex::Locker locker (GetPlatformInstancesMutex ()); + PlatformInstances &platform_instances = GetPlatformInstances (); + if (idx < platform_instances.size()) + return platform_instances[idx].name.c_str(); return NULL; } const char * PluginManager::GetPlatformPluginDescriptionAtIndex (uint32_t idx) { - PlatformInstance instance; - if (AccessPlatformInstances (ePluginGetInstanceAtIndex, instance, idx)) - return instance.description.c_str(); + Mutex::Locker locker (GetPlatformInstancesMutex ()); + PlatformInstances &platform_instances = GetPlatformInstances (); + if (idx < platform_instances.size()) + return platform_instances[idx].description.c_str(); return NULL; } @@ -1298,9 +1257,18 @@ { if (create_callback) { - PlatformInstance instance; - instance.create_callback = create_callback; - return AccessPlatformInstances (ePluginUnregisterInstance, instance, 0); + Mutex::Locker locker (GetPlatformInstancesMutex ()); + PlatformInstances &platform_instances = GetPlatformInstances (); + + PlatformInstances::iterator pos, end = platform_instances.end(); + for (pos = platform_instances.begin(); pos != end; ++ pos) + { + if (pos->create_callback == create_callback) + { + platform_instances.erase(pos); + return true; + } + } } return false; } @@ -1308,9 +1276,10 @@ PlatformCreateInstance PluginManager::GetPlatformCreateCallbackAtIndex (uint32_t idx) { - PlatformInstance instance; - if (AccessPlatformInstances (ePluginGetInstanceAtIndex, instance, idx)) - return instance.create_callback; + Mutex::Locker locker (GetPlatformInstancesMutex ()); + PlatformInstances &platform_instances = GetPlatformInstances (); + if (idx < platform_instances.size()) + return platform_instances[idx].create_callback; return NULL; } @@ -1319,12 +1288,15 @@ { if (name && name[0]) { - PlatformInstance instance; + Mutex::Locker locker (GetPlatformInstancesMutex ()); std::string ss_name(name); - for (uint32_t idx = 0; AccessPlatformInstances (ePluginGetInstanceAtIndex, instance, idx); ++idx) + PlatformInstances &platform_instances = GetPlatformInstances (); + + PlatformInstances::iterator pos, end = platform_instances.end(); + for (pos = platform_instances.begin(); pos != end; ++ pos) { - if (instance.name == ss_name) - return instance.create_callback; + if (pos->name == ss_name) + return pos->create_callback; } } return NULL; Modified: lldb/trunk/source/Host/macosx/Host.mm URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/macosx/Host.mm?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Host/macosx/Host.mm (original) +++ lldb/trunk/source/Host/macosx/Host.mm Fri Mar 18 20:12:21 2011 @@ -830,3 +830,48 @@ return i; } + + +bool +Host::GetOSVersion +( + uint32_t &major, + uint32_t &minor, + uint32_t &update +) +{ + + SInt32 version; + + OSErr err = ::Gestalt (gestaltSystemVersion, &version); + if (err != noErr) + return false; + + if (version < 0x1040) + { + major = ((version & 0xF000) >> 12) * 10 + ((version & 0x0F00) >> 8); + minor = (version & 0x00F0) >> 4; + update = (version & 0x000F); + } + else + { + if (::Gestalt (gestaltSystemVersionMajor, &version) != noErr) + return false; + major = version; + + if (::Gestalt (gestaltSystemVersionMinor, &version) == noErr) + minor = version; + else + minor = 0; + + if (::Gestalt (gestaltSystemVersionBugFix, &version) == noErr) + update = version; + else + update = 0; + } + + return true; + +} + + Modified: lldb/trunk/source/Interpreter/Args.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/Args.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/Args.cpp (original) +++ lldb/trunk/source/Interpreter/Args.cpp Fri Mar 18 20:12:21 2011 @@ -754,6 +754,47 @@ return fail_value; } +const char * +Args::StringToVersion (const char *s, uint32_t &major, uint32_t &minor, uint32_t &update) +{ + major = UINT32_MAX; + minor = UINT32_MAX; + update = UINT32_MAX; + + if (s && s[0]) + { + char *pos = NULL; + uint32_t uval32; + uval32 = ::strtoul (s, &pos, 0); + if (pos == s) + return s; + major = uval32; + if (*pos == '\0') + { + return pos; // Decoded major and got end of string + } + else if (*pos == '.') + { + const char *minor_cstr = pos + 1; + uval32 = ::strtoul (minor_cstr, &pos, 0); + if (pos == minor_cstr) + return pos; // Didn't get any digits for the minor version... + minor = uval32; + if (*pos == '.') + { + const char *update_cstr = pos + 1; + uval32 = ::strtoul (update_cstr, &pos, 0); + if (pos == update_cstr) + return pos; + update = uval32; + } + return pos; + } + } + return 0; +} + + int32_t Args::StringToOptionEnum (const char *s, lldb::OptionEnumValueElement *enum_values, int32_t fail_value, bool *success_ptr) { Modified: lldb/trunk/source/Interpreter/CommandInterpreter.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/CommandInterpreter.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/CommandInterpreter.cpp (original) +++ lldb/trunk/source/Interpreter/CommandInterpreter.cpp Fri Mar 18 20:12:21 2011 @@ -25,6 +25,7 @@ #include "../Commands/CommandObjectImage.h" #include "../Commands/CommandObjectLog.h" #include "../Commands/CommandObjectMemory.h" +#include "../Commands/CommandObjectPlatform.h" #include "../Commands/CommandObjectProcess.h" #include "../Commands/CommandObjectQuit.h" #include "lldb/Interpreter/CommandObjectRegexCommand.h" @@ -166,6 +167,7 @@ m_command_dict["image"] = CommandObjectSP (new CommandObjectImage (*this)); m_command_dict["log"] = CommandObjectSP (new CommandObjectLog (*this)); m_command_dict["memory"] = CommandObjectSP (new CommandObjectMemory (*this)); + m_command_dict["platform"] = CommandObjectSP (new CommandObjectPlatform (*this)); m_command_dict["process"] = CommandObjectSP (new CommandObjectMultiwordProcess (*this)); m_command_dict["quit"] = CommandObjectSP (new CommandObjectQuit (*this)); m_command_dict["register"] = CommandObjectSP (new CommandObjectRegister (*this)); Modified: lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp (original) +++ lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp Fri Mar 18 20:12:21 2011 @@ -31,8 +31,8 @@ using namespace lldb_private; -static -int DataExtractorByteReader(uint8_t *byte, uint64_t address, void *arg) +static int +DataExtractorByteReader(uint8_t *byte, uint64_t address, void *arg) { DataExtractor &extractor = *((DataExtractor *)arg); @@ -66,7 +66,7 @@ uint64_t instructionPointer = ((RegisterReaderArg*)arg)->instructionPointer; EDDisassemblerRef disassembler = ((RegisterReaderArg*)arg)->disassembler; - if(EDRegisterIsProgramCounter(disassembler, regID)) { + if (EDRegisterIsProgramCounter(disassembler, regID)) { *value = instructionPointer; return 0; } @@ -371,13 +371,26 @@ DisassemblerLLVM::DisassemblerLLVM(const ArchSpec &arch) : Disassembler (arch), - m_disassembler (NULL) + m_disassembler (NULL), + m_disassembler_thumb (NULL) // For ARM only { const std::string &arch_triple = arch.GetTriple().str(); if (!arch_triple.empty()) { if (EDGetDisassembler(&m_disassembler, arch_triple.c_str(), SyntaxForArchSpec (arch))) m_disassembler = NULL; + llvm::Triple::ArchType llvm_arch = arch.GetTriple().getArch(); + if (llvm_arch == llvm::Triple::arm) + { + if (EDGetDisassembler(&m_disassembler_thumb, "thumb-apple-darwin", kEDAssemblySyntaxARMUAL)) + m_disassembler_thumb = NULL; + } + else if (llvm_arch == llvm::Triple::thumb) + { + m_disassembler_thumb = m_disassembler; + if (EDGetDisassembler(&m_disassembler, "arm-apple-darwin-unknown", kEDAssemblySyntaxARMUAL)) + m_disassembler = NULL; + } } } @@ -405,7 +418,18 @@ { Address inst_addr (base_addr); inst_addr.Slide(data_offset); - InstructionSP inst_sp (new InstructionLLVM(m_disassembler, inst_addr)); + + bool use_thumb = false; + // If we have a thumb disassembler, then we have an ARM architecture + // so we need to check what the instruction address class is to make + // sure we shouldn't be disassembling as thumb... + if (m_disassembler_thumb) + { + if (inst_addr.GetAddressClass () == eAddressClassCodeAlternateISA) + use_thumb = true; + } + InstructionSP inst_sp (new InstructionLLVM (use_thumb ? m_disassembler_thumb : m_disassembler, + inst_addr)); size_t inst_byte_size = inst_sp->Extract (data, data_offset); Modified: lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h (original) +++ lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h Fri Mar 18 20:12:21 2011 @@ -100,6 +100,7 @@ } EDDisassemblerRef m_disassembler; + EDDisassemblerRef m_disassembler_thumb; }; #endif // liblldb_DisassemblerLLVM_h_ Modified: lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp (original) +++ lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp Fri Mar 18 20:12:21 2011 @@ -29,6 +29,7 @@ using namespace lldb_private; using namespace llvm::MachO; +#define MACHO_NLIST_ARM_SYMBOL_IS_THUMB 0x0008 void ObjectFileMachO::Initialize() @@ -201,6 +202,108 @@ return m_data.GetAddressByteSize (); } +lldb::AddressClass +ObjectFileMachO::GetAddressClass (lldb::addr_t file_addr) +{ + Symtab *symtab = GetSymtab(); + if (symtab) + { + Symbol *symbol = symtab->FindSymbolContainingFileAddress(file_addr); + if (symbol) + { + const AddressRange *range_ptr = symbol->GetAddressRangePtr(); + if (range_ptr) + { + const Section *section = range_ptr->GetBaseAddress().GetSection(); + if (section) + { + const lldb::SectionType section_type = section->GetType(); + switch (section_type) + { + case eSectionTypeInvalid: return eAddressClassUnknown; + case eSectionTypeCode: + if (m_header.cputype == llvm::MachO::CPUTypeARM) + { + // For ARM we have a bit in the n_desc field of the symbol + // that tells us ARM/Thumb which is bit 0x0008. + if (symbol->GetFlags() & MACHO_NLIST_ARM_SYMBOL_IS_THUMB) + return eAddressClassCodeAlternateISA; + } + return eAddressClassCode; + + case eSectionTypeContainer: return eAddressClassUnknown; + case eSectionTypeData: return eAddressClassData; + case eSectionTypeDataCString: return eAddressClassDataConst; + case eSectionTypeDataCStringPointers: return eAddressClassData; + case eSectionTypeDataSymbolAddress: return eAddressClassData; + case eSectionTypeData4: return eAddressClassData; + case eSectionTypeData8: return eAddressClassData; + case eSectionTypeData16: return eAddressClassData; + case eSectionTypeDataPointers: return eAddressClassData; + case eSectionTypeZeroFill: return eAddressClassData; + case eSectionTypeDataObjCMessageRefs: return eAddressClassDataConst; + case eSectionTypeDataObjCCFStrings: return eAddressClassDataConst; + case eSectionTypeDebug: return eAddressClassDebug; + case eSectionTypeDWARFDebugAbbrev: return eAddressClassDebug; + case eSectionTypeDWARFDebugAranges: return eAddressClassDebug; + case eSectionTypeDWARFDebugFrame: return eAddressClassDebug; + case eSectionTypeDWARFDebugInfo: return eAddressClassDebug; + case eSectionTypeDWARFDebugLine: return eAddressClassDebug; + case eSectionTypeDWARFDebugLoc: return eAddressClassDebug; + case eSectionTypeDWARFDebugMacInfo: return eAddressClassDebug; + case eSectionTypeDWARFDebugPubNames: return eAddressClassDebug; + case eSectionTypeDWARFDebugPubTypes: return eAddressClassDebug; + case eSectionTypeDWARFDebugRanges: return eAddressClassDebug; + case eSectionTypeDWARFDebugStr: return eAddressClassDebug; + case eSectionTypeEHFrame: return eAddressClassRuntime; + case eSectionTypeOther: return eAddressClassUnknown; + } + } + } + + const lldb::SymbolType symbol_type = symbol->GetType(); + switch (symbol_type) + { + case eSymbolTypeAny: return eAddressClassUnknown; + case eSymbolTypeAbsolute: return eAddressClassUnknown; + case eSymbolTypeExtern: return eAddressClassUnknown; + + case eSymbolTypeCode: + case eSymbolTypeTrampoline: + if (m_header.cputype == llvm::MachO::CPUTypeARM) + { + // For ARM we have a bit in the n_desc field of the symbol + // that tells us ARM/Thumb which is bit 0x0008. + if (symbol->GetFlags() & MACHO_NLIST_ARM_SYMBOL_IS_THUMB) + return eAddressClassCodeAlternateISA; + } + return eAddressClassCode; + + case eSymbolTypeData: return eAddressClassData; + case eSymbolTypeRuntime: return eAddressClassRuntime; + case eSymbolTypeException: return eAddressClassRuntime; + case eSymbolTypeSourceFile: return eAddressClassDebug; + case eSymbolTypeHeaderFile: return eAddressClassDebug; + case eSymbolTypeObjectFile: return eAddressClassDebug; + case eSymbolTypeCommonBlock: return eAddressClassDebug; + case eSymbolTypeBlock: return eAddressClassDebug; + case eSymbolTypeLocal: return eAddressClassData; + case eSymbolTypeParam: return eAddressClassData; + case eSymbolTypeVariable: return eAddressClassData; + case eSymbolTypeVariableType: return eAddressClassDebug; + case eSymbolTypeLineEntry: return eAddressClassDebug; + case eSymbolTypeLineHeader: return eAddressClassDebug; + case eSymbolTypeScopeBegin: return eAddressClassDebug; + case eSymbolTypeScopeEnd: return eAddressClassDebug; + case eSymbolTypeAdditional: return eAddressClassUnknown; + case eSymbolTypeCompiler: return eAddressClassDebug; + case eSymbolTypeInstrumentation:return eAddressClassDebug; + case eSymbolTypeUndefined: return eAddressClassUnknown; + } + } + } + return eAddressClassUnknown; +} Symtab * ObjectFileMachO::GetSymtab() Modified: lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h (original) +++ lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h Fri Mar 18 20:12:21 2011 @@ -74,6 +74,9 @@ virtual size_t GetAddressByteSize () const; + virtual lldb::AddressClass + GetAddressClass (lldb::addr_t file_addr); + virtual lldb_private::Symtab * GetSymtab(); Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp (original) +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp Fri Mar 18 20:12:21 2011 @@ -10,16 +10,20 @@ #include "PlatformMacOSX.h" // C Includes +#include + // C++ Includes // Other libraries and framework includes // Project includes #include "lldb/Core/Error.h" +#include "lldb/Breakpoint/BreakpointLocation.h" #include "lldb/Core/Module.h" #include "lldb/Core/ModuleList.h" #include "lldb/Core/StreamString.h" #include "lldb/Host/FileSpec.h" #include "lldb/Host/Host.h" #include "lldb/Target/Process.h" +#include "lldb/Target/Target.h" using namespace lldb; using namespace lldb_private; @@ -29,6 +33,7 @@ { #if defined (__APPLE__) PlatformSP default_platform_sp (new PlatformMacOSX()); + default_platform_sp->SetSystemArchitecture (Host::GetArchitecture()); Platform::SetDefaultPlatform (default_platform_sp); #endif } @@ -38,7 +43,6 @@ { } - Error PlatformMacOSX::ResolveExecutable (const FileSpec &exe_file, const ArchSpec &exe_arch, @@ -142,11 +146,58 @@ } +void +PlatformMacOSX::GetStatus (Stream &strm) +{ + char sysctlstring[1024]; + size_t datalen; + int mib[CTL_MAXNAME]; + + uint32_t major = UINT32_MAX; + uint32_t minor = UINT32_MAX; + uint32_t update = UINT32_MAX; + strm.PutCString("Host platform: Mac OS X Native\n"); + if (GetOSVersion(major, minor, update)) + { + strm.Printf("OS version: %u", major); + if (minor != UINT32_MAX) + strm.Printf(".%u", minor); + if (update != UINT32_MAX) + strm.Printf(".%u", update); + + + mib[0] = CTL_KERN; + mib[1] = KERN_OSVERSION; + datalen = sizeof(sysctlstring); + if (::sysctl (mib, 2, sysctlstring, &datalen, NULL, 0) == 0) + { + sysctlstring[datalen] = '\0'; + strm.Printf(" (%s)", sysctlstring); + } + + strm.EOL(); + } + + mib[0] = CTL_KERN; + mib[1] = KERN_VERSION; + datalen = sizeof(sysctlstring); + if (::sysctl (mib, 2, sysctlstring, &datalen, NULL, 0) == 0) + { + sysctlstring[datalen] = '\0'; + strm.Printf("Kernel version: %s\n", sysctlstring); + } +} + + //------------------------------------------------------------------ /// Default Constructor //------------------------------------------------------------------ PlatformMacOSX::PlatformMacOSX () : - Platform() +#if defined (__APPLE__) + Platform(true) // This is the local host platform +#else + Platform(false) // This is a remote platform +#endif { } @@ -197,3 +248,65 @@ } return false; } + +size_t +PlatformMacOSX::GetSoftwareBreakpointTrapOpcode (Target &target, BreakpointSite *bp_site) +{ + const uint8_t *trap_opcode = NULL; + uint32_t trap_opcode_size = 0; + + llvm::Triple::ArchType machine = target.GetArchitecture().GetMachine(); + switch (machine) + { + case llvm::Triple::x86: + case llvm::Triple::x86_64: + { + static const uint8_t g_i386_breakpoint_opcode[] = { 0xCC }; + trap_opcode = g_i386_breakpoint_opcode; + trap_opcode_size = sizeof(g_i386_breakpoint_opcode); + } + break; + + case llvm::Triple::arm: + { + static const uint8_t g_arm_breakpoint_opcode[] = { 0xFE, 0xDE, 0xFF, 0xE7 }; + static const uint8_t g_thumb_breakpooint_opcode[] = { 0xFE, 0xDE }; + + lldb::BreakpointLocationSP bp_loc_sp (bp_site->GetOwnerAtIndex (0)); + if (bp_loc_sp) + { + const AddressClass addr_class = bp_loc_sp->GetAddress().GetAddressClass (); + if (addr_class == eAddressClassCodeAlternateISA) + { + trap_opcode = g_thumb_breakpooint_opcode; + trap_opcode_size = sizeof(g_thumb_breakpooint_opcode); + break; + } + } + trap_opcode = g_arm_breakpoint_opcode; + trap_opcode_size = sizeof(g_arm_breakpoint_opcode); + } + break; + + case llvm::Triple::ppc: + case llvm::Triple::ppc64: + { + static const uint8_t g_ppc_breakpoint_opcode[] = { 0x7F, 0xC0, 0x00, 0x08 }; + trap_opcode = g_ppc_breakpoint_opcode; + trap_opcode_size = sizeof(g_ppc_breakpoint_opcode); + } + break; + + default: + assert(!"Unhandled architecture in ProcessMacOSX::GetSoftwareBreakpointTrapOpcode()"); + break; + } + + if (trap_opcode && trap_opcode_size) + { + if (bp_site->SetTrapOpcode(trap_opcode, trap_opcode_size)) + return trap_opcode_size; + } + return 0; + +} Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformMacOSX.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformMacOSX.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformMacOSX.h (original) +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformMacOSX.h Fri Mar 18 20:12:21 2011 @@ -45,7 +45,7 @@ virtual const char * GetShortPluginName() { - return "platform.macosx"; + return "local-macosx"; } virtual uint32_t @@ -63,6 +63,15 @@ const ArchSpec &arch, lldb::ModuleSP &module_sp); + virtual const char * + GetDescription () + { + return "The native host platform on MacOSX."; + } + + virtual void + GetStatus (Stream &strm); + virtual Error GetFile (const FileSpec &platform_file, FileSpec &local_file); @@ -77,9 +86,10 @@ virtual bool GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch); - protected: - - + virtual size_t + GetSoftwareBreakpointTrapOpcode (Target &target, + BreakpointSite *bp_site); + private: DISALLOW_COPY_AND_ASSIGN (PlatformMacOSX); Added: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp?rev=127934&view=auto ============================================================================== --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp (added) +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp Fri Mar 18 20:12:21 2011 @@ -0,0 +1,613 @@ +//===-- Platform.cpp --------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "PlatformRemoteiOS.h" + +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes +#include "lldb/Breakpoint/BreakpointLocation.h" +#include "lldb/Core/ArchSpec.h" +#include "lldb/Core/Error.h" +#include "lldb/Core/Module.h" +#include "lldb/Core/ModuleList.h" +#include "lldb/Core/PluginManager.h" +#include "lldb/Core/StreamString.h" +#include "lldb/Host/FileSpec.h" +#include "lldb/Host/Host.h" +#include "lldb/Target/Process.h" +#include "lldb/Target/Target.h" + +using namespace lldb; +using namespace lldb_private; + +void +PlatformRemoteiOS::Initialize () +{ + static bool g_initialized = false; + + if (g_initialized == false) + { + g_initialized = true; + PluginManager::RegisterPlugin (GetShortPluginNameStatic(), + GetDescriptionStatic(), + CreateInstance); + } +} + +Platform* +PlatformRemoteiOS::CreateInstance () +{ + return new PlatformRemoteiOS (); +} + +void +PlatformRemoteiOS::Terminate () +{ +} + +const char * +PlatformRemoteiOS::GetPluginNameStatic () +{ + return "PlatformRemoteiOS"; +} + +const char * +PlatformRemoteiOS::GetShortPluginNameStatic() +{ + return "remote-ios"; +} + +const char * +PlatformRemoteiOS::GetDescriptionStatic() +{ + return "Remote iOS platform plug-in."; +} + + +void +PlatformRemoteiOS::GetStatus (Stream &strm) +{ + uint32_t major = UINT32_MAX; + uint32_t minor = UINT32_MAX; + uint32_t update = UINT32_MAX; + const char *sdk_directory = GetDeviceSupportDirectoryForOSVersion(); + strm.PutCString ("Remote platform: iOS platform\n"); + if (GetOSVersion(major, minor, update)) + { + strm.Printf("SDK version: %u", major); + if (minor != UINT32_MAX) + strm.Printf(".%u", minor); + if (update != UINT32_MAX) + strm.Printf(".%u", update); + strm.EOL(); + } + + if (!m_build_update.empty()) + strm.Printf("SDK update: %s\n", m_build_update.c_str()); + + if (sdk_directory) + strm.Printf ("SDK path: \"%s\"\n", sdk_directory); + else + strm.PutCString ("SDK path: error: unable to locate SDK\n"); + + if (IsConnected()) + strm.Printf("Connected to: %s\n", m_remote_url.c_str()); + else + strm.PutCString("Not connected to a remote device.\n"); +} + + +Error +PlatformRemoteiOS::ResolveExecutable (const FileSpec &exe_file, + const ArchSpec &exe_arch, + lldb::ModuleSP &exe_module_sp) +{ + Error error; + // Nothing special to do here, just use the actual file and architecture + + FileSpec resolved_exe_file (exe_file); + + // If we have "ls" as the exe_file, resolve the executable loation based on + // the current path variables + // TODO: resolve bare executables in the Platform SDK +// if (!resolved_exe_file.Exists()) +// resolved_exe_file.ResolveExecutableLocation (); + + // Resolve any executable within a bundle on MacOSX + // TODO: verify that this handles shallow bundles, if not then implement one ourselves + Host::ResolveExecutableInBundle (resolved_exe_file); + + if (resolved_exe_file.Exists()) + { + if (exe_arch.IsValid()) + { + error = ModuleList::GetSharedModule (resolved_exe_file, + exe_arch, + NULL, + NULL, + 0, + exe_module_sp, + NULL, + NULL); + + if (exe_module_sp->GetObjectFile() == NULL) + { + exe_module_sp.reset(); + error.SetErrorStringWithFormat ("'%s%s%s' doesn't contain the architecture %s", + exe_file.GetDirectory().AsCString(""), + exe_file.GetDirectory() ? "/" : "", + exe_file.GetFilename().AsCString(""), + exe_arch.GetArchitectureName()); + } + } + else + { + // No valid architecture was specified, ask the platform for + // the architectures that we should be using (in the correct order) + // and see if we can find a match that way + StreamString arch_names; + ArchSpec platform_arch; + for (uint32_t idx = 0; GetSupportedArchitectureAtIndex (idx, platform_arch); ++idx) + { + error = ModuleList::GetSharedModule (resolved_exe_file, + platform_arch, + NULL, + NULL, + 0, + exe_module_sp, + NULL, + NULL); + // Did we find an executable using one of the + if (error.Success()) + { + if (exe_module_sp && exe_module_sp->GetObjectFile()) + break; + else + error.SetErrorToGenericError(); + } + + if (idx > 0) + arch_names.PutCString (", "); + arch_names.PutCString (platform_arch.GetArchitectureName()); + } + + if (error.Fail() || !exe_module_sp) + { + error.SetErrorStringWithFormat ("'%s%s%s' doesn't contain any '%s' platform architectures: %s", + exe_file.GetDirectory().AsCString(""), + exe_file.GetDirectory() ? "/" : "", + exe_file.GetFilename().AsCString(""), + GetShortPluginName(), + arch_names.GetString().c_str()); + } + } + } + else + { + error.SetErrorStringWithFormat ("'%s%s%s' does not exist", + exe_file.GetDirectory().AsCString(""), + exe_file.GetDirectory() ? "/" : "", + exe_file.GetFilename().AsCString("")); + } + + return error; +} + +const char * +PlatformRemoteiOS::GetDeviceSupportDirectory() +{ + if (m_device_support_directory.empty()) + { + bool developer_dir_path_valid = false; + char developer_dir_path[PATH_MAX]; + FileSpec temp_file_spec; + if (Host::GetLLDBPath (ePathTypeLLDBShlibDir, temp_file_spec)) + { + if (temp_file_spec.GetPath (developer_dir_path, sizeof(developer_dir_path))) + { + char *lib_priv_frameworks = strstr (developer_dir_path, "/Library/PrivateFrameworks/LLDB.framework"); + if (lib_priv_frameworks) + { + *lib_priv_frameworks = '\0'; + developer_dir_path_valid = true; + } + } + } + + if (!developer_dir_path_valid) + { + std::string xcode_dir_path; + const char *xcode_select_prefix_dir = getenv ("XCODE_SELECT_PREFIX_DIR"); + if (xcode_select_prefix_dir) + xcode_dir_path.append (xcode_select_prefix_dir); + xcode_dir_path.append ("/usr/share/xcode-select/xcode_dir_path"); + temp_file_spec.SetFile(xcode_dir_path.c_str(), false); + size_t bytes_read = temp_file_spec.ReadFileContents(0, developer_dir_path, sizeof(developer_dir_path)); + if (bytes_read > 0) + { + developer_dir_path[bytes_read] = '\0'; + while (developer_dir_path[bytes_read-1] == '\r' || + developer_dir_path[bytes_read-1] == '\n') + developer_dir_path[--bytes_read] = '\0'; + developer_dir_path_valid = true; + } + } + + if (developer_dir_path_valid) + { + temp_file_spec.SetFile (developer_dir_path, false); + if (temp_file_spec.Exists()) + { + m_device_support_directory.assign (developer_dir_path); + return m_device_support_directory.c_str(); + } + } + // Assign a single NULL character so we know we tried to find the device + // support directory and we don't keep trying to find it over and over. + m_device_support_directory.assign (1, '\0'); + } + + // We should have put a single NULL character into m_device_support_directory + // or it should have a valid path if the code gets here + assert (m_device_support_directory.empty() == false); + if (m_device_support_directory[0]) + return m_device_support_directory.c_str(); + return NULL; +} + +const char * +PlatformRemoteiOS::GetDeviceSupportDirectoryForOSVersion() +{ + if (m_device_support_directory_for_os_version.empty()) + { + const char *device_support_dir = GetDeviceSupportDirectory(); + const bool resolve_path = true; + if (device_support_dir) + { + m_device_support_directory_for_os_version.assign (device_support_dir); + m_device_support_directory_for_os_version.append ("/Platforms/iPhoneOS.platform/DeviceSupport"); + + uint32_t major = 0; + uint32_t minor = 0; + uint32_t update = 0; + FileSpec file_spec; + char resolved_path[PATH_MAX]; + if (GetOSVersion(major, minor, update)) + { + if (major != UINT32_MAX && minor != UINT32_MAX && update != UINT32_MAX) + { + ::snprintf (resolved_path, + sizeof(resolved_path), + "%s/%i.%i.%i", + m_device_support_directory_for_os_version.c_str(), + major, + minor, + update); + + file_spec.SetFile(resolved_path, resolve_path); + if (file_spec.Exists() && file_spec.GetPath(resolved_path, sizeof(resolved_path))) + { + m_device_support_directory_for_os_version.assign (resolved_path); + return m_device_support_directory_for_os_version.c_str(); + } + } + + if (major != UINT32_MAX && minor != UINT32_MAX) + { + ::snprintf (resolved_path, + sizeof(resolved_path), + "%s/%i.%i", + m_device_support_directory_for_os_version.c_str(), + major, + minor, + update); + + file_spec.SetFile(resolved_path, resolve_path); + if (file_spec.Exists() && file_spec.GetPath(resolved_path, sizeof(resolved_path))) + { + m_device_support_directory_for_os_version.assign (resolved_path); + return m_device_support_directory_for_os_version.c_str(); + } + } + } + else + { + // Use the default as we have no OS version selected + m_device_support_directory_for_os_version.append ("/Latest"); + file_spec.SetFile(m_device_support_directory_for_os_version.c_str(), resolve_path); + + if (file_spec.Exists() && file_spec.GetPath(resolved_path, sizeof(resolved_path))) + { + if (m_major_os_version == UINT32_MAX) + { + const char *resolved_latest_dirname = file_spec.GetFilename().GetCString(); + const char *pos = Args::StringToVersion (resolved_latest_dirname, + m_major_os_version, + m_minor_os_version, + m_update_os_version); + + if (m_build_update.empty() && pos[0] == ' ' && pos[1] == '(') + { + const char *end_paren = strchr (pos + 2, ')'); + m_build_update.assign (pos + 2, end_paren); + } + } + m_device_support_directory_for_os_version.assign (resolved_path); + return m_device_support_directory_for_os_version.c_str(); + } + } + } + // Assign a single NULL character so we know we tried to find the device + // support directory and we don't keep trying to find it over and over. + m_device_support_directory_for_os_version.assign (1, '\0'); + } + // We should have put a single NULL character into m_device_support_directory_for_os_version + // or it should have a valid path if the code gets here + assert (m_device_support_directory_for_os_version.empty() == false); + if (m_device_support_directory_for_os_version[0]) + return m_device_support_directory_for_os_version.c_str(); + return NULL; +} + +Error +PlatformRemoteiOS::GetFile (const FileSpec &platform_file, + FileSpec &local_file) +{ + Error error; + char platform_file_path[PATH_MAX]; + if (platform_file.GetPath(platform_file_path, sizeof(platform_file_path))) + { + char resolved_path[PATH_MAX]; + + const char * os_version_dir = GetDeviceSupportDirectoryForOSVersion(); + if (os_version_dir) + { + ::snprintf (resolved_path, + sizeof(resolved_path), + "%s/Symbols.Internal/%s", + os_version_dir, + platform_file_path); + + local_file.SetFile(resolved_path, true); + if (local_file.Exists()) + return error; + ::snprintf (resolved_path, + sizeof(resolved_path), + "%s/Symbols/%s", + os_version_dir, + platform_file_path); + + local_file.SetFile(resolved_path, true); + if (local_file.Exists()) + return error; + + } + local_file = platform_file; + if (local_file.Exists()) + return error; + + error.SetErrorStringWithFormat ("unable to locate a platform file for '%s' in platform '%s'", + platform_file_path, + GetPluginName()); + } + else + { + error.SetErrorString ("invalid platform file argument"); + } + return error; +} + +//------------------------------------------------------------------ +/// Default Constructor +//------------------------------------------------------------------ +PlatformRemoteiOS::PlatformRemoteiOS () : + Platform(false), // This is a remote platform + m_device_support_directory (), + m_device_support_directory_for_os_version () +{ +} + +//------------------------------------------------------------------ +/// Destructor. +/// +/// The destructor is virtual since this class is designed to be +/// inherited from by the plug-in instance. +//------------------------------------------------------------------ +PlatformRemoteiOS::~PlatformRemoteiOS() +{ +} + +uint32_t +PlatformRemoteiOS::FindProcessesByName (const char *name_match, + lldb::NameMatchType name_match_type, + ProcessInfoList &process_infos) +{ + // TODO: if connected, send a packet to get the remote process infos by name + process_infos.Clear(); + return 0; +} + +bool +PlatformRemoteiOS::GetProcessInfo (lldb::pid_t pid, ProcessInfo &process_info) +{ + // TODO: if connected, send a packet to get the remote process info + process_info.Clear(); + return false; +} + +bool +PlatformRemoteiOS::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch) +{ + ArchSpec system_arch (GetSystemArchitecture()); + const ArchSpec::Core system_core = system_arch.GetCore(); + switch (system_core) + { + default: + switch (idx) + { + case 0: arch.SetTriple ("armv7-apple-darwin"); return true; + case 1: arch.SetTriple ("armv7f-apple-darwin"); return true; + case 2: arch.SetTriple ("armv7k-apple-darwin"); return true; + case 3: arch.SetTriple ("armv7s-apple-darwin"); return true; + case 4: arch.SetTriple ("armv6-apple-darwin"); return true; + case 5: arch.SetTriple ("armv5-apple-darwin"); return true; + case 6: arch.SetTriple ("armv4-apple-darwin"); return true; + case 7: arch.SetTriple ("arm-apple-darwin"); return true; + default: break; + } + break; + + case ArchSpec::eCore_arm_armv7f: + switch (idx) + { + case 0: arch.SetTriple ("armv7f-apple-darwin"); return true; + case 1: arch.SetTriple ("armv7-apple-darwin"); return true; + case 2: arch.SetTriple ("armv6-apple-darwin"); return true; + case 3: arch.SetTriple ("armv5-apple-darwin"); return true; + case 4: arch.SetTriple ("armv4-apple-darwin"); return true; + case 5: arch.SetTriple ("arm-apple-darwin"); return true; + default: break; + } + break; + + case ArchSpec::eCore_arm_armv7k: + switch (idx) + { + case 0: arch.SetTriple ("armv7k-apple-darwin"); return true; + case 1: arch.SetTriple ("armv7-apple-darwin"); return true; + case 2: arch.SetTriple ("armv6-apple-darwin"); return true; + case 3: arch.SetTriple ("armv5-apple-darwin"); return true; + case 4: arch.SetTriple ("armv4-apple-darwin"); return true; + case 5: arch.SetTriple ("arm-apple-darwin"); return true; + default: break; + } + break; + + case ArchSpec::eCore_arm_armv7s: + switch (idx) + { + case 0: arch.SetTriple ("armv7s-apple-darwin"); return true; + case 1: arch.SetTriple ("armv7-apple-darwin"); return true; + case 2: arch.SetTriple ("armv6-apple-darwin"); return true; + case 3: arch.SetTriple ("armv5-apple-darwin"); return true; + case 4: arch.SetTriple ("armv4-apple-darwin"); return true; + case 5: arch.SetTriple ("arm-apple-darwin"); return true; + default: break; + } + break; + + case ArchSpec::eCore_arm_armv7: + switch (idx) + { + case 0: arch.SetTriple ("armv7-apple-darwin"); return true; + case 1: arch.SetTriple ("armv6-apple-darwin"); return true; + case 2: arch.SetTriple ("armv5-apple-darwin"); return true; + case 3: arch.SetTriple ("armv4-apple-darwin"); return true; + case 4: arch.SetTriple ("arm-apple-darwin"); return true; + default: break; + } + break; + + case ArchSpec::eCore_arm_armv6: + switch (idx) + { + case 0: arch.SetTriple ("armv6-apple-darwin"); return true; + case 1: arch.SetTriple ("armv5-apple-darwin"); return true; + case 2: arch.SetTriple ("armv4-apple-darwin"); return true; + case 3: arch.SetTriple ("arm-apple-darwin"); return true; + default: break; + } + break; + + case ArchSpec::eCore_arm_armv5: + switch (idx) + { + case 0: arch.SetTriple ("armv5-apple-darwin"); return true; + case 1: arch.SetTriple ("armv4-apple-darwin"); return true; + case 2: arch.SetTriple ("arm-apple-darwin"); return true; + default: break; + } + break; + + case ArchSpec::eCore_arm_armv4: + switch (idx) + { + case 0: arch.SetTriple ("armv4-apple-darwin"); return true; + case 1: arch.SetTriple ("arm-apple-darwin"); return true; + default: break; + } + break; + } + arch.Clear(); + return false; +} + +size_t +PlatformRemoteiOS::GetSoftwareBreakpointTrapOpcode (Target &target, BreakpointSite *bp_site) +{ + const uint8_t *trap_opcode = NULL; + uint32_t trap_opcode_size = 0; + + llvm::Triple::ArchType machine = target.GetArchitecture().GetMachine(); + switch (machine) + { + case llvm::Triple::x86: + case llvm::Triple::x86_64: + { + static const uint8_t g_i386_breakpoint_opcode[] = { 0xCC }; + trap_opcode = g_i386_breakpoint_opcode; + trap_opcode_size = sizeof(g_i386_breakpoint_opcode); + } + break; + + case llvm::Triple::arm: + { + static const uint8_t g_arm_breakpoint_opcode[] = { 0xFE, 0xDE, 0xFF, 0xE7 }; + static const uint8_t g_thumb_breakpooint_opcode[] = { 0xFE, 0xDE }; + + lldb::BreakpointLocationSP bp_loc_sp (bp_site->GetOwnerAtIndex (0)); + if (bp_loc_sp) + { + const AddressClass addr_class = bp_loc_sp->GetAddress().GetAddressClass (); + if (addr_class == eAddressClassCodeAlternateISA) + { + trap_opcode = g_thumb_breakpooint_opcode; + trap_opcode_size = sizeof(g_thumb_breakpooint_opcode); + break; + } + } + trap_opcode = g_arm_breakpoint_opcode; + trap_opcode_size = sizeof(g_arm_breakpoint_opcode); + } + break; + + case llvm::Triple::ppc: + case llvm::Triple::ppc64: + { + static const uint8_t g_ppc_breakpoint_opcode[] = { 0x7F, 0xC0, 0x00, 0x08 }; + trap_opcode = g_ppc_breakpoint_opcode; + trap_opcode_size = sizeof(g_ppc_breakpoint_opcode); + } + break; + + default: + assert(!"Unhandled architecture in ProcessMacOSX::GetSoftwareBreakpointTrapOpcode()"); + break; + } + + if (trap_opcode && trap_opcode_size) + { + if (bp_site->SetTrapOpcode(trap_opcode, trap_opcode_size)) + return trap_opcode_size; + } + return 0; + +} Added: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h?rev=127934&view=auto ============================================================================== --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h (added) +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h Fri Mar 18 20:12:21 2011 @@ -0,0 +1,123 @@ +//===-- PlatformRemoteiOS.h ----------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_PlatformRemoteiOS_h_ +#define liblldb_PlatformRemoteiOS_h_ + +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes +#include "lldb/Target/Platform.h" + +namespace lldb_private { + + class PlatformRemoteiOS : public Platform + { + public: + + static Platform* + CreateInstance (); + + static void + Initialize (); + + static void + Terminate (); + + PlatformRemoteiOS (); + + virtual + ~PlatformRemoteiOS(); + + //------------------------------------------------------------ + // lldb_private::PluginInterface functions + //------------------------------------------------------------ + + static const char * + GetPluginNameStatic (); + + static const char * + GetShortPluginNameStatic(); + + static const char * + GetDescriptionStatic(); + + virtual const char * + GetPluginName() + { + return GetPluginNameStatic(); + } + + virtual const char * + GetShortPluginName() + { + return GetShortPluginNameStatic(); + } + + virtual uint32_t + GetPluginVersion() + { + return 1; + } + + //------------------------------------------------------------ + // lldb_private::Platform functions + //------------------------------------------------------------ + virtual Error + ResolveExecutable (const FileSpec &exe_file, + const ArchSpec &arch, + lldb::ModuleSP &module_sp); + + virtual const char * + GetDescription () + { + return GetDescriptionStatic(); + } + + virtual void + GetStatus (Stream &strm); + + virtual Error + GetFile (const FileSpec &platform_file, FileSpec &local_file); + + virtual uint32_t + FindProcessesByName (const char *name_match, + lldb::NameMatchType name_match_type, + ProcessInfoList &process_infos); + + virtual bool + GetProcessInfo (lldb::pid_t pid, ProcessInfo &proc_info); + + virtual bool + GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch); + + virtual size_t + GetSoftwareBreakpointTrapOpcode (Target &target, + BreakpointSite *bp_site); + + protected: + std::string m_device_support_directory; + std::string m_device_support_directory_for_os_version; + std::string m_build_update; + //std::vector m_device_support_os_dirs; + + const char * + GetDeviceSupportDirectory(); + + const char * + GetDeviceSupportDirectoryForOSVersion(); + + private: + DISALLOW_COPY_AND_ASSIGN (PlatformRemoteiOS); + + }; +} // namespace lldb_private + +#endif // liblldb_Platform_h_ Modified: lldb/trunk/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.cpp (original) +++ lldb/trunk/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.cpp Fri Mar 18 20:12:21 2011 @@ -183,7 +183,7 @@ const char * ProcessMacOSX::GetPluginNameStatic() { - return "process.macosx"; + return "macosx-user"; } const char * @@ -455,52 +455,6 @@ return error; } -size_t -ProcessMacOSX::GetSoftwareBreakpointTrapOpcode (BreakpointSite* bp_site) -{ - const uint8_t *trap_opcode = NULL; - uint32_t trap_opcode_size = 0; - - static const uint8_t g_arm_breakpoint_opcode[] = { 0xFE, 0xDE, 0xFF, 0xE7 }; - //static const uint8_t g_thumb_breakpooint_opcode[] = { 0xFE, 0xDE }; - static const uint8_t g_ppc_breakpoint_opcode[] = { 0x7F, 0xC0, 0x00, 0x08 }; - static const uint8_t g_i386_breakpoint_opcode[] = { 0xCC }; - - llvm::Triple::ArchType machine = m_arch_spec.GetMachine(); - switch (machine) - { - case llvm::Triple::x86: - case llvm::Triple::x86_64: - trap_opcode = g_i386_breakpoint_opcode; - trap_opcode_size = sizeof(g_i386_breakpoint_opcode); - break; - - case llvm::Triple::arm: - // TODO: fill this in for ARM. We need to dig up the symbol for - // the address in the breakpoint locaiton and figure out if it is - // an ARM or Thumb breakpoint. - trap_opcode = g_arm_breakpoint_opcode; - trap_opcode_size = sizeof(g_arm_breakpoint_opcode); - break; - - case llvm::Triple::ppc: - case llvm::Triple::ppc64: - trap_opcode = g_ppc_breakpoint_opcode; - trap_opcode_size = sizeof(g_ppc_breakpoint_opcode); - break; - - default: - assert(!"Unhandled architecture in ProcessMacOSX::GetSoftwareBreakpointTrapOpcode()"); - break; - } - - if (trap_opcode && trap_opcode_size) - { - if (bp_site->SetTrapOpcode(trap_opcode, trap_opcode_size)) - return trap_opcode_size; - } - return 0; -} uint32_t ProcessMacOSX::UpdateThreadListIfNeeded () { Modified: lldb/trunk/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.h (original) +++ lldb/trunk/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.h Fri Mar 18 20:12:21 2011 @@ -192,12 +192,6 @@ //---------------------------------------------------------------------- // Process Breakpoints //---------------------------------------------------------------------- - virtual size_t - GetSoftwareBreakpointTrapOpcode (lldb_private::BreakpointSite *bp_site); - - //---------------------------------------------------------------------- - // Process Breakpoints - //---------------------------------------------------------------------- virtual lldb_private::Error EnableBreakpoint (lldb_private::BreakpointSite *bp_site); Modified: lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp (original) +++ lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp Fri Mar 18 20:12:21 2011 @@ -63,7 +63,7 @@ const char * ProcessGDBRemote::GetPluginNameStatic() { - return "process.gdb-remote"; + return "gdb-remote"; } const char * @@ -1025,53 +1025,6 @@ return error; } -size_t -ProcessGDBRemote::GetSoftwareBreakpointTrapOpcode (BreakpointSite* bp_site) -{ - const uint8_t *trap_opcode = NULL; - uint32_t trap_opcode_size = 0; - - static const uint8_t g_arm_breakpoint_opcode[] = { 0xFE, 0xDE, 0xFF, 0xE7 }; - //static const uint8_t g_thumb_breakpooint_opcode[] = { 0xFE, 0xDE }; - static const uint8_t g_ppc_breakpoint_opcode[] = { 0x7F, 0xC0, 0x00, 0x08 }; - static const uint8_t g_i386_breakpoint_opcode[] = { 0xCC }; - - const llvm::Triple::ArchType machine = GetTarget().GetArchitecture().GetMachine(); - switch (machine) - { - case llvm::Triple::x86: - case llvm::Triple::x86_64: - trap_opcode = g_i386_breakpoint_opcode; - trap_opcode_size = sizeof(g_i386_breakpoint_opcode); - break; - - case llvm::Triple::arm: - // TODO: fill this in for ARM. We need to dig up the symbol for - // the address in the breakpoint locaiton and figure out if it is - // an ARM or Thumb breakpoint. - trap_opcode = g_arm_breakpoint_opcode; - trap_opcode_size = sizeof(g_arm_breakpoint_opcode); - break; - - case llvm::Triple::ppc: - case llvm::Triple::ppc64: - trap_opcode = g_ppc_breakpoint_opcode; - trap_opcode_size = sizeof(g_ppc_breakpoint_opcode); - break; - - default: - assert(!"Unhandled architecture in ProcessMacOSX::GetSoftwareBreakpointTrapOpcode()"); - break; - } - - if (trap_opcode && trap_opcode_size) - { - if (bp_site->SetTrapOpcode(trap_opcode, trap_opcode_size)) - return trap_opcode_size; - } - return 0; -} - uint32_t ProcessGDBRemote::UpdateThreadListIfNeeded () { Modified: lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h (original) +++ lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h Fri Mar 18 20:12:21 2011 @@ -189,12 +189,6 @@ //---------------------------------------------------------------------- // Process Breakpoints //---------------------------------------------------------------------- - virtual size_t - GetSoftwareBreakpointTrapOpcode (lldb_private::BreakpointSite *bp_site); - - //---------------------------------------------------------------------- - // Process Breakpoints - //---------------------------------------------------------------------- virtual lldb_private::Error EnableBreakpoint (lldb_private::BreakpointSite *bp_site); Modified: lldb/trunk/source/Symbol/ObjectFile.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ObjectFile.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Symbol/ObjectFile.cpp (original) +++ lldb/trunk/source/Symbol/ObjectFile.cpp Fri Mar 18 20:12:21 2011 @@ -102,3 +102,88 @@ return m_module->SetArchitecture (new_arch); } +lldb::AddressClass +ObjectFile::GetAddressClass (lldb::addr_t file_addr) +{ + Symtab *symtab = GetSymtab(); + if (symtab) + { + Symbol *symbol = symtab->FindSymbolContainingFileAddress(file_addr); + if (symbol) + { + const AddressRange *range_ptr = symbol->GetAddressRangePtr(); + if (range_ptr) + { + const Section *section = range_ptr->GetBaseAddress().GetSection(); + if (section) + { + const lldb::SectionType section_type = section->GetType(); + switch (section_type) + { + case eSectionTypeInvalid: return eAddressClassUnknown; + case eSectionTypeCode: return eAddressClassCode; + case eSectionTypeContainer: return eAddressClassUnknown; + case eSectionTypeData: return eAddressClassData; + case eSectionTypeDataCString: return eAddressClassDataConst; + case eSectionTypeDataCStringPointers: return eAddressClassData; + case eSectionTypeDataSymbolAddress: return eAddressClassData; + case eSectionTypeData4: return eAddressClassData; + case eSectionTypeData8: return eAddressClassData; + case eSectionTypeData16: return eAddressClassData; + case eSectionTypeDataPointers: return eAddressClassData; + case eSectionTypeZeroFill: return eAddressClassData; + case eSectionTypeDataObjCMessageRefs: return eAddressClassDataConst; + case eSectionTypeDataObjCCFStrings: return eAddressClassDataConst; + case eSectionTypeDebug: return eAddressClassDebug; + case eSectionTypeDWARFDebugAbbrev: return eAddressClassDebug; + case eSectionTypeDWARFDebugAranges: return eAddressClassDebug; + case eSectionTypeDWARFDebugFrame: return eAddressClassDebug; + case eSectionTypeDWARFDebugInfo: return eAddressClassDebug; + case eSectionTypeDWARFDebugLine: return eAddressClassDebug; + case eSectionTypeDWARFDebugLoc: return eAddressClassDebug; + case eSectionTypeDWARFDebugMacInfo: return eAddressClassDebug; + case eSectionTypeDWARFDebugPubNames: return eAddressClassDebug; + case eSectionTypeDWARFDebugPubTypes: return eAddressClassDebug; + case eSectionTypeDWARFDebugRanges: return eAddressClassDebug; + case eSectionTypeDWARFDebugStr: return eAddressClassDebug; + case eSectionTypeEHFrame: return eAddressClassRuntime; + case eSectionTypeOther: return eAddressClassUnknown; + } + } + } + + const lldb::SymbolType symbol_type = symbol->GetType(); + switch (symbol_type) + { + case eSymbolTypeAny: return eAddressClassUnknown; + case eSymbolTypeAbsolute: return eAddressClassUnknown; + case eSymbolTypeExtern: return eAddressClassUnknown; + case eSymbolTypeCode: return eAddressClassCode; + case eSymbolTypeTrampoline: return eAddressClassCode; + case eSymbolTypeData: return eAddressClassData; + case eSymbolTypeRuntime: return eAddressClassRuntime; + case eSymbolTypeException: return eAddressClassRuntime; + case eSymbolTypeSourceFile: return eAddressClassDebug; + case eSymbolTypeHeaderFile: return eAddressClassDebug; + case eSymbolTypeObjectFile: return eAddressClassDebug; + case eSymbolTypeCommonBlock: return eAddressClassDebug; + case eSymbolTypeBlock: return eAddressClassDebug; + case eSymbolTypeLocal: return eAddressClassData; + case eSymbolTypeParam: return eAddressClassData; + case eSymbolTypeVariable: return eAddressClassData; + case eSymbolTypeVariableType: return eAddressClassDebug; + case eSymbolTypeLineEntry: return eAddressClassDebug; + case eSymbolTypeLineHeader: return eAddressClassDebug; + case eSymbolTypeScopeBegin: return eAddressClassDebug; + case eSymbolTypeScopeEnd: return eAddressClassDebug; + case eSymbolTypeAdditional: return eAddressClassUnknown; + case eSymbolTypeCompiler: return eAddressClassDebug; + case eSymbolTypeInstrumentation:return eAddressClassDebug; + case eSymbolTypeUndefined: return eAddressClassUnknown; + } + } + } + return eAddressClassUnknown; +} + + Modified: lldb/trunk/source/Target/Platform.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Platform.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Target/Platform.cpp (original) +++ lldb/trunk/source/Target/Platform.cpp Fri Mar 18 20:12:21 2011 @@ -16,6 +16,7 @@ #include "lldb/Core/Error.h" #include "lldb/Core/PluginManager.h" #include "lldb/Host/FileSpec.h" +#include "lldb/Host/Host.h" #include "lldb/Target/Target.h" using namespace lldb; @@ -30,13 +31,6 @@ return g_default_platform_sp; } -static PlatformSP& -GetSelectedPlatformSP () -{ - static PlatformSP g_selected_platform_sp; - return g_selected_platform_sp; -} - static Mutex & GetConnectedPlatformListMutex () { @@ -74,24 +68,6 @@ GetDefaultPlatformSP () = platform_sp; } -PlatformSP -Platform::GetSelectedPlatform () -{ - PlatformSP platform_sp (GetSelectedPlatformSP ()); - if (!platform_sp) - platform_sp = GetDefaultPlatform (); - return platform_sp; -} - -void -Platform::SetSelectedPlatform (const lldb::PlatformSP &platform_sp) -{ - // The native platform should use its static void Platform::Initialize() - // function to register itself as the native platform. - GetSelectedPlatformSP () = platform_sp; -} - - Error Platform::GetFile (const FileSpec &platform_file, FileSpec &local_file) { @@ -102,26 +78,20 @@ PlatformSP -Platform::ConnectRemote (const char *platform_name, const char *remote_connect_url, Error &error) +Platform::Create (const char *platform_name, Error &error) { PlatformCreateInstance create_callback = NULL; lldb::PlatformSP platform_sp; - if (platform_name) + if (platform_name && platform_name[0]) { create_callback = PluginManager::GetPlatformCreateCallbackForPluginName (platform_name); if (create_callback) - { platform_sp.reset(create_callback()); - if (platform_sp) - error = platform_sp->ConnectRemote (remote_connect_url); - else - error.SetErrorStringWithFormat ("unable to create a platform instance of \"%s\"", platform_name); - } else - error.SetErrorStringWithFormat ("invalid platform name \"%s\"", platform_name); + error.SetErrorStringWithFormat ("unable to find a plug-in for the platform named \"%s\"", platform_name); } else - error.SetErrorString ("Empty platform name"); + error.SetErrorString ("invalid platform name"); return platform_sp; } @@ -147,8 +117,15 @@ //------------------------------------------------------------------ /// Default Constructor //------------------------------------------------------------------ -Platform::Platform () : - m_remote_url () +Platform::Platform (bool is_host) : + m_is_host (is_host), + m_is_connected (is_host), // If this is the default host platform, then we are always connected + m_os_version_set_while_connected (false), + m_system_arch_set_while_connected (false), + m_remote_url (), + m_major_os_version (UINT32_MAX), + m_minor_os_version (UINT32_MAX), + m_update_os_version (UINT32_MAX) { } @@ -162,6 +139,98 @@ { } + +bool +Platform::GetOSVersion (uint32_t &major, + uint32_t &minor, + uint32_t &update) +{ + bool success = m_major_os_version != UINT32_MAX; + if (IsHost()) + { + if (!success) + { + // We have a local host platform + success = Host::GetOSVersion (m_major_os_version, + m_minor_os_version, + m_update_os_version); + m_os_version_set_while_connected = success; + } + } + else + { + // We have a remote platform. We can only fetch the remote + // OS version if we are connected, and we don't want to do it + // more than once. + + const bool is_connected = IsConnected(); + + bool fetch_os_version = false; + if (success) + { + // We have valid OS version info, check to make sure it wasn't + // manually set prior to connecting. If it was manually set prior + // to connecting, then lets fetch the actual OS version info + // if we are now connected. + if (is_connected && !m_os_version_set_while_connected) + fetch_os_version = true; + } + else + { + // We don't have valid OS version info, fetch it if we are connected + fetch_os_version = is_connected; + } + + if (fetch_os_version) + { + success = FetchRemoteOSVersion (); + m_os_version_set_while_connected = success; + } + } + + if (success) + { + major = m_major_os_version; + minor = m_minor_os_version; + update = m_update_os_version; + } + return success; +} + +bool +Platform::SetOSVersion (uint32_t major, + uint32_t minor, + uint32_t update) +{ + if (IsHost()) + { + // We don't need anyone setting the OS version for the host platform, + // we should be able to figure it out by calling Host::GetOSVersion(...). + return false; + } + else + { + // We have a remote platform, allow setting the target OS version if + // we aren't connected, since if we are connected, we should be able to + // request the remote OS version from the connected platform. + if (IsConnected()) + return false; + else + { + // We aren't connected and we might want to set the OS version + // ahead of time before we connect so we can peruse files and + // use a local SDK or PDK cache of support files to disassemble + // or do other things. + m_major_os_version = major; + m_minor_os_version = minor; + m_update_os_version = update; + return true; + } + } + return false; +} + + Error Platform::ResolveExecutable (const FileSpec &exe_file, const ArchSpec &exe_arch, @@ -213,6 +282,53 @@ return error; } + +const ArchSpec & +Platform::GetSystemArchitecture() +{ + if (IsHost()) + { + if (!m_system_arch.IsValid()) + { + // We have a local host platform + m_system_arch = Host::GetArchitecture(); + m_system_arch_set_while_connected = m_system_arch.IsValid(); + } + } + else + { + // We have a remote platform. We can only fetch the remote + // system architecture if we are connected, and we don't want to do it + // more than once. + + const bool is_connected = IsConnected(); + + bool fetch = false; + if (m_system_arch.IsValid()) + { + // We have valid OS version info, check to make sure it wasn't + // manually set prior to connecting. If it was manually set prior + // to connecting, then lets fetch the actual OS version info + // if we are now connected. + if (is_connected && !m_system_arch_set_while_connected) + fetch = true; + } + else + { + // We don't have valid OS version info, fetch it if we are connected + fetch = is_connected; + } + + if (fetch) + { + m_system_arch = FetchRemoteSystemArchitecture (); + m_system_arch_set_while_connected = m_system_arch.IsValid(); + } + } + return m_system_arch; +} + + Error Platform::ConnectRemote (const char *remote_url) { Modified: lldb/trunk/source/Target/Process.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Process.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Target/Process.cpp (original) +++ lldb/trunk/source/Target/Process.cpp Fri Mar 18 20:12:21 2011 @@ -1037,6 +1037,16 @@ } + +size_t +Process::GetSoftwareBreakpointTrapOpcode (BreakpointSite* bp_site) +{ + PlatformSP platform_sp (m_target.GetPlatform()); + if (platform_sp) + return platform_sp->GetSoftwareBreakpointTrapOpcode (m_target, bp_site); + return 0; +} + Error Process::EnableSoftwareBreakpoint (BreakpointSite *bp_site) { @@ -1661,7 +1671,7 @@ // of the current Target, and if not adjust it. ProcessInfo process_info; - PlatformSP platform_sp (Platform::GetSelectedPlatform ()); + PlatformSP platform_sp (m_target.GetDebugger().GetPlatformList().GetSelectedPlatform ()); if (platform_sp) { if (platform_sp->GetProcessInfo (attach_pid, process_info)) @@ -1714,7 +1724,7 @@ if (!wait_for_launch) { ProcessInfoList process_infos; - PlatformSP platform_sp (Platform::GetSelectedPlatform ()); + PlatformSP platform_sp (m_target.GetDebugger().GetPlatformList().GetSelectedPlatform ()); if (platform_sp) { platform_sp->FindProcessesByName (process_name, eNameMatchEquals, process_infos); Modified: lldb/trunk/source/Target/Target.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Target.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Target/Target.cpp (original) +++ lldb/trunk/source/Target/Target.cpp Fri Mar 18 20:12:21 2011 @@ -39,8 +39,9 @@ //---------------------------------------------------------------------- // Target constructor //---------------------------------------------------------------------- -Target::Target(Debugger &debugger) : +Target::Target(Debugger &debugger, const lldb::PlatformSP &platform_sp) : Broadcaster("lldb.target"), + m_platform_sp (platform_sp), TargetInstanceSettings (*GetSettingsController()), m_debugger (debugger), m_mutex (Mutex::eMutexTypeRecursive), @@ -418,33 +419,21 @@ FileSpecList dependent_files; ObjectFile *executable_objfile = executable_sp->GetObjectFile(); - assert (executable_objfile); - // TODO: remote assertion above after verifying that it doesn't fire off - // after the platform changes. The platform is what should be selecting - // the right slice of an executable file, and it also should be the one - // to resolve any executables in their bundles. -// if (executable_objfile == NULL) -// { -// -// FileSpec bundle_executable(executable_sp->GetFileSpec()); -// if (Host::ResolveExecutableInBundle (bundle_executable)) -// { -// ModuleSP bundle_exe_module_sp(GetSharedModule(bundle_executable, -// exe_arch)); -// SetExecutableModule (bundle_exe_module_sp, get_dependent_files); -// if (bundle_exe_module_sp->GetObjectFile() != NULL) -// executable_sp = bundle_exe_module_sp; -// return; -// } -// } if (executable_objfile) { executable_objfile->GetDependentModules(dependent_files); for (uint32_t i=0; iGetFile (dependent_file_spec, platform_dependent_file_spec); + else + platform_dependent_file_spec = dependent_file_spec; + + ModuleSP image_module_sp(GetSharedModule (platform_dependent_file_spec, + exe_arch)); if (image_module_sp.get()) { //image_module_sp->Dump(&s);// REMOVE THIS, DEBUG ONLY Modified: lldb/trunk/source/Target/TargetList.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/TargetList.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/Target/TargetList.cpp (original) +++ lldb/trunk/source/Target/TargetList.cpp Fri Mar 18 20:12:21 2011 @@ -12,6 +12,7 @@ // Other libraries and framework includes // Project includes #include "lldb/Core/Broadcaster.h" +#include "lldb/Core/Debugger.h" #include "lldb/Core/Event.h" #include "lldb/Core/State.h" #include "lldb/Core/Timer.h" @@ -60,6 +61,8 @@ file.GetFilename().AsCString(), arch.GetArchitectureName()); Error error; + + PlatformSP platform_sp (debugger.GetPlatformList().GetSelectedPlatform ()); if (file) { @@ -67,7 +70,6 @@ FileSpec resolved_file(file); ArchSpec platform_arch; - PlatformSP platform_sp (Platform::GetSelectedPlatform ()); if (platform_sp) error = platform_sp->ResolveExecutable (file, arch, exe_module_sp); @@ -92,7 +94,7 @@ } return error; } - target_sp.reset(new Target(debugger)); + target_sp.reset(new Target(debugger, platform_sp)); target_sp->SetExecutableModule (exe_module_sp, get_dependent_files); } } @@ -100,7 +102,7 @@ { // No file was specified, just create an empty target with any arch // if a valid arch was specified - target_sp.reset(new Target(debugger)); + target_sp.reset(new Target(debugger, platform_sp)); if (arch.IsValid()) target_sp->SetArchitecture(arch); } Modified: lldb/trunk/source/lldb.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/lldb.cpp?rev=127934&r1=127933&r2=127934&view=diff ============================================================================== --- lldb/trunk/source/lldb.cpp (original) +++ lldb/trunk/source/lldb.cpp Fri Mar 18 20:12:21 2011 @@ -46,6 +46,7 @@ #include "Plugins/Process/MacOSX-User/source/ProcessMacOSX.h" #include "Plugins/Process/gdb-remote/ProcessGDBRemote.h" #include "Plugins/Platform/MacOSX/PlatformMacOSX.h" +#include "Plugins/Platform/MacOSX/PlatformRemoteiOS.h" #endif #if defined (__linux__) @@ -100,6 +101,7 @@ //ProcessMacOSX::Initialize(); SymbolVendorMacOSX::Initialize(); PlatformMacOSX::Initialize(); + PlatformRemoteiOS::Initialize(); #endif #if defined (__linux__) PlatformLinux::Initialize(); @@ -154,6 +156,7 @@ //ProcessMacOSX::Terminate(); SymbolVendorMacOSX::Terminate(); PlatformMacOSX::Terminate(); + PlatformRemoteiOS::Terminate(); #endif Debugger::SettingsTerminate (); From johnny.chen at apple.com Fri Mar 18 20:24:25 2011 From: johnny.chen at apple.com (Johnny Chen) Date: Sat, 19 Mar 2011 01:24:25 -0000 Subject: [Lldb-commits] [lldb] r127936 - in /lldb/trunk/utils/test: disasm.py llvm-mc-shell.py Message-ID: <20110319012425.DCF902A6C130@llvm.org> Author: johnny Date: Fri Mar 18 20:24:25 2011 New Revision: 127936 URL: http://llvm.org/viewvc/llvm-project?rev=127936&view=rev Log: Modify disasm.py to better deal with the objc method name which has ':' in them. Add a utility similar to disasm.py, but which provides a shell-like environment for invoking llvm-mc. Added: lldb/trunk/utils/test/llvm-mc-shell.py (with props) Modified: lldb/trunk/utils/test/disasm.py Modified: lldb/trunk/utils/test/disasm.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/utils/test/disasm.py?rev=127936&r1=127935&r2=127936&view=diff ============================================================================== --- lldb/trunk/utils/test/disasm.py (original) +++ lldb/trunk/utils/test/disasm.py Fri Mar 18 20:24:25 2011 @@ -80,9 +80,12 @@ gdb.sendline('x /%db %s' % (addr_diff, prev_addr)) gdb.expect(gdb_prompt) x_output = gdb.before - memory_dump = x_output.split(os.linesep)[-1].split(':')[-1].strip() + # Get the last output line from the gdb examine memory command, + # split the string into a 3-tuple with separator '>:' to handle + # objc method names. + memory_dump = x_output.split(os.linesep)[-1].partition('>:')[2].strip() #print "\nbytes:", memory_dump - disasm_str = prev_line.split(':')[1] + disasm_str = prev_line.partition('>:')[2] print >> mc_input, '%s # %s' % (memory_dump, disasm_str) # We're done with the processing. Assign the current line to be prev_line. Added: lldb/trunk/utils/test/llvm-mc-shell.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/utils/test/llvm-mc-shell.py?rev=127936&view=auto ============================================================================== --- lldb/trunk/utils/test/llvm-mc-shell.py (added) +++ lldb/trunk/utils/test/llvm-mc-shell.py Fri Mar 18 20:24:25 2011 @@ -0,0 +1,100 @@ +#!/usr/bin/env python + +""" +Run llvm-mc interactively. + +""" + +import os +import sys +from optparse import OptionParser + +def is_exe(fpath): + """Check whether fpath is an executable.""" + return os.path.isfile(fpath) and os.access(fpath, os.X_OK) + +def which(program): + """Find the full path to a program, or return None.""" + fpath, fname = os.path.split(program) + if fpath: + if is_exe(program): + return program + else: + for path in os.environ["PATH"].split(os.pathsep): + exe_file = os.path.join(path, program) + if is_exe(exe_file): + return exe_file + return None + +def llvm_mc_loop(mc, mc_options): + contents = [] + fname = 'mc-input.txt' + sys.stdout.write("Enter your input to llvm-mc. A line starting with 'END' terminates the cuurent batch of input.\n") + sys.stdout.write("Enter 'quit' or Ctrl-D to quit the program.\n") + while True: + sys.stdout.write("> ") + next = sys.stdin.readline() + # EOF => terminate this llvm-mc shell + if not next or next.startswith('quit'): + sys.stdout.write('\n') + sys.exit(0) + # 'END' => send the current batch of input to llvm-mc + if next.startswith('END'): + # Write contents to our file and clear the contents. + with open(fname, 'w') as f: + f.writelines(contents) + # Clear the list: replace all items with an empty list. + contents[:] = [] + + # Invoke llvm-mc with our newly created file. + mc_cmd = '%s %s %s' % (mc, mc_options, fname) + sys.stdout.write("Executing command: %s\n" % mc_cmd) + os.system(mc_cmd) + else: + # Keep accumulating our input. + contents.append(next) + +def main(): + # This is to set up the Python path to include the pexpect-2.4 dir. + # Remember to update this when/if things change. + scriptPath = sys.path[0] + sys.path.append(os.path.join(scriptPath, os.pardir, os.pardir, 'test', 'pexpect-2.4')) + + parser = OptionParser(usage="""\ +Do llvm-mc interactively within a shell-like environment. A batch of input is +submitted to llvm-mc to execute whenever you terminate the current batch by +inputing a line which starts with 'END'. Quit the program by either 'quit' or +Ctrl-D. + +Usage: %prog [options] +""") + parser.add_option('-m', '--llvm-mc', + type='string', action='store', + dest='llvm_mc', + help="""The llvm-mc executable full path, if specified. + Otherwise, it must be present in your PATH environment.""") + + parser.add_option('-o', '--options', + type='string', action='store', + dest='llvm_mc_options', + help="""The options passed to 'llvm-mc' command if specified.""") + + opts, args = parser.parse_args() + + llvm_mc = opts.llvm_mc if opts.llvm_mc else which('llvm-mc') + if not llvm_mc: + parser.print_help() + sys.exit(1) + + # This is optional. For example: + # --options='-disassemble -triple=arm-apple-darwin -debug-only=arm-disassembler' + llvm_mc_options = opts.llvm_mc_options + + # We have parsed the options. + print "llvm-mc:", llvm_mc + print "llvm-mc options:", llvm_mc_options + + llvm_mc_loop(llvm_mc, llvm_mc_options) + +if __name__ == '__main__': + main() Propchange: lldb/trunk/utils/test/llvm-mc-shell.py ------------------------------------------------------------------------------ svn:executable = * From gclayton at apple.com Sat Mar 19 23:57:14 2011 From: gclayton at apple.com (Greg Clayton) Date: Sun, 20 Mar 2011 04:57:14 -0000 Subject: [Lldb-commits] [lldb] r127963 - in /lldb/trunk: lldb.xcodeproj/ source/Commands/ source/Core/ source/Expression/ source/Interpreter/ source/Plugins/Instruction/ARM/ source/Plugins/Platform/MacOSX/ source/Plugins/Process/Utility/ source/Plugins/SymbolFile/DWARF/ source/Symbol/ source/Target/ tools/debugserver/source/ Message-ID: <20110320045714.9EA4F2A6C12C@llvm.org> Author: gclayton Date: Sat Mar 19 23:57:14 2011 New Revision: 127963 URL: http://llvm.org/viewvc/llvm-project?rev=127963&view=rev Log: Split all of the core of LLDB.framework/lldb.so into a static archive that can be linked against. LLDB.framework/lldb.so exports a very controlled API. Splitting the API into a static library allows other tools (debugserver for now) to use the power of the LLDB debugger core, yet not export it as its API is not portable or maintainable. The Host layer and many of the other internal only APIs can now be statically linked against. Now LLDB.framework/lldb.so links against "liblldb-core.a" instead of compiling the .o files only for the shared library. This fix is only for compiling with Xcode as the Makefile based build already does this. The Xcode projecdt compiler has been changed to LLVM. Anyone using Xcode 3 will need to manually change the compiler back to GCC 4.2, or update to Xcode 4. Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj lldb/trunk/source/Commands/CommandObjectMemory.cpp lldb/trunk/source/Core/Communication.cpp lldb/trunk/source/Expression/DWARFExpression.cpp lldb/trunk/source/Interpreter/CommandObject.cpp lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp lldb/trunk/source/Plugins/Process/Utility/RegisterContextMacOSXFrameBackchain.cpp lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp lldb/trunk/source/Symbol/Type.cpp lldb/trunk/source/Target/Process.cpp lldb/trunk/source/Target/RegisterContext.cpp lldb/trunk/tools/debugserver/source/RNBRemote.cpp lldb/trunk/tools/debugserver/source/RNBRemote.h lldb/trunk/tools/debugserver/source/debugserver.cpp Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/lldb.xcodeproj/project.pbxproj (original) +++ lldb/trunk/lldb.xcodeproj/project.pbxproj Sat Mar 19 23:57:14 2011 @@ -8,32 +8,19 @@ /* Begin PBXBuildFile section */ 260C6EA113011578005E16B0 /* File.h in Headers */ = {isa = PBXBuildFile; fileRef = 260C6EA013011578005E16B0 /* File.h */; }; - 260C6EA313011581005E16B0 /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C6EA213011581005E16B0 /* File.cpp */; }; 260C876A10F538E700BB2B04 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 260C876910F538E700BB2B04 /* Foundation.framework */; }; - 2615DB871208A9E40021781D /* StopInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2615DB861208A9E40021781D /* StopInfo.cpp */; }; - 2615DBCA1208B5FC0021781D /* StopInfoMachException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2615DBC81208B5FC0021781D /* StopInfoMachException.cpp */; }; 261744781168585B005ADD65 /* SBType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 261744771168585B005ADD65 /* SBType.cpp */; }; 2617447A11685869005ADD65 /* SBType.h in Headers */ = {isa = PBXBuildFile; fileRef = 2617447911685869005ADD65 /* SBType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2618D7921240116900F2B8FE /* SectionLoadList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618D7911240116900F2B8FE /* SectionLoadList.cpp */; }; - 2618D9EB12406FE600F2B8FE /* NameToDIE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618D9EA12406FE600F2B8FE /* NameToDIE.cpp */; }; - 2618EE651315B29C001D6D71 /* GDBRemoteCommunication.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE5B1315B29C001D6D71 /* GDBRemoteCommunication.cpp */; }; 2618EE661315B29C001D6D71 /* GDBRemoteCommunication.h in Headers */ = {isa = PBXBuildFile; fileRef = 2618EE5C1315B29C001D6D71 /* GDBRemoteCommunication.h */; }; - 2618EE671315B29C001D6D71 /* GDBRemoteRegisterContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE5D1315B29C001D6D71 /* GDBRemoteRegisterContext.cpp */; }; 2618EE681315B29C001D6D71 /* GDBRemoteRegisterContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 2618EE5E1315B29C001D6D71 /* GDBRemoteRegisterContext.h */; }; - 2618EE691315B29C001D6D71 /* ProcessGDBRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE5F1315B29C001D6D71 /* ProcessGDBRemote.cpp */; }; 2618EE6A1315B29C001D6D71 /* ProcessGDBRemote.h in Headers */ = {isa = PBXBuildFile; fileRef = 2618EE601315B29C001D6D71 /* ProcessGDBRemote.h */; }; - 2618EE6B1315B29C001D6D71 /* ProcessGDBRemoteLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE611315B29C001D6D71 /* ProcessGDBRemoteLog.cpp */; }; 2618EE6C1315B29C001D6D71 /* ProcessGDBRemoteLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 2618EE621315B29C001D6D71 /* ProcessGDBRemoteLog.h */; }; - 2618EE6D1315B29C001D6D71 /* ThreadGDBRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE631315B29C001D6D71 /* ThreadGDBRemote.cpp */; }; 2618EE6E1315B29C001D6D71 /* ThreadGDBRemote.h in Headers */ = {isa = PBXBuildFile; fileRef = 2618EE641315B29C001D6D71 /* ThreadGDBRemote.h */; }; - 261B5A5411C3F2AD00AABD0A /* SharingPtr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 261B5A5211C3F2AD00AABD0A /* SharingPtr.cpp */; }; 262CFC7711A4510000946C6C /* debugserver in Resources */ = {isa = PBXBuildFile; fileRef = 26CE05A0115C31E50022F371 /* debugserver */; }; 2635DA87127D0D0400675BC1 /* SharingPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 261B5A5311C3F2AD00AABD0A /* SharingPtr.h */; settings = {ATTRIBUTES = (Public, ); }; }; 26368A3C126B697600E8659F /* darwin-debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26368A3B126B697600E8659F /* darwin-debug.cpp */; }; 26368AF7126B960500E8659F /* darwin-debug in Resources */ = {isa = PBXBuildFile; fileRef = 26579F68126A25920007C5CB /* darwin-debug */; }; - 26424E3D125986CB0016D82C /* ValueObjectConstResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26424E3C125986CB0016D82C /* ValueObjectConstResult.cpp */; }; 264A43BC1320B3B4005B4096 /* Platform.h in Headers */ = {isa = PBXBuildFile; fileRef = 264A43BB1320B3B4005B4096 /* Platform.h */; }; - 264A43BE1320BCEB005B4096 /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264A43BD1320BCEB005B4096 /* Platform.cpp */; }; 265ABF6310F42EE900531910 /* DebugSymbols.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 265ABF6210F42EE900531910 /* DebugSymbols.framework */; }; 2668020E115FD12C008E1FE4 /* lldb-defines.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7C2510F1B3BC00F91463 /* lldb-defines.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2668020F115FD12C008E1FE4 /* lldb-enumerations.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7C2610F1B3BC00F91463 /* lldb-enumerations.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -77,238 +64,319 @@ 26680336116005EF008E1FE4 /* SBBreakpointLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AF16CC7114086A1007A7B3F /* SBBreakpointLocation.cpp */; }; 26680337116005F1008E1FE4 /* SBBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AF16A9C11402D5B007A7B3F /* SBBreakpoint.cpp */; }; 2668035C11601108008E1FE4 /* LLDB.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26680207115FD0ED008E1FE4 /* LLDB.framework */; }; - 266A42D6128E3FFB0090CF7C /* ClangNamespaceDecl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266A42D5128E3FFB0090CF7C /* ClangNamespaceDecl.cpp */; }; 266A42D8128E40040090CF7C /* ClangNamespaceDecl.h in Headers */ = {isa = PBXBuildFile; fileRef = 266A42D7128E40040090CF7C /* ClangNamespaceDecl.h */; }; 266F5CBC12FC846200DFCE33 /* Config.h in Headers */ = {isa = PBXBuildFile; fileRef = 266F5CBB12FC846200DFCE33 /* Config.h */; }; - 2675F7001332BE690067997B /* PlatformRemoteiOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2675F6FE1332BE690067997B /* PlatformRemoteiOS.cpp */; }; 2675F7011332BE690067997B /* PlatformRemoteiOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 2675F6FF1332BE690067997B /* PlatformRemoteiOS.h */; }; 26879CE61333F5750012C1F8 /* CommandObjectPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 26879CE51333F5750012C1F8 /* CommandObjectPlatform.h */; }; - 26879CE81333F58B0012C1F8 /* CommandObjectPlatform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26879CE71333F58B0012C1F8 /* CommandObjectPlatform.cpp */; }; - 268A683F1321B53B000E3FB8 /* DynamicLoaderStatic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268A683D1321B53B000E3FB8 /* DynamicLoaderStatic.cpp */; }; + 2689000013353DB600698AC0 /* BreakpointResolverAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D0DD5010FE554D00271C65 /* BreakpointResolverAddress.h */; }; + 2689000113353DB600698AC0 /* BreakpointResolverAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D0DD5310FE555900271C65 /* BreakpointResolverAddress.cpp */; }; + 2689000213353DB600698AC0 /* BreakpointResolverFileLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D0DD5110FE554D00271C65 /* BreakpointResolverFileLine.h */; }; + 2689000313353DB600698AC0 /* BreakpointResolverFileLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D0DD5410FE555900271C65 /* BreakpointResolverFileLine.cpp */; }; + 2689000413353DB600698AC0 /* BreakpointResolverName.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D0DD5210FE554D00271C65 /* BreakpointResolverName.h */; }; + 2689000513353DB600698AC0 /* BreakpointResolverName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D0DD5510FE555900271C65 /* BreakpointResolverName.cpp */; }; + 2689000613353DB600698AC0 /* BreakpointSite.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CF710F1B71400F91463 /* BreakpointSite.h */; }; + 2689000713353DB600698AC0 /* BreakpointSite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1310F1B83100F91463 /* BreakpointSite.cpp */; }; + 2689000813353DB600698AC0 /* BreakpointSiteList.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CF810F1B71400F91463 /* BreakpointSiteList.h */; }; + 2689000913353DB600698AC0 /* BreakpointSiteList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1410F1B83100F91463 /* BreakpointSiteList.cpp */; }; + 2689000A13353DB600698AC0 /* Stoppoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CFA10F1B71400F91463 /* Stoppoint.h */; }; + 2689000B13353DB600698AC0 /* Stoppoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1610F1B83100F91463 /* Stoppoint.cpp */; }; + 2689000C13353DB600698AC0 /* StoppointCallbackContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CED10F1B71400F91463 /* StoppointCallbackContext.h */; }; + 2689000D13353DB600698AC0 /* StoppointCallbackContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0910F1B83100F91463 /* StoppointCallbackContext.cpp */; }; + 2689000E13353DB600698AC0 /* StoppointLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CFB10F1B71400F91463 /* StoppointLocation.h */; }; + 2689000F13353DB600698AC0 /* StoppointLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1710F1B83100F91463 /* StoppointLocation.cpp */; }; + 2689001013353DB600698AC0 /* WatchpointLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CFC10F1B71400F91463 /* WatchpointLocation.h */; }; + 2689001113353DB600698AC0 /* WatchpointLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1810F1B83100F91463 /* WatchpointLocation.cpp */; }; + 2689001213353DDE00698AC0 /* CommandObjectApropos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CA9637911B6E99A00780E28 /* CommandObjectApropos.cpp */; }; + 2689001313353DDE00698AC0 /* CommandObjectArgs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 499F381F11A5B3F300F5CE02 /* CommandObjectArgs.cpp */; }; + 2689001413353DDE00698AC0 /* CommandObjectBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E2D10F1B84700F91463 /* CommandObjectBreakpoint.cpp */; }; + 2689001513353DDE00698AC0 /* CommandObjectBreakpointCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A42976211861AA600FE05CD /* CommandObjectBreakpointCommand.cpp */; }; + 2689001613353DDE00698AC0 /* CommandObjectCommands.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C5DBBC611E3FEC60035160F /* CommandObjectCommands.cpp */; }; + 2689001713353DDE00698AC0 /* CommandObjectDisassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3010F1B84700F91463 /* CommandObjectDisassemble.cpp */; }; + 2689001813353DDE00698AC0 /* CommandObjectExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3110F1B84700F91463 /* CommandObjectExpression.cpp */; }; + 2689001913353DDE00698AC0 /* CommandObjectFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3210F1B84700F91463 /* CommandObjectFile.cpp */; }; + 2689001A13353DDE00698AC0 /* CommandObjectFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2672D8461189055500FF4019 /* CommandObjectFrame.cpp */; }; + 2689001B13353DDE00698AC0 /* CommandObjectHelp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3310F1B84700F91463 /* CommandObjectHelp.cpp */; }; + 2689001C13353DDE00698AC0 /* CommandObjectImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3410F1B84700F91463 /* CommandObjectImage.cpp */; }; + 2689001D13353DDE00698AC0 /* CommandObjectLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264AD83711095BA600E0B039 /* CommandObjectLog.cpp */; }; + 2689001E13353DDE00698AC0 /* CommandObjectMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3610F1B84700F91463 /* CommandObjectMemory.cpp */; }; + 2689001F13353DDE00698AC0 /* CommandObjectPlatform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26879CE71333F58B0012C1F8 /* CommandObjectPlatform.cpp */; }; + 2689002013353DDE00698AC0 /* CommandObjectProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3810F1B84700F91463 /* CommandObjectProcess.cpp */; }; + 2689002113353DDE00698AC0 /* CommandObjectQuit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3910F1B84700F91463 /* CommandObjectQuit.cpp */; }; + 2689002213353DDE00698AC0 /* CommandObjectRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3B10F1B84700F91463 /* CommandObjectRegister.cpp */; }; + 2689002313353DDE00698AC0 /* CommandObjectScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3D10F1B84700F91463 /* CommandObjectScript.cpp */; }; + 2689002413353DDE00698AC0 /* CommandObjectSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E4010F1B84700F91463 /* CommandObjectSettings.cpp */; }; + 2689002513353DDE00698AC0 /* CommandObjectSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E4210F1B84700F91463 /* CommandObjectSource.cpp */; }; + 2689002613353DDE00698AC0 /* CommandObjectSyntax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E4510F1B84700F91463 /* CommandObjectSyntax.cpp */; }; + 2689002713353DDE00698AC0 /* CommandObjectTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 269416AD119A024800FF2715 /* CommandObjectTarget.cpp */; }; + 2689002813353DDE00698AC0 /* CommandObjectThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E4610F1B84700F91463 /* CommandObjectThread.cpp */; }; + 2689002913353DDE00698AC0 /* CommandObjectVersion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B296983412C2FB2B002D92C3 /* CommandObjectVersion.cpp */; }; + 2689002A13353E0400698AC0 /* Address.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6910F1B85900F91463 /* Address.cpp */; }; + 2689002B13353E0400698AC0 /* AddressRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6A10F1B85900F91463 /* AddressRange.cpp */; }; + 2689002C13353E0400698AC0 /* AddressResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC7034011752C6B0086C050 /* AddressResolver.cpp */; }; + 2689002D13353E0400698AC0 /* AddressResolverFileLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC7034211752C720086C050 /* AddressResolverFileLine.cpp */; }; + 2689002E13353E0400698AC0 /* AddressResolverName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC7034411752C790086C050 /* AddressResolverName.cpp */; }; + 2689002F13353E0400698AC0 /* ArchSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6B10F1B85900F91463 /* ArchSpec.cpp */; }; + 2689003013353E0400698AC0 /* Baton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A0604811A5D03C00F75969 /* Baton.cpp */; }; + 2689003113353E0400698AC0 /* Broadcaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6D10F1B85900F91463 /* Broadcaster.cpp */; }; + 2689003213353E0400698AC0 /* Communication.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6E10F1B85900F91463 /* Communication.cpp */; }; + 2689003313353E0400698AC0 /* Connection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6F10F1B85900F91463 /* Connection.cpp */; }; + 2689003413353E0400698AC0 /* ConnectionFileDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7010F1B85900F91463 /* ConnectionFileDescriptor.cpp */; }; + 2689003513353E0400698AC0 /* ConstString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9410F1B85900F91463 /* ConstString.cpp */; }; + 2689003613353E0400698AC0 /* DataBufferHeap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7210F1B85900F91463 /* DataBufferHeap.cpp */; }; + 2689003713353E0400698AC0 /* DataBufferMemoryMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7310F1B85900F91463 /* DataBufferMemoryMap.cpp */; }; + 2689003813353E0400698AC0 /* DataExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7110F1B85900F91463 /* DataExtractor.cpp */; }; + 2689003913353E0400698AC0 /* Debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 263664921140A4930075843B /* Debugger.cpp */; }; + 2689003A13353E0400698AC0 /* Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7610F1B85900F91463 /* Disassembler.cpp */; }; + 2689003B13353E0400698AC0 /* EmulateInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D9FDC812F784FD0003F2EE /* EmulateInstruction.cpp */; }; + 2689003C13353E0400698AC0 /* Error.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7810F1B85900F91463 /* Error.cpp */; }; + 2689003D13353E0400698AC0 /* Event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7910F1B85900F91463 /* Event.cpp */; }; + 2689003E13353E0400698AC0 /* FileSpecList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7B10F1B85900F91463 /* FileSpecList.cpp */; }; + 2689003F13353E0400698AC0 /* InputReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA69DB5118A027A00D753A0 /* InputReader.cpp */; }; + 2689004013353E0400698AC0 /* Language.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7D10F1B85900F91463 /* Language.cpp */; }; + 2689004113353E0400698AC0 /* Listener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7E10F1B85900F91463 /* Listener.cpp */; }; + 2689004213353E0400698AC0 /* Log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7F10F1B85900F91463 /* Log.cpp */; }; + 2689004313353E0400698AC0 /* Mangled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8010F1B85900F91463 /* Mangled.cpp */; }; + 2689004413353E0400698AC0 /* Module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8110F1B85900F91463 /* Module.cpp */; }; + 2689004513353E0400698AC0 /* ModuleChild.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8210F1B85900F91463 /* ModuleChild.cpp */; }; + 2689004613353E0400698AC0 /* ModuleList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8310F1B85900F91463 /* ModuleList.cpp */; }; + 2689004713353E0400698AC0 /* PluginManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8A10F1B85900F91463 /* PluginManager.cpp */; }; + 2689004813353E0400698AC0 /* RegularExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8C10F1B85900F91463 /* RegularExpression.cpp */; }; + 2689004913353E0400698AC0 /* Scalar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8D10F1B85900F91463 /* Scalar.cpp */; }; + 2689004A13353E0400698AC0 /* SearchFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1510F1B83100F91463 /* SearchFilter.cpp */; }; + 2689004B13353E0400698AC0 /* Section.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8E10F1B85900F91463 /* Section.cpp */; }; + 2689004C13353E0400698AC0 /* SourceManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8F10F1B85900F91463 /* SourceManager.cpp */; }; + 2689004D13353E0400698AC0 /* State.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9010F1B85900F91463 /* State.cpp */; }; + 2689004E13353E0400698AC0 /* Stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9110F1B85900F91463 /* Stream.cpp */; }; + 2689004F13353E0400698AC0 /* StreamFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9210F1B85900F91463 /* StreamFile.cpp */; }; + 2689005013353E0400698AC0 /* StreamString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9310F1B85900F91463 /* StreamString.cpp */; }; + 2689005113353E0400698AC0 /* StringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A35765F116E76B900E8ED2F /* StringList.cpp */; }; + 2689005213353E0400698AC0 /* Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9610F1B85900F91463 /* Timer.cpp */; }; + 2689005313353E0400698AC0 /* UserID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9810F1B85900F91463 /* UserID.cpp */; }; + 2689005413353E0400698AC0 /* UserSettingsController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A4633DC11F65D9A00955CE1 /* UserSettingsController.cpp */; }; + 2689005513353E0400698AC0 /* UUID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C81CA511335651004BDC5A /* UUID.cpp */; }; + 2689005613353E0400698AC0 /* Value.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9910F1B85900F91463 /* Value.cpp */; }; + 2689005713353E0400698AC0 /* ValueObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9A10F1B85900F91463 /* ValueObject.cpp */; }; + 2689005813353E0400698AC0 /* ValueObjectChild.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9B10F1B85900F91463 /* ValueObjectChild.cpp */; }; + 2689005913353E0400698AC0 /* ValueObjectConstResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26424E3C125986CB0016D82C /* ValueObjectConstResult.cpp */; }; + 2689005A13353E0400698AC0 /* ValueObjectList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9C10F1B85900F91463 /* ValueObjectList.cpp */; }; + 2689005B13353E0400698AC0 /* ValueObjectRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264334381110F63100CDB6C6 /* ValueObjectRegister.cpp */; }; + 2689005C13353E0400698AC0 /* ValueObjectVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9D10F1B85900F91463 /* ValueObjectVariable.cpp */; }; + 2689005D13353E0400698AC0 /* VMRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9E10F1B85900F91463 /* VMRange.cpp */; }; + 2689005E13353E0E00698AC0 /* ClangASTSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49D7072811B5AD11001AD875 /* ClangASTSource.cpp */; }; + 2689005F13353E0E00698AC0 /* ClangFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C98D3DA118FB96F00E575D0 /* ClangFunction.cpp */; }; + 2689006013353E0E00698AC0 /* ClangExpressionDeclMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49F1A74511B3388F003ED505 /* ClangExpressionDeclMap.cpp */; }; + 2689006113353E0E00698AC0 /* ClangExpressionParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49445C2512245E3600C11A81 /* ClangExpressionParser.cpp */; }; + 2689006213353E0E00698AC0 /* ClangExpressionVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7ED610F1B86700F91463 /* ClangExpressionVariable.cpp */; }; + 2689006313353E0E00698AC0 /* ClangPersistentVariables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49D4FE871210B61C00CDB854 /* ClangPersistentVariables.cpp */; }; + 2689006413353E0E00698AC0 /* ClangUserExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7ED510F1B86700F91463 /* ClangUserExpression.cpp */; }; + 2689006513353E0E00698AC0 /* ClangUtilityFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 497C86BD122823D800B54702 /* ClangUtilityFunction.cpp */; }; + 2689006613353E0E00698AC0 /* DWARFExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7ED810F1B86700F91463 /* DWARFExpression.cpp */; }; + 2689006713353E0E00698AC0 /* ASTDumper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4906FD4012F2255300A2A77C /* ASTDumper.cpp */; }; + 2689006813353E0E00698AC0 /* ASTResultSynthesizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49A8A39F11D568A300AD3B68 /* ASTResultSynthesizer.cpp */; }; + 2689006913353E0E00698AC0 /* ASTStructExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491193501226386000578B7F /* ASTStructExtractor.cpp */; }; + 2689006A13353E0E00698AC0 /* IRDynamicChecks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49CF9829122C70BD007A0B96 /* IRDynamicChecks.cpp */; }; + 2689006B13353E0E00698AC0 /* IRForTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49307AAD11DEA4D90081F992 /* IRForTarget.cpp */; }; + 2689006C13353E0E00698AC0 /* IRToDWARF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49DA742F11DE6A5A006AEF7E /* IRToDWARF.cpp */; }; + 2689006D13353E0E00698AC0 /* RecordingMemoryManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C98D3DB118FB96F00E575D0 /* RecordingMemoryManager.cpp */; }; + 2689006E13353E1A00698AC0 /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C6EA213011581005E16B0 /* File.cpp */; }; + 2689006F13353E1A00698AC0 /* FileSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26FA43171301048600E71120 /* FileSpec.cpp */; }; + 2689007013353E1A00698AC0 /* Condition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E1B1236C5D400C660B5 /* Condition.cpp */; }; + 2689007113353E1A00698AC0 /* Host.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E1C1236C5D400C660B5 /* Host.cpp */; }; + 2689007213353E1A00698AC0 /* Mutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E1E1236C5D400C660B5 /* Mutex.cpp */; }; + 2689007313353E1A00698AC0 /* Symbols.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E1F1236C5D400C660B5 /* Symbols.cpp */; }; + 2689007413353E1A00698AC0 /* Terminal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268DA873130095ED00C9483A /* Terminal.cpp */; }; + 2689007513353E1A00698AC0 /* TimeValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E201236C5D400C660B5 /* TimeValue.cpp */; }; + 2689007613353E1A00698AC0 /* CFCBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EED10F1B8AD00F91463 /* CFCBundle.cpp */; }; + 2689007713353E1A00698AC0 /* CFCData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EEF10F1B8AD00F91463 /* CFCData.cpp */; }; + 2689007813353E1A00698AC0 /* CFCMutableArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF110F1B8AD00F91463 /* CFCMutableArray.cpp */; }; + 2689007913353E1A00698AC0 /* CFCMutableDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF310F1B8AD00F91463 /* CFCMutableDictionary.cpp */; }; + 2689007A13353E1A00698AC0 /* CFCMutableSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF510F1B8AD00F91463 /* CFCMutableSet.cpp */; }; + 2689007B13353E1A00698AC0 /* CFCString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF810F1B8AD00F91463 /* CFCString.cpp */; }; + 2689007C13353E1A00698AC0 /* Symbols.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2689B0B5113EE47E00A4AEDB /* Symbols.cpp */; }; + 2689007D13353E2200698AC0 /* Args.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6C10F1B85900F91463 /* Args.cpp */; }; + 2689007E13353E2200698AC0 /* LLDBWrapPython.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A4EEB511682AAC007A372A /* LLDBWrapPython.cpp */; }; + 2689007F13353E2200698AC0 /* CommandCompletions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C09CB74116BD98B00C7A725 /* CommandCompletions.cpp */; }; + 2689008013353E2200698AC0 /* CommandInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0810F1B8DD00F91463 /* CommandInterpreter.cpp */; }; + 2689008113353E2200698AC0 /* CommandObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0910F1B8DD00F91463 /* CommandObject.cpp */; }; + 2689008213353E2200698AC0 /* CommandObjectCrossref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DFBC57113B48F300DD817F /* CommandObjectCrossref.cpp */; }; + 2689008313353E2200698AC0 /* CommandObjectMultiword.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DFBC58113B48F300DD817F /* CommandObjectMultiword.cpp */; }; + 2689008413353E2200698AC0 /* CommandObjectRegexCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DFBC59113B48F300DD817F /* CommandObjectRegexCommand.cpp */; }; + 2689008513353E2200698AC0 /* CommandReturnObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0A10F1B8DD00F91463 /* CommandReturnObject.cpp */; }; + 2689008613353E2200698AC0 /* Options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8610F1B85900F91463 /* Options.cpp */; }; + 2689008713353E2200698AC0 /* ScriptInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A82010B10FFB49800182560 /* ScriptInterpreter.cpp */; }; + 2689008813353E2200698AC0 /* ScriptInterpreterNone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A2771FC1135A37500E6ADB6 /* ScriptInterpreterNone.cpp */; }; + 2689008913353E2200698AC0 /* ScriptInterpreterPython.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0C10F1B8DD00F91463 /* ScriptInterpreterPython.cpp */; }; + 2689008A13353E4200698AC0 /* ABIMacOSX_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 497650CE11A21BEE008DDB57 /* ABIMacOSX_i386.cpp */; }; + 2689008B13353E4200698AC0 /* ABISysV_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 493C63F11189203300914D5E /* ABISysV_x86_64.cpp */; }; + 2689008C13353E4200698AC0 /* DisassemblerLLVM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C897410F57C5600BB2B04 /* DisassemblerLLVM.cpp */; }; + 2689008D13353E4200698AC0 /* DynamicLoaderMacOSXDYLD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C897A10F57C5600BB2B04 /* DynamicLoaderMacOSXDYLD.cpp */; }; + 2689008E13353E4200698AC0 /* DynamicLoaderStatic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268A683D1321B53B000E3FB8 /* DynamicLoaderStatic.cpp */; }; + 2689008F13353E4200698AC0 /* EmulateInstructionARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D9FDCC12F7853F0003F2EE /* EmulateInstructionARM.cpp */; }; + 2689009013353E4200698AC0 /* ItaniumABILanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB4436A124944B000C13DC2 /* ItaniumABILanguageRuntime.cpp */; }; + 2689009113353E4200698AC0 /* AppleObjCRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C61978812823D4300FAFFCC /* AppleObjCRuntime.cpp */; }; + 2689009213353E4200698AC0 /* AppleObjCRuntimeV1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C61978A12823D4300FAFFCC /* AppleObjCRuntimeV1.cpp */; }; + 2689009313353E4200698AC0 /* AppleObjCTrampolineHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C0A91D412511CB900CA6636 /* AppleObjCTrampolineHandler.cpp */; }; + 2689009413353E4200698AC0 /* AppleThreadPlanStepThroughObjCTrampoline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C0A91D612511CB900CA6636 /* AppleThreadPlanStepThroughObjCTrampoline.cpp */; }; + 2689009513353E4200698AC0 /* AppleObjCRuntimeV2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C139EA3124A8B03000BFF8D /* AppleObjCRuntimeV2.cpp */; }; + 2689009613353E4200698AC0 /* ObjectContainerBSDArchive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A3B4AC1181454800381BC2 /* ObjectContainerBSDArchive.cpp */; }; + 2689009713353E4200698AC0 /* ObjectContainerUniversalMachO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C898010F57C5600BB2B04 /* ObjectContainerUniversalMachO.cpp */; }; + 2689009813353E4200698AC0 /* ELFHeader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D27C9D11ED3A4E0024D721 /* ELFHeader.cpp */; }; + 2689009913353E4200698AC0 /* ObjectFileELF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C898510F57C5600BB2B04 /* ObjectFileELF.cpp */; }; + 2689009A13353E4200698AC0 /* ObjectFileMachO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C898810F57C5600BB2B04 /* ObjectFileMachO.cpp */; }; + 2689009B13353E4200698AC0 /* PlatformMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C5577B132575AD008FD8FE /* PlatformMacOSX.cpp */; }; + 2689009C13353E4200698AC0 /* PlatformRemoteiOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2675F6FE1332BE690067997B /* PlatformRemoteiOS.cpp */; }; + 2689009D13353E4200698AC0 /* GDBRemoteCommunication.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE5B1315B29C001D6D71 /* GDBRemoteCommunication.cpp */; }; + 2689009E13353E4200698AC0 /* GDBRemoteRegisterContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE5D1315B29C001D6D71 /* GDBRemoteRegisterContext.cpp */; }; + 2689009F13353E4200698AC0 /* ProcessGDBRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE5F1315B29C001D6D71 /* ProcessGDBRemote.cpp */; }; + 268900A013353E4200698AC0 /* ProcessGDBRemoteLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE611315B29C001D6D71 /* ProcessGDBRemoteLog.cpp */; }; + 268900A113353E4200698AC0 /* ThreadGDBRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618EE631315B29C001D6D71 /* ThreadGDBRemote.cpp */; }; + 268900A213353E5000698AC0 /* MachException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899210F57C5600BB2B04 /* MachException.cpp */; }; + 268900A313353E5000698AC0 /* MachTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899410F57C5600BB2B04 /* MachTask.cpp */; }; + 268900A413353E5000698AC0 /* MachThreadContext_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899710F57C5600BB2B04 /* MachThreadContext_arm.cpp */; }; + 268900A513353E5000698AC0 /* MachThreadContext_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899910F57C5600BB2B04 /* MachThreadContext_i386.cpp */; }; + 268900A613353E5000698AC0 /* MachThreadContext_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899B10F57C5600BB2B04 /* MachThreadContext_x86_64.cpp */; }; + 268900A713353E5000698AC0 /* MachVMMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899D10F57C5600BB2B04 /* MachVMMemory.cpp */; }; + 268900A813353E5000698AC0 /* MachVMRegion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899F10F57C5600BB2B04 /* MachVMRegion.cpp */; }; + 268900A913353E5000698AC0 /* ProcessMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89A310F57C5600BB2B04 /* ProcessMacOSX.cpp */; }; + 268900AA13353E5000698AC0 /* ProcessMacOSXLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89A510F57C5600BB2B04 /* ProcessMacOSXLog.cpp */; }; + 268900AB13353E5000698AC0 /* RegisterContextMach_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89A910F57C5600BB2B04 /* RegisterContextMach_arm.cpp */; }; + 268900AC13353E5000698AC0 /* RegisterContextMach_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89AB10F57C5600BB2B04 /* RegisterContextMach_i386.cpp */; }; + 268900AD13353E5000698AC0 /* RegisterContextMach_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89AD10F57C5600BB2B04 /* RegisterContextMach_x86_64.cpp */; }; + 268900AE13353E5000698AC0 /* ThreadMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89AF10F57C5600BB2B04 /* ThreadMacOSX.cpp */; }; + 268900AF13353E5000698AC0 /* UnwindLLDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF68D32F1255A110002FF25B /* UnwindLLDB.cpp */; }; + 268900B013353E5000698AC0 /* RegisterContextLLDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF68D2541255416E002FF25B /* RegisterContextLLDB.cpp */; }; + 268900B113353E5000698AC0 /* ArchVolatileRegs-x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 96A6D9C71249D98800250B38 /* ArchVolatileRegs-x86.cpp */; }; + 268900B213353E5000698AC0 /* ArchDefaultUnwindPlan-x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FAC1C12360C7D00F93A47 /* ArchDefaultUnwindPlan-x86.cpp */; }; + 268900B313353E5000698AC0 /* UnwindAssemblyProfiler-x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABE81235F26800F93A47 /* UnwindAssemblyProfiler-x86.cpp */; }; + 268900B413353E5000698AC0 /* RegisterContextMacOSXFrameBackchain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26E3EEF711A994E800FBADB6 /* RegisterContextMacOSXFrameBackchain.cpp */; }; + 268900B513353E5000698AC0 /* StopInfoMachException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2615DBC81208B5FC0021781D /* StopInfoMachException.cpp */; }; + 268900B613353E5000698AC0 /* UnwindMacOSXFrameBackchain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26E3EEE311A9901300FBADB6 /* UnwindMacOSXFrameBackchain.cpp */; }; + 268900B713353E5F00698AC0 /* DWARFAbbreviationDeclaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89B310F57C5600BB2B04 /* DWARFAbbreviationDeclaration.cpp */; }; + 268900B813353E5F00698AC0 /* DWARFCompileUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89B710F57C5600BB2B04 /* DWARFCompileUnit.cpp */; }; + 268900B913353E5F00698AC0 /* DWARFDebugAbbrev.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89B910F57C5600BB2B04 /* DWARFDebugAbbrev.cpp */; }; + 268900BA13353E5F00698AC0 /* DWARFDebugAranges.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89BB10F57C5600BB2B04 /* DWARFDebugAranges.cpp */; }; + 268900BB13353E5F00698AC0 /* DWARFDebugArangeSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89BD10F57C5600BB2B04 /* DWARFDebugArangeSet.cpp */; }; + 268900BC13353E5F00698AC0 /* DWARFDebugInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89BF10F57C5600BB2B04 /* DWARFDebugInfo.cpp */; }; + 268900BD13353E5F00698AC0 /* DWARFDebugInfoEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C110F57C5600BB2B04 /* DWARFDebugInfoEntry.cpp */; }; + 268900BE13353E5F00698AC0 /* DWARFDebugLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C310F57C5600BB2B04 /* DWARFDebugLine.cpp */; }; + 268900BF13353E5F00698AC0 /* DWARFDebugMacinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C510F57C5600BB2B04 /* DWARFDebugMacinfo.cpp */; }; + 268900C013353E5F00698AC0 /* DWARFDebugMacinfoEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C710F57C5600BB2B04 /* DWARFDebugMacinfoEntry.cpp */; }; + 268900C113353E5F00698AC0 /* DWARFDebugPubnames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C910F57C5600BB2B04 /* DWARFDebugPubnames.cpp */; }; + 268900C213353E5F00698AC0 /* DWARFDebugPubnamesSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89CB10F57C5600BB2B04 /* DWARFDebugPubnamesSet.cpp */; }; + 268900C313353E5F00698AC0 /* DWARFDebugRanges.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89CD10F57C5600BB2B04 /* DWARFDebugRanges.cpp */; }; + 268900C413353E5F00698AC0 /* DWARFDefines.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89CF10F57C5600BB2B04 /* DWARFDefines.cpp */; }; + 268900C513353E5F00698AC0 /* DWARFDIECollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D110F57C5600BB2B04 /* DWARFDIECollection.cpp */; }; + 268900C613353E5F00698AC0 /* DWARFFormValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D310F57C5600BB2B04 /* DWARFFormValue.cpp */; }; + 268900C713353E5F00698AC0 /* DWARFLocationDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D510F57C5600BB2B04 /* DWARFLocationDescription.cpp */; }; + 268900C813353E5F00698AC0 /* DWARFLocationList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D710F57C5600BB2B04 /* DWARFLocationList.cpp */; }; + 268900C913353E5F00698AC0 /* NameToDIE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618D9EA12406FE600F2B8FE /* NameToDIE.cpp */; }; + 268900CA13353E5F00698AC0 /* SymbolFileDWARF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D910F57C5600BB2B04 /* SymbolFileDWARF.cpp */; }; + 268900CB13353E5F00698AC0 /* LogChannelDWARF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26109B3B1155D70100CC3529 /* LogChannelDWARF.cpp */; }; + 268900CC13353E5F00698AC0 /* SymbolFileDWARFDebugMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89DB10F57C5600BB2B04 /* SymbolFileDWARFDebugMap.cpp */; }; + 268900CD13353E5F00698AC0 /* UniqueDWARFASTType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26B8B42312EEC52A00A831B2 /* UniqueDWARFASTType.cpp */; }; + 268900CE13353E5F00698AC0 /* SymbolFileSymtab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89DE10F57C5600BB2B04 /* SymbolFileSymtab.cpp */; }; + 268900CF13353E5F00698AC0 /* SymbolVendorMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89E210F57C5600BB2B04 /* SymbolVendorMacOSX.cpp */; }; + 268900D013353E6F00698AC0 /* Block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1310F1B8EC00F91463 /* Block.cpp */; }; + 268900D113353E6F00698AC0 /* ClangASTContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1410F1B8EC00F91463 /* ClangASTContext.cpp */; }; + 268900D213353E6F00698AC0 /* ClangASTType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E45FAD11F660FE008F7B28 /* ClangASTType.cpp */; }; + 268900D313353E6F00698AC0 /* ClangExternalASTSourceCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26E69030129C6BEF00DDECD9 /* ClangExternalASTSourceCallbacks.cpp */; }; + 268900D413353E6F00698AC0 /* ClangNamespaceDecl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266A42D5128E3FFB0090CF7C /* ClangNamespaceDecl.cpp */; }; + 268900D513353E6F00698AC0 /* CompileUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1510F1B8EC00F91463 /* CompileUnit.cpp */; }; + 268900D613353E6F00698AC0 /* Declaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1610F1B8EC00F91463 /* Declaration.cpp */; }; + 268900D713353E6F00698AC0 /* DWARFCallFrameInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1710F1B8EC00F91463 /* DWARFCallFrameInfo.cpp */; }; + 268900D813353E6F00698AC0 /* Function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1810F1B8EC00F91463 /* Function.cpp */; }; + 268900D913353E6F00698AC0 /* FuncUnwinders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABB81235DE1600F93A47 /* FuncUnwinders.cpp */; }; + 268900DA13353E6F00698AC0 /* LineEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1910F1B8EC00F91463 /* LineEntry.cpp */; }; + 268900DB13353E6F00698AC0 /* LineTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1A10F1B8EC00F91463 /* LineTable.cpp */; }; + 268900DC13353E6F00698AC0 /* ObjectFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F4C10F1BC1A00F91463 /* ObjectFile.cpp */; }; + 268900DD13353E6F00698AC0 /* Symbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1B10F1B8EC00F91463 /* Symbol.cpp */; }; + 268900DE13353E6F00698AC0 /* SymbolContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1C10F1B8EC00F91463 /* SymbolContext.cpp */; }; + 268900DF13353E6F00698AC0 /* SymbolFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1D10F1B8EC00F91463 /* SymbolFile.cpp */; }; + 268900E013353E6F00698AC0 /* SymbolVendor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF94005711C03F6500085DB9 /* SymbolVendor.cpp */; }; + 268900E113353E6F00698AC0 /* Symtab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1F10F1B8EC00F91463 /* Symtab.cpp */; }; + 268900E213353E6F00698AC0 /* Type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2010F1B8EC00F91463 /* Type.cpp */; }; + 268900E313353E6F00698AC0 /* TypeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2110F1B8EC00F91463 /* TypeList.cpp */; }; + 268900E413353E6F00698AC0 /* UnwindPlan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABB91235DE1600F93A47 /* UnwindPlan.cpp */; }; + 268900E513353E6F00698AC0 /* UnwindTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABBA1235DE1600F93A47 /* UnwindTable.cpp */; }; + 268900E613353E6F00698AC0 /* Variable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2210F1B8EC00F91463 /* Variable.cpp */; }; + 268900E713353E6F00698AC0 /* VariableList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2310F1B8EC00F91463 /* VariableList.cpp */; }; + 268900E813353E6F00698AC0 /* ABI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 497E7B9D1188F6690065CCA1 /* ABI.cpp */; }; + 268900E913353E6F00698AC0 /* CPPLanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB443BC1249920C00C13DC2 /* CPPLanguageRuntime.cpp */; }; + 268900EA13353E6F00698AC0 /* DynamicLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7710F1B85900F91463 /* DynamicLoader.cpp */; }; + 268900EB13353E6F00698AC0 /* ExecutionContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3510F1B90C00F91463 /* ExecutionContext.cpp */; }; + 268900EC13353E6F00698AC0 /* LanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB4430A12491DDA00C13DC2 /* LanguageRuntime.cpp */; }; + 268900ED13353E6F00698AC0 /* ObjCLanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB443F212499B5000C13DC2 /* ObjCLanguageRuntime.cpp */; }; + 268900EE13353E6F00698AC0 /* PathMappingList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 495BBACB119A0DBE00418BEA /* PathMappingList.cpp */; }; + 268900EF13353E6F00698AC0 /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264A43BD1320BCEB005B4096 /* Platform.cpp */; }; + 268900F013353E6F00698AC0 /* Process.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3610F1B90C00F91463 /* Process.cpp */; }; + 268900F113353E6F00698AC0 /* RegisterContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3710F1B90C00F91463 /* RegisterContext.cpp */; }; + 268900F213353E6F00698AC0 /* SectionLoadList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2618D7911240116900F2B8FE /* SectionLoadList.cpp */; }; + 268900F313353E6F00698AC0 /* StackFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3810F1B90C00F91463 /* StackFrame.cpp */; }; + 268900F413353E6F00698AC0 /* StackFrameList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3910F1B90C00F91463 /* StackFrameList.cpp */; }; + 268900F513353E6F00698AC0 /* StackID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3A10F1B90C00F91463 /* StackID.cpp */; }; + 268900F613353E6F00698AC0 /* StopInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2615DB861208A9E40021781D /* StopInfo.cpp */; }; + 268900F713353E6F00698AC0 /* Target.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3B10F1B90C00F91463 /* Target.cpp */; }; + 268900F813353E6F00698AC0 /* TargetList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3C10F1B90C00F91463 /* TargetList.cpp */; }; + 268900F913353E6F00698AC0 /* Thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3D10F1B90C00F91463 /* Thread.cpp */; }; + 268900FA13353E6F00698AC0 /* ThreadList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3E10F1B90C00F91463 /* ThreadList.cpp */; }; + 268900FB13353E6F00698AC0 /* ThreadPlan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3F10F1B90C00F91463 /* ThreadPlan.cpp */; }; + 268900FC13353E6F00698AC0 /* ThreadPlanBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847110F50EFC00BB2B04 /* ThreadPlanBase.cpp */; }; + 268900FD13353E6F00698AC0 /* ThreadPlanCallFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EC3E98118F90AC00B1265E /* ThreadPlanCallFunction.cpp */; }; + 268900FE13353E6F00698AC0 /* ThreadPlanCallUserExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C7CF7E51295E12B00B4FBB5 /* ThreadPlanCallUserExpression.cpp */; }; + 268900FF13353E6F00698AC0 /* ThreadPlanShouldStopHere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C43DEFA110641F300E55CBF /* ThreadPlanShouldStopHere.cpp */; }; + 2689010013353E6F00698AC0 /* ThreadPlanStepInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847210F50EFC00BB2B04 /* ThreadPlanStepInstruction.cpp */; }; + 2689010113353E6F00698AC0 /* ThreadPlanStepOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847310F50EFC00BB2B04 /* ThreadPlanStepOut.cpp */; }; + 2689010213353E6F00698AC0 /* ThreadPlanStepOverBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847410F50EFC00BB2B04 /* ThreadPlanStepOverBreakpoint.cpp */; }; + 2689010313353E6F00698AC0 /* ThreadPlanStepRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847610F50EFC00BB2B04 /* ThreadPlanStepRange.cpp */; }; + 2689010413353E6F00698AC0 /* ThreadPlanStepInRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C43DF8911069C3200E55CBF /* ThreadPlanStepInRange.cpp */; }; + 2689010513353E6F00698AC0 /* ThreadPlanStepOverRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C43DF8A11069C3200E55CBF /* ThreadPlanStepOverRange.cpp */; }; + 2689010613353E6F00698AC0 /* ThreadPlanRunToAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CAFCE031101218900CA63DB /* ThreadPlanRunToAddress.cpp */; }; + 2689010713353E6F00698AC0 /* ThreadPlanStepThrough.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847510F50EFC00BB2B04 /* ThreadPlanStepThrough.cpp */; }; + 2689010813353E6F00698AC0 /* ThreadPlanStepUntil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2660D9FE11922A7F00958FBD /* ThreadPlanStepUntil.cpp */; }; + 2689010913353E6F00698AC0 /* ThreadPlanTestCondition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C1AB23A1263E5F400D0F04A /* ThreadPlanTestCondition.cpp */; }; + 2689010A13353E6F00698AC0 /* ThreadPlanTracer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CC2A148128C73ED001531C4 /* ThreadPlanTracer.cpp */; }; + 2689010B13353E6F00698AC0 /* ThreadSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C08CDE711C81EF8001610A8 /* ThreadSpec.cpp */; }; + 2689010C13353E6F00698AC0 /* UnixSignals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C00987011500B4300F316B0 /* UnixSignals.cpp */; }; + 2689010D13353E8200698AC0 /* ArchVolatileRegs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 96A6D9C51249D96F00250B38 /* ArchVolatileRegs.cpp */; }; + 2689010E13353E8200698AC0 /* ArchDefaultUnwindPlan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FAC18123605A200F93A47 /* ArchDefaultUnwindPlan.cpp */; }; + 2689010F13353E8200698AC0 /* UnwindAssemblyProfiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABE41235F15900F93A47 /* UnwindAssemblyProfiler.cpp */; }; + 2689011013353E8200698AC0 /* SharingPtr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 261B5A5211C3F2AD00AABD0A /* SharingPtr.cpp */; }; + 2689011113353E8200698AC0 /* StringExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2660D9F611922A1300958FBD /* StringExtractor.cpp */; }; + 2689011213353E8200698AC0 /* StringExtractorGDBRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2676A093119C93C8008A98EF /* StringExtractorGDBRemote.cpp */; }; + 2689011313353E8200698AC0 /* PseudoTerminal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2682F16A115EDA0D00CCFF99 /* PseudoTerminal.cpp */; }; + 268901161335BBC300698AC0 /* liblldb-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2689FFCA13353D7A00698AC0 /* liblldb-core.a */; }; + 2689FFDA13353D9D00698AC0 /* lldb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7410F1B85900F91463 /* lldb.cpp */; }; + 2689FFDB13353DA300698AC0 /* lldb-log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7510F1B85900F91463 /* lldb-log.cpp */; }; + 2689FFEE13353DB600698AC0 /* Breakpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CEE10F1B71400F91463 /* Breakpoint.h */; }; + 2689FFEF13353DB600698AC0 /* Breakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0A10F1B83100F91463 /* Breakpoint.cpp */; }; + 2689FFF013353DB600698AC0 /* BreakpointID.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CEF10F1B71400F91463 /* BreakpointID.h */; }; + 2689FFF113353DB600698AC0 /* BreakpointID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0B10F1B83100F91463 /* BreakpointID.cpp */; }; + 2689FFF213353DB600698AC0 /* BreakpointIDList.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CF010F1B71400F91463 /* BreakpointIDList.h */; }; + 2689FFF313353DB600698AC0 /* BreakpointIDList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0C10F1B83100F91463 /* BreakpointIDList.cpp */; }; + 2689FFF413353DB600698AC0 /* BreakpointList.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CF110F1B71400F91463 /* BreakpointList.h */; }; + 2689FFF513353DB600698AC0 /* BreakpointList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0D10F1B83100F91463 /* BreakpointList.cpp */; }; + 2689FFF613353DB600698AC0 /* BreakpointLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CF210F1B71400F91463 /* BreakpointLocation.h */; }; + 2689FFF713353DB600698AC0 /* BreakpointLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0E10F1B83100F91463 /* BreakpointLocation.cpp */; }; + 2689FFF813353DB600698AC0 /* BreakpointLocationCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CF310F1B71400F91463 /* BreakpointLocationCollection.h */; }; + 2689FFF913353DB600698AC0 /* BreakpointLocationCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0F10F1B83100F91463 /* BreakpointLocationCollection.cpp */; }; + 2689FFFA13353DB600698AC0 /* BreakpointLocationList.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CF410F1B71400F91463 /* BreakpointLocationList.h */; }; + 2689FFFB13353DB600698AC0 /* BreakpointLocationList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1010F1B83100F91463 /* BreakpointLocationList.cpp */; }; + 2689FFFC13353DB600698AC0 /* BreakpointOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CF510F1B71400F91463 /* BreakpointOptions.h */; }; + 2689FFFD13353DB600698AC0 /* BreakpointOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1110F1B83100F91463 /* BreakpointOptions.cpp */; }; + 2689FFFE13353DB600698AC0 /* BreakpointResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BC7CF610F1B71400F91463 /* BreakpointResolver.h */; }; + 2689FFFF13353DB600698AC0 /* BreakpointResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1210F1B83100F91463 /* BreakpointResolver.cpp */; }; 268A68401321B53B000E3FB8 /* DynamicLoaderStatic.h in Headers */ = {isa = PBXBuildFile; fileRef = 268A683E1321B53B000E3FB8 /* DynamicLoaderStatic.h */; }; 268DA872130095D000C9483A /* Terminal.h in Headers */ = {isa = PBXBuildFile; fileRef = 268DA871130095D000C9483A /* Terminal.h */; }; - 268DA874130095ED00C9483A /* Terminal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268DA873130095ED00C9483A /* Terminal.cpp */; }; 268F9D53123AA15200B91E9B /* SBSymbolContextList.h in Headers */ = {isa = PBXBuildFile; fileRef = 268F9D52123AA15200B91E9B /* SBSymbolContextList.h */; settings = {ATTRIBUTES = (Public, ); }; }; 268F9D55123AA16600B91E9B /* SBSymbolContextList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268F9D54123AA16600B91E9B /* SBSymbolContextList.cpp */; }; 26B42B1F1187A92B0079C8C8 /* lldb-include.h in Headers */ = {isa = PBXBuildFile; fileRef = 26B42B1E1187A92B0079C8C8 /* lldb-include.h */; settings = {ATTRIBUTES = (Public, ); }; }; 26B42C4D1187ABA50079C8C8 /* LLDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 26B42C4C1187ABA50079C8C8 /* LLDB.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26B8B42512EEC52A00A831B2 /* UniqueDWARFASTType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26B8B42312EEC52A00A831B2 /* UniqueDWARFASTType.cpp */; }; - 26C557801325781A008FD8FE /* PlatformMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C5577B132575AD008FD8FE /* PlatformMacOSX.cpp */; }; 26C557811325781D008FD8FE /* PlatformMacOSX.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C5577C132575AD008FD8FE /* PlatformMacOSX.h */; }; 26C72C94124322890068DC16 /* SBStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C72C93124322890068DC16 /* SBStream.h */; settings = {ATTRIBUTES = (Public, ); }; }; 26C72C961243229A0068DC16 /* SBStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C72C951243229A0068DC16 /* SBStream.cpp */; }; - 26D27C9F11ED3A4E0024D721 /* ELFHeader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D27C9D11ED3A4E0024D721 /* ELFHeader.cpp */; }; - 26D5B06511B07550009A862E /* StoppointCallbackContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0910F1B83100F91463 /* StoppointCallbackContext.cpp */; }; - 26D5B06611B07550009A862E /* Breakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0A10F1B83100F91463 /* Breakpoint.cpp */; }; - 26D5B06711B07550009A862E /* BreakpointID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0B10F1B83100F91463 /* BreakpointID.cpp */; }; - 26D5B06811B07550009A862E /* BreakpointIDList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0C10F1B83100F91463 /* BreakpointIDList.cpp */; }; - 26D5B06911B07550009A862E /* BreakpointList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0D10F1B83100F91463 /* BreakpointList.cpp */; }; - 26D5B06A11B07550009A862E /* BreakpointLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0E10F1B83100F91463 /* BreakpointLocation.cpp */; }; - 26D5B06B11B07550009A862E /* BreakpointLocationCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E0F10F1B83100F91463 /* BreakpointLocationCollection.cpp */; }; - 26D5B06C11B07550009A862E /* BreakpointLocationList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1010F1B83100F91463 /* BreakpointLocationList.cpp */; }; - 26D5B06D11B07550009A862E /* BreakpointOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1110F1B83100F91463 /* BreakpointOptions.cpp */; }; - 26D5B06E11B07550009A862E /* BreakpointResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1210F1B83100F91463 /* BreakpointResolver.cpp */; }; - 26D5B06F11B07550009A862E /* BreakpointSite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1310F1B83100F91463 /* BreakpointSite.cpp */; }; - 26D5B07011B07550009A862E /* BreakpointSiteList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1410F1B83100F91463 /* BreakpointSiteList.cpp */; }; - 26D5B07111B07550009A862E /* SearchFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1510F1B83100F91463 /* SearchFilter.cpp */; }; - 26D5B07211B07550009A862E /* Stoppoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1610F1B83100F91463 /* Stoppoint.cpp */; }; - 26D5B07311B07550009A862E /* StoppointLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1710F1B83100F91463 /* StoppointLocation.cpp */; }; - 26D5B07411B07550009A862E /* WatchpointLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E1810F1B83100F91463 /* WatchpointLocation.cpp */; }; - 26D5B07711B07550009A862E /* CommandObjectBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E2D10F1B84700F91463 /* CommandObjectBreakpoint.cpp */; }; - 26D5B07911B07550009A862E /* CommandObjectDisassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3010F1B84700F91463 /* CommandObjectDisassemble.cpp */; }; - 26D5B07A11B07550009A862E /* CommandObjectExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3110F1B84700F91463 /* CommandObjectExpression.cpp */; }; - 26D5B07B11B07550009A862E /* CommandObjectFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3210F1B84700F91463 /* CommandObjectFile.cpp */; }; - 26D5B07C11B07550009A862E /* CommandObjectHelp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3310F1B84700F91463 /* CommandObjectHelp.cpp */; }; - 26D5B07D11B07550009A862E /* CommandObjectImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3410F1B84700F91463 /* CommandObjectImage.cpp */; }; - 26D5B07F11B07550009A862E /* CommandObjectMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3610F1B84700F91463 /* CommandObjectMemory.cpp */; }; - 26D5B08011B07550009A862E /* CommandObjectProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3810F1B84700F91463 /* CommandObjectProcess.cpp */; }; - 26D5B08111B07550009A862E /* CommandObjectQuit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3910F1B84700F91463 /* CommandObjectQuit.cpp */; }; - 26D5B08211B07550009A862E /* CommandObjectRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3B10F1B84700F91463 /* CommandObjectRegister.cpp */; }; - 26D5B08311B07550009A862E /* CommandObjectScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E3D10F1B84700F91463 /* CommandObjectScript.cpp */; }; - 26D5B08611B07550009A862E /* CommandObjectSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E4010F1B84700F91463 /* CommandObjectSettings.cpp */; }; - 26D5B08811B07550009A862E /* CommandObjectSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E4210F1B84700F91463 /* CommandObjectSource.cpp */; }; - 26D5B08B11B07550009A862E /* CommandObjectSyntax.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E4510F1B84700F91463 /* CommandObjectSyntax.cpp */; }; - 26D5B08C11B07550009A862E /* CommandObjectThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E4610F1B84700F91463 /* CommandObjectThread.cpp */; }; - 26D5B08E11B07550009A862E /* Address.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6910F1B85900F91463 /* Address.cpp */; }; - 26D5B08F11B07550009A862E /* AddressRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6A10F1B85900F91463 /* AddressRange.cpp */; }; - 26D5B09011B07550009A862E /* ArchSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6B10F1B85900F91463 /* ArchSpec.cpp */; }; - 26D5B09111B07550009A862E /* Args.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6C10F1B85900F91463 /* Args.cpp */; }; - 26D5B09211B07550009A862E /* Broadcaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6D10F1B85900F91463 /* Broadcaster.cpp */; }; - 26D5B09311B07550009A862E /* Communication.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6E10F1B85900F91463 /* Communication.cpp */; }; - 26D5B09411B07550009A862E /* Connection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E6F10F1B85900F91463 /* Connection.cpp */; }; - 26D5B09511B07550009A862E /* ConnectionFileDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7010F1B85900F91463 /* ConnectionFileDescriptor.cpp */; }; - 26D5B09611B07550009A862E /* DataExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7110F1B85900F91463 /* DataExtractor.cpp */; }; - 26D5B09711B07550009A862E /* DataBufferHeap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7210F1B85900F91463 /* DataBufferHeap.cpp */; }; - 26D5B09811B07550009A862E /* DataBufferMemoryMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7310F1B85900F91463 /* DataBufferMemoryMap.cpp */; }; - 26D5B09911B07550009A862E /* lldb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7410F1B85900F91463 /* lldb.cpp */; }; - 26D5B09A11B07550009A862E /* lldb-log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7510F1B85900F91463 /* lldb-log.cpp */; }; - 26D5B09B11B07550009A862E /* Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7610F1B85900F91463 /* Disassembler.cpp */; }; - 26D5B09C11B07550009A862E /* DynamicLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7710F1B85900F91463 /* DynamicLoader.cpp */; }; - 26D5B09D11B07550009A862E /* Error.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7810F1B85900F91463 /* Error.cpp */; }; - 26D5B09E11B07550009A862E /* Event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7910F1B85900F91463 /* Event.cpp */; }; - 26D5B0A011B07550009A862E /* FileSpecList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7B10F1B85900F91463 /* FileSpecList.cpp */; }; - 26D5B0A211B07550009A862E /* Language.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7D10F1B85900F91463 /* Language.cpp */; }; - 26D5B0A311B07550009A862E /* Listener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7E10F1B85900F91463 /* Listener.cpp */; }; - 26D5B0A411B07550009A862E /* Log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E7F10F1B85900F91463 /* Log.cpp */; }; - 26D5B0A511B07550009A862E /* Mangled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8010F1B85900F91463 /* Mangled.cpp */; }; - 26D5B0A611B07550009A862E /* Module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8110F1B85900F91463 /* Module.cpp */; }; - 26D5B0A711B07550009A862E /* ModuleChild.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8210F1B85900F91463 /* ModuleChild.cpp */; }; - 26D5B0A811B07550009A862E /* ModuleList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8310F1B85900F91463 /* ModuleList.cpp */; }; - 26D5B0A911B07550009A862E /* Options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8610F1B85900F91463 /* Options.cpp */; }; - 26D5B0AA11B07550009A862E /* PluginManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8A10F1B85900F91463 /* PluginManager.cpp */; }; - 26D5B0AB11B07550009A862E /* RegularExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8C10F1B85900F91463 /* RegularExpression.cpp */; }; - 26D5B0AC11B07550009A862E /* Scalar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8D10F1B85900F91463 /* Scalar.cpp */; }; - 26D5B0AD11B07550009A862E /* Section.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8E10F1B85900F91463 /* Section.cpp */; }; - 26D5B0AE11B07550009A862E /* SourceManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E8F10F1B85900F91463 /* SourceManager.cpp */; }; - 26D5B0AF11B07550009A862E /* State.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9010F1B85900F91463 /* State.cpp */; }; - 26D5B0B011B07550009A862E /* Stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9110F1B85900F91463 /* Stream.cpp */; }; - 26D5B0B111B07550009A862E /* StreamFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9210F1B85900F91463 /* StreamFile.cpp */; }; - 26D5B0B211B07550009A862E /* StreamString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9310F1B85900F91463 /* StreamString.cpp */; }; - 26D5B0B311B07550009A862E /* ConstString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9410F1B85900F91463 /* ConstString.cpp */; }; - 26D5B0B411B07550009A862E /* Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9610F1B85900F91463 /* Timer.cpp */; }; - 26D5B0B611B07550009A862E /* UserID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9810F1B85900F91463 /* UserID.cpp */; }; - 26D5B0B711B07550009A862E /* Value.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9910F1B85900F91463 /* Value.cpp */; }; - 26D5B0B811B07550009A862E /* ValueObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9A10F1B85900F91463 /* ValueObject.cpp */; }; - 26D5B0B911B07550009A862E /* ValueObjectChild.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9B10F1B85900F91463 /* ValueObjectChild.cpp */; }; - 26D5B0BA11B07550009A862E /* ValueObjectList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9C10F1B85900F91463 /* ValueObjectList.cpp */; }; - 26D5B0BB11B07550009A862E /* ValueObjectVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9D10F1B85900F91463 /* ValueObjectVariable.cpp */; }; - 26D5B0BC11B07550009A862E /* VMRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7E9E10F1B85900F91463 /* VMRange.cpp */; }; - 26D5B0BD11B07550009A862E /* ClangUserExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7ED510F1B86700F91463 /* ClangUserExpression.cpp */; }; - 26D5B0BE11B07550009A862E /* ClangExpressionVariable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7ED610F1B86700F91463 /* ClangExpressionVariable.cpp */; }; 26D5B0C211B07550009A862E /* Host.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EE810F1B88F00F91463 /* Host.mm */; }; - 26D5B0C411B07550009A862E /* CFCBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EED10F1B8AD00F91463 /* CFCBundle.cpp */; }; - 26D5B0C511B07550009A862E /* CFCData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EEF10F1B8AD00F91463 /* CFCData.cpp */; }; - 26D5B0C611B07550009A862E /* CFCMutableArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF110F1B8AD00F91463 /* CFCMutableArray.cpp */; }; - 26D5B0C711B07550009A862E /* CFCMutableDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF310F1B8AD00F91463 /* CFCMutableDictionary.cpp */; }; - 26D5B0C811B07550009A862E /* CFCMutableSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF510F1B8AD00F91463 /* CFCMutableSet.cpp */; }; - 26D5B0C911B07550009A862E /* CFCString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7EF810F1B8AD00F91463 /* CFCString.cpp */; }; - 26D5B0CB11B07550009A862E /* CommandInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0810F1B8DD00F91463 /* CommandInterpreter.cpp */; }; - 26D5B0CC11B07550009A862E /* CommandObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0910F1B8DD00F91463 /* CommandObject.cpp */; }; - 26D5B0CD11B07550009A862E /* CommandReturnObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0A10F1B8DD00F91463 /* CommandReturnObject.cpp */; }; - 26D5B0CF11B07550009A862E /* ScriptInterpreterPython.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0C10F1B8DD00F91463 /* ScriptInterpreterPython.cpp */; }; - 26D5B0D011B07550009A862E /* Block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1310F1B8EC00F91463 /* Block.cpp */; }; - 26D5B0D111B07550009A862E /* ClangASTContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1410F1B8EC00F91463 /* ClangASTContext.cpp */; settings = {COMPILER_FLAGS = "-fno-rtti"; }; }; - 26D5B0D211B07550009A862E /* CompileUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1510F1B8EC00F91463 /* CompileUnit.cpp */; }; - 26D5B0D311B07550009A862E /* Declaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1610F1B8EC00F91463 /* Declaration.cpp */; }; - 26D5B0D411B07550009A862E /* DWARFCallFrameInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1710F1B8EC00F91463 /* DWARFCallFrameInfo.cpp */; }; - 26D5B0D511B07550009A862E /* Function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1810F1B8EC00F91463 /* Function.cpp */; }; - 26D5B0D611B07550009A862E /* LineEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1910F1B8EC00F91463 /* LineEntry.cpp */; }; - 26D5B0D711B07550009A862E /* LineTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1A10F1B8EC00F91463 /* LineTable.cpp */; }; - 26D5B0D811B07550009A862E /* Symbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1B10F1B8EC00F91463 /* Symbol.cpp */; }; - 26D5B0D911B07550009A862E /* SymbolContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1C10F1B8EC00F91463 /* SymbolContext.cpp */; }; - 26D5B0DA11B07550009A862E /* SymbolFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1D10F1B8EC00F91463 /* SymbolFile.cpp */; }; - 26D5B0DC11B07550009A862E /* Symtab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F1F10F1B8EC00F91463 /* Symtab.cpp */; }; - 26D5B0DD11B07550009A862E /* Type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2010F1B8EC00F91463 /* Type.cpp */; }; - 26D5B0DE11B07550009A862E /* TypeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2110F1B8EC00F91463 /* TypeList.cpp */; }; - 26D5B0DF11B07550009A862E /* Variable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2210F1B8EC00F91463 /* Variable.cpp */; }; - 26D5B0E011B07550009A862E /* VariableList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F2310F1B8EC00F91463 /* VariableList.cpp */; }; - 26D5B0E111B07550009A862E /* ExecutionContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3510F1B90C00F91463 /* ExecutionContext.cpp */; }; - 26D5B0E211B07550009A862E /* Process.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3610F1B90C00F91463 /* Process.cpp */; }; - 26D5B0E311B07550009A862E /* RegisterContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3710F1B90C00F91463 /* RegisterContext.cpp */; }; - 26D5B0E411B07550009A862E /* StackFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3810F1B90C00F91463 /* StackFrame.cpp */; }; - 26D5B0E511B07550009A862E /* StackFrameList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3910F1B90C00F91463 /* StackFrameList.cpp */; }; - 26D5B0E611B07550009A862E /* StackID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3A10F1B90C00F91463 /* StackID.cpp */; }; - 26D5B0E711B07550009A862E /* Target.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3B10F1B90C00F91463 /* Target.cpp */; }; - 26D5B0E811B07550009A862E /* TargetList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3C10F1B90C00F91463 /* TargetList.cpp */; }; - 26D5B0E911B07550009A862E /* Thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3D10F1B90C00F91463 /* Thread.cpp */; }; - 26D5B0EA11B07550009A862E /* ThreadList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3E10F1B90C00F91463 /* ThreadList.cpp */; }; - 26D5B0EB11B07550009A862E /* ThreadPlan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F3F10F1B90C00F91463 /* ThreadPlan.cpp */; }; - 26D5B0EC11B07550009A862E /* ObjectFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F4C10F1BC1A00F91463 /* ObjectFile.cpp */; }; - 26D5B0EE11B07550009A862E /* ThreadPlanBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847110F50EFC00BB2B04 /* ThreadPlanBase.cpp */; }; - 26D5B0EF11B07550009A862E /* ThreadPlanStepInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847210F50EFC00BB2B04 /* ThreadPlanStepInstruction.cpp */; }; - 26D5B0F011B07550009A862E /* ThreadPlanStepOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847310F50EFC00BB2B04 /* ThreadPlanStepOut.cpp */; }; - 26D5B0F111B07550009A862E /* ThreadPlanStepOverBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847410F50EFC00BB2B04 /* ThreadPlanStepOverBreakpoint.cpp */; }; - 26D5B0F211B07550009A862E /* ThreadPlanStepThrough.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847510F50EFC00BB2B04 /* ThreadPlanStepThrough.cpp */; }; - 26D5B0F311B07550009A862E /* ThreadPlanStepRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C847610F50EFC00BB2B04 /* ThreadPlanStepRange.cpp */; }; - 26D5B0F411B07550009A862E /* DynamicLoaderMacOSXDYLD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C897A10F57C5600BB2B04 /* DynamicLoaderMacOSXDYLD.cpp */; }; - 26D5B0F611B07550009A862E /* ObjectContainerUniversalMachO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C898010F57C5600BB2B04 /* ObjectContainerUniversalMachO.cpp */; }; - 26D5B0F711B07550009A862E /* ObjectFileELF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C898510F57C5600BB2B04 /* ObjectFileELF.cpp */; }; - 26D5B0F811B07550009A862E /* ObjectFileMachO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C898810F57C5600BB2B04 /* ObjectFileMachO.cpp */; }; - 26D5B0F911B07550009A862E /* MachException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899210F57C5600BB2B04 /* MachException.cpp */; }; - 26D5B0FA11B07550009A862E /* MachTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899410F57C5600BB2B04 /* MachTask.cpp */; }; - 26D5B0FB11B07550009A862E /* MachThreadContext_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899710F57C5600BB2B04 /* MachThreadContext_arm.cpp */; }; - 26D5B0FC11B07550009A862E /* MachThreadContext_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899910F57C5600BB2B04 /* MachThreadContext_i386.cpp */; }; - 26D5B0FD11B07550009A862E /* MachThreadContext_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899B10F57C5600BB2B04 /* MachThreadContext_x86_64.cpp */; }; - 26D5B0FE11B07550009A862E /* MachVMMemory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899D10F57C5600BB2B04 /* MachVMMemory.cpp */; }; - 26D5B0FF11B07550009A862E /* MachVMRegion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C899F10F57C5600BB2B04 /* MachVMRegion.cpp */; }; 26D5B10011B07550009A862E /* ProcessControl-mig.defs in Sources */ = {isa = PBXBuildFile; fileRef = 260C89A110F57C5600BB2B04 /* ProcessControl-mig.defs */; settings = {ATTRIBUTES = (Client, Server, ); }; }; - 26D5B10111B07550009A862E /* ProcessMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89A310F57C5600BB2B04 /* ProcessMacOSX.cpp */; }; - 26D5B10211B07550009A862E /* ProcessMacOSXLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89A510F57C5600BB2B04 /* ProcessMacOSXLog.cpp */; }; - 26D5B10311B07550009A862E /* RegisterContextMach_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89A910F57C5600BB2B04 /* RegisterContextMach_arm.cpp */; }; - 26D5B10411B07550009A862E /* RegisterContextMach_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89AB10F57C5600BB2B04 /* RegisterContextMach_i386.cpp */; }; - 26D5B10511B07550009A862E /* RegisterContextMach_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89AD10F57C5600BB2B04 /* RegisterContextMach_x86_64.cpp */; }; - 26D5B10611B07550009A862E /* ThreadMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89AF10F57C5600BB2B04 /* ThreadMacOSX.cpp */; }; - 26D5B10711B07550009A862E /* DWARFAbbreviationDeclaration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89B310F57C5600BB2B04 /* DWARFAbbreviationDeclaration.cpp */; }; - 26D5B10811B07550009A862E /* DWARFCompileUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89B710F57C5600BB2B04 /* DWARFCompileUnit.cpp */; }; - 26D5B10911B07550009A862E /* DWARFDebugAbbrev.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89B910F57C5600BB2B04 /* DWARFDebugAbbrev.cpp */; }; - 26D5B10A11B07550009A862E /* DWARFDebugAranges.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89BB10F57C5600BB2B04 /* DWARFDebugAranges.cpp */; }; - 26D5B10B11B07550009A862E /* DWARFDebugArangeSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89BD10F57C5600BB2B04 /* DWARFDebugArangeSet.cpp */; }; - 26D5B10C11B07550009A862E /* DWARFDebugInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89BF10F57C5600BB2B04 /* DWARFDebugInfo.cpp */; }; - 26D5B10D11B07550009A862E /* DWARFDebugInfoEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C110F57C5600BB2B04 /* DWARFDebugInfoEntry.cpp */; }; - 26D5B10E11B07550009A862E /* DWARFDebugLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C310F57C5600BB2B04 /* DWARFDebugLine.cpp */; }; - 26D5B10F11B07550009A862E /* DWARFDebugMacinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C510F57C5600BB2B04 /* DWARFDebugMacinfo.cpp */; }; - 26D5B11011B07550009A862E /* DWARFDebugMacinfoEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C710F57C5600BB2B04 /* DWARFDebugMacinfoEntry.cpp */; }; - 26D5B11111B07550009A862E /* DWARFDebugPubnames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89C910F57C5600BB2B04 /* DWARFDebugPubnames.cpp */; }; - 26D5B11211B07550009A862E /* DWARFDebugPubnamesSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89CB10F57C5600BB2B04 /* DWARFDebugPubnamesSet.cpp */; }; - 26D5B11311B07550009A862E /* DWARFDebugRanges.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89CD10F57C5600BB2B04 /* DWARFDebugRanges.cpp */; }; - 26D5B11411B07550009A862E /* DWARFDefines.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89CF10F57C5600BB2B04 /* DWARFDefines.cpp */; }; - 26D5B11511B07550009A862E /* DWARFDIECollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D110F57C5600BB2B04 /* DWARFDIECollection.cpp */; }; - 26D5B11611B07550009A862E /* DWARFFormValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D310F57C5600BB2B04 /* DWARFFormValue.cpp */; }; - 26D5B11711B07550009A862E /* DWARFLocationDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D510F57C5600BB2B04 /* DWARFLocationDescription.cpp */; }; - 26D5B11811B07550009A862E /* DWARFLocationList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D710F57C5600BB2B04 /* DWARFLocationList.cpp */; }; - 26D5B11911B07550009A862E /* SymbolFileDWARF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89D910F57C5600BB2B04 /* SymbolFileDWARF.cpp */; }; - 26D5B11A11B07550009A862E /* SymbolFileDWARFDebugMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89DB10F57C5600BB2B04 /* SymbolFileDWARFDebugMap.cpp */; }; - 26D5B11B11B07550009A862E /* SymbolFileSymtab.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89DE10F57C5600BB2B04 /* SymbolFileSymtab.cpp */; }; - 26D5B11C11B07550009A862E /* SymbolVendorMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C89E210F57C5600BB2B04 /* SymbolVendorMacOSX.cpp */; }; - 26D5B11E11B07550009A862E /* ScriptInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A82010B10FFB49800182560 /* ScriptInterpreter.cpp */; }; - 26D5B11F11B07550009A862E /* BreakpointResolverAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D0DD5310FE555900271C65 /* BreakpointResolverAddress.cpp */; }; - 26D5B12011B07550009A862E /* BreakpointResolverFileLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D0DD5410FE555900271C65 /* BreakpointResolverFileLine.cpp */; }; - 26D5B12111B07550009A862E /* BreakpointResolverName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D0DD5510FE555900271C65 /* BreakpointResolverName.cpp */; }; - 26D5B12211B07550009A862E /* DisassemblerLLVM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C897410F57C5600BB2B04 /* DisassemblerLLVM.cpp */; }; - 26D5B12311B07550009A862E /* ThreadPlanRunToAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CAFCE031101218900CA63DB /* ThreadPlanRunToAddress.cpp */; }; - 26D5B12411B07550009A862E /* ThreadPlanShouldStopHere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C43DEFA110641F300E55CBF /* ThreadPlanShouldStopHere.cpp */; }; - 26D5B12511B07550009A862E /* ThreadPlanStepInRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C43DF8911069C3200E55CBF /* ThreadPlanStepInRange.cpp */; }; - 26D5B12611B07550009A862E /* ThreadPlanStepOverRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C43DF8A11069C3200E55CBF /* ThreadPlanStepOverRange.cpp */; }; - 26D5B12711B07550009A862E /* CommandObjectLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264AD83711095BA600E0B039 /* CommandObjectLog.cpp */; }; - 26D5B12811B07550009A862E /* ValueObjectRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 264334381110F63100CDB6C6 /* ValueObjectRegister.cpp */; }; - 26D5B12A11B07550009A862E /* UUID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C81CA511335651004BDC5A /* UUID.cpp */; }; - 26D5B12B11B07550009A862E /* ScriptInterpreterNone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A2771FC1135A37500E6ADB6 /* ScriptInterpreterNone.cpp */; }; - 26D5B12C11B07550009A862E /* CommandObjectCrossref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DFBC57113B48F300DD817F /* CommandObjectCrossref.cpp */; }; - 26D5B12D11B07550009A862E /* CommandObjectMultiword.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DFBC58113B48F300DD817F /* CommandObjectMultiword.cpp */; }; - 26D5B12E11B07550009A862E /* CommandObjectRegexCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DFBC59113B48F300DD817F /* CommandObjectRegexCommand.cpp */; }; - 26D5B12F11B07550009A862E /* Symbols.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2689B0B5113EE47E00A4AEDB /* Symbols.cpp */; }; - 26D5B13011B07550009A862E /* Debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 263664921140A4930075843B /* Debugger.cpp */; }; - 26D5B13611B07550009A862E /* UnixSignals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C00987011500B4300F316B0 /* UnixSignals.cpp */; }; - 26D5B13711B07550009A862E /* LogChannelDWARF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26109B3B1155D70100CC3529 /* LogChannelDWARF.cpp */; }; - 26D5B13811B07550009A862E /* PseudoTerminal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2682F16A115EDA0D00CCFF99 /* PseudoTerminal.cpp */; }; - 26D5B13911B07550009A862E /* LLDBWrapPython.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A4EEB511682AAC007A372A /* LLDBWrapPython.cpp */; }; - 26D5B13A11B07550009A862E /* StringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A35765F116E76B900E8ED2F /* StringList.cpp */; }; - 26D5B13B11B07550009A862E /* CommandCompletions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C09CB74116BD98B00C7A725 /* CommandCompletions.cpp */; }; - 26D5B13C11B07550009A862E /* AddressResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC7034011752C6B0086C050 /* AddressResolver.cpp */; }; - 26D5B13D11B07550009A862E /* AddressResolverFileLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC7034211752C720086C050 /* AddressResolverFileLine.cpp */; }; - 26D5B13E11B07550009A862E /* AddressResolverName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC7034411752C790086C050 /* AddressResolverName.cpp */; }; - 26D5B13F11B07550009A862E /* ObjectContainerBSDArchive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A3B4AC1181454800381BC2 /* ObjectContainerBSDArchive.cpp */; }; - 26D5B14011B07550009A862E /* CommandObjectBreakpointCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A42976211861AA600FE05CD /* CommandObjectBreakpointCommand.cpp */; }; - 26D5B14111B07550009A862E /* InputReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA69DB5118A027A00D753A0 /* InputReader.cpp */; }; - 26D5B14211B07550009A862E /* CommandObjectFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2672D8461189055500FF4019 /* CommandObjectFrame.cpp */; }; - 26D5B14311B07550009A862E /* ABISysV_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 493C63F11189203300914D5E /* ABISysV_x86_64.cpp */; }; - 26D5B14411B07550009A862E /* ABI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 497E7B9D1188F6690065CCA1 /* ABI.cpp */; }; - 26D5B14511B07550009A862E /* StringExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2660D9F611922A1300958FBD /* StringExtractor.cpp */; }; - 26D5B14611B07550009A862E /* ThreadPlanStepUntil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2660D9FE11922A7F00958FBD /* ThreadPlanStepUntil.cpp */; }; - 26D5B14711B07550009A862E /* ThreadPlanCallFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49EC3E98118F90AC00B1265E /* ThreadPlanCallFunction.cpp */; }; - 26D5B14811B07550009A862E /* ClangFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C98D3DA118FB96F00E575D0 /* ClangFunction.cpp */; }; - 26D5B14911B07550009A862E /* RecordingMemoryManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C98D3DB118FB96F00E575D0 /* RecordingMemoryManager.cpp */; settings = {COMPILER_FLAGS = "-fno-rtti"; }; }; - 26D5B14B11B07550009A862E /* CommandObjectTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 269416AD119A024800FF2715 /* CommandObjectTarget.cpp */; }; - 26D5B14C11B07550009A862E /* PathMappingList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 495BBACB119A0DBE00418BEA /* PathMappingList.cpp */; }; - 26D5B14D11B07550009A862E /* StringExtractorGDBRemote.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2676A093119C93C8008A98EF /* StringExtractorGDBRemote.cpp */; }; - 26D5B15311B07550009A862E /* ABIMacOSX_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 497650CE11A21BEE008DDB57 /* ABIMacOSX_i386.cpp */; }; - 26D5B15511B07550009A862E /* Baton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A0604811A5D03C00F75969 /* Baton.cpp */; }; - 26D5B15611B07550009A862E /* CommandObjectArgs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 499F381F11A5B3F300F5CE02 /* CommandObjectArgs.cpp */; }; - 26D5B15A11B07550009A862E /* UnwindMacOSXFrameBackchain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26E3EEE311A9901300FBADB6 /* UnwindMacOSXFrameBackchain.cpp */; }; - 26D5B15B11B07550009A862E /* RegisterContextMacOSXFrameBackchain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26E3EEF711A994E800FBADB6 /* RegisterContextMacOSXFrameBackchain.cpp */; }; 26D9FDC712F784E60003F2EE /* EmulateInstruction.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D9FDC612F784E60003F2EE /* EmulateInstruction.h */; }; - 26D9FDC912F784FD0003F2EE /* EmulateInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D9FDC812F784FD0003F2EE /* EmulateInstruction.cpp */; }; - 26D9FDCE12F7853F0003F2EE /* EmulateInstructionARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D9FDCC12F7853F0003F2EE /* EmulateInstructionARM.cpp */; }; 26D9FDCF12F7853F0003F2EE /* EmulateInstructionARM.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D9FDCD12F7853F0003F2EE /* EmulateInstructionARM.h */; }; 26DE1E6B11616C2E00A093E2 /* lldb-forward-rtti.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE1E6911616C2E00A093E2 /* lldb-forward-rtti.h */; settings = {ATTRIBUTES = (Public, ); }; }; 26DE1E6C11616C2E00A093E2 /* lldb-forward.h in Headers */ = {isa = PBXBuildFile; fileRef = 26DE1E6A11616C2E00A093E2 /* lldb-forward.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -329,7 +397,6 @@ 26DE20631161904200A093E2 /* SBLineEntry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DE20621161904200A093E2 /* SBLineEntry.cpp */; }; 26DE20651161904E00A093E2 /* SBSymbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DE20641161904E00A093E2 /* SBSymbol.cpp */; }; 26E6902F129C6BD500DDECD9 /* ClangExternalASTSourceCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 26E6902E129C6BD500DDECD9 /* ClangExternalASTSourceCallbacks.h */; }; - 26E69031129C6BEF00DDECD9 /* ClangExternalASTSourceCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26E69030129C6BEF00DDECD9 /* ClangExternalASTSourceCallbacks.cpp */; }; 26F5C27710F3D9E4009D5894 /* Driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F5C27310F3D9E4009D5894 /* Driver.cpp */; }; 26F5C27810F3D9E4009D5894 /* IOChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F5C27510F3D9E4009D5894 /* IOChannel.cpp */; }; 26F5C32510F3DF23009D5894 /* libpython.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 26F5C32410F3DF23009D5894 /* libpython.dylib */; }; @@ -338,55 +405,12 @@ 26F5C37510F3F61B009D5894 /* libobjc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 26F5C37410F3F61B009D5894 /* libobjc.dylib */; }; 26F5C39110F3FA26009D5894 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26F5C39010F3FA26009D5894 /* CoreFoundation.framework */; }; 26FA4316130103F400E71120 /* FileSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 26FA4315130103F400E71120 /* FileSpec.h */; }; - 26FA43181301048600E71120 /* FileSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26FA43171301048600E71120 /* FileSpec.cpp */; }; - 4906FD4212F2255300A2A77C /* ASTDumper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4906FD4012F2255300A2A77C /* ASTDumper.cpp */; }; - 491193521226386000578B7F /* ASTStructExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491193501226386000578B7F /* ASTStructExtractor.cpp */; }; - 49307AAE11DEA4D90081F992 /* IRForTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49307AAD11DEA4D90081F992 /* IRForTarget.cpp */; }; - 49445C2612245E3600C11A81 /* ClangExpressionParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49445C2512245E3600C11A81 /* ClangExpressionParser.cpp */; }; - 497C86BE122823D800B54702 /* ClangUtilityFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 497C86BD122823D800B54702 /* ClangUtilityFunction.cpp */; }; - 49A8A3A011D568A300AD3B68 /* ASTResultSynthesizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49A8A39F11D568A300AD3B68 /* ASTResultSynthesizer.cpp */; }; - 49CF982A122C70BD007A0B96 /* IRDynamicChecks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49CF9829122C70BD007A0B96 /* IRDynamicChecks.cpp */; }; - 49D4FE891210B61C00CDB854 /* ClangPersistentVariables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49D4FE871210B61C00CDB854 /* ClangPersistentVariables.cpp */; }; - 49D7072911B5AD11001AD875 /* ClangASTSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49D7072811B5AD11001AD875 /* ClangASTSource.cpp */; settings = {COMPILER_FLAGS = "-fno-rtti"; }; }; - 49DA743011DE6A5A006AEF7E /* IRToDWARF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49DA742F11DE6A5A006AEF7E /* IRToDWARF.cpp */; }; - 49E45FAF11F660FE008F7B28 /* ClangASTType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49E45FAD11F660FE008F7B28 /* ClangASTType.cpp */; }; - 49F1A74611B3388F003ED505 /* ClangExpressionDeclMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49F1A74511B3388F003ED505 /* ClangExpressionDeclMap.cpp */; }; - 49FB515E121481B000DF8983 /* DWARFExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7ED810F1B86700F91463 /* DWARFExpression.cpp */; }; - 4C08CDE811C81EF8001610A8 /* ThreadSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C08CDE711C81EF8001610A8 /* ThreadSpec.cpp */; }; - 4C0A91D812511CB900CA6636 /* AppleObjCTrampolineHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C0A91D412511CB900CA6636 /* AppleObjCTrampolineHandler.cpp */; }; - 4C0A91DA12511CB900CA6636 /* AppleThreadPlanStepThroughObjCTrampoline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C0A91D612511CB900CA6636 /* AppleThreadPlanStepThroughObjCTrampoline.cpp */; }; - 4C139EA5124A8B03000BFF8D /* AppleObjCRuntimeV2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C139EA3124A8B03000BFF8D /* AppleObjCRuntimeV2.cpp */; }; - 4C1AB23B1263E5F400D0F04A /* ThreadPlanTestCondition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C1AB23A1263E5F400D0F04A /* ThreadPlanTestCondition.cpp */; }; - 4C5DBBC811E3FEC60035160F /* CommandObjectCommands.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C5DBBC611E3FEC60035160F /* CommandObjectCommands.cpp */; }; - 4C61978C12823D4300FAFFCC /* AppleObjCRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C61978812823D4300FAFFCC /* AppleObjCRuntime.cpp */; }; 4C61978D12823D4300FAFFCC /* AppleObjCRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C61978912823D4300FAFFCC /* AppleObjCRuntime.h */; }; - 4C61978E12823D4300FAFFCC /* AppleObjCRuntimeV1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C61978A12823D4300FAFFCC /* AppleObjCRuntimeV1.cpp */; }; 4C61978F12823D4300FAFFCC /* AppleObjCRuntimeV1.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C61978B12823D4300FAFFCC /* AppleObjCRuntimeV1.h */; }; 4C626534130F1B0A00C889F6 /* StreamTee.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C626533130F1B0A00C889F6 /* StreamTee.h */; }; 4C74CB6312288704006A8171 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C74CB6212288704006A8171 /* Carbon.framework */; }; 4C7CF7E41295E10E00B4FBB5 /* ThreadPlanCallUserExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C7CF7E31295E10E00B4FBB5 /* ThreadPlanCallUserExpression.h */; }; - 4C7CF7E61295E12B00B4FBB5 /* ThreadPlanCallUserExpression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C7CF7E51295E12B00B4FBB5 /* ThreadPlanCallUserExpression.cpp */; }; - 4CA9637B11B6E99A00780E28 /* CommandObjectApropos.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CA9637911B6E99A00780E28 /* CommandObjectApropos.cpp */; }; - 4CB4430C12491DDA00C13DC2 /* LanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB4430A12491DDA00C13DC2 /* LanguageRuntime.cpp */; }; - 4CB4436C124944B000C13DC2 /* ItaniumABILanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB4436A124944B000C13DC2 /* ItaniumABILanguageRuntime.cpp */; }; - 4CB443BE1249920C00C13DC2 /* CPPLanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB443BC1249920C00C13DC2 /* CPPLanguageRuntime.cpp */; }; - 4CB443F312499B5000C13DC2 /* ObjCLanguageRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CB443F212499B5000C13DC2 /* ObjCLanguageRuntime.cpp */; }; - 4CC2A149128C73ED001531C4 /* ThreadPlanTracer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CC2A148128C73ED001531C4 /* ThreadPlanTracer.cpp */; }; 4CC2A14D128C7409001531C4 /* ThreadPlanTracer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC2A14C128C7409001531C4 /* ThreadPlanTracer.h */; }; - 69A01E211236C5D400C660B5 /* Condition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E1B1236C5D400C660B5 /* Condition.cpp */; }; - 69A01E221236C5D400C660B5 /* Host.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E1C1236C5D400C660B5 /* Host.cpp */; }; - 69A01E241236C5D400C660B5 /* Mutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E1E1236C5D400C660B5 /* Mutex.cpp */; }; - 69A01E251236C5D400C660B5 /* Symbols.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E1F1236C5D400C660B5 /* Symbols.cpp */; }; - 69A01E261236C5D400C660B5 /* TimeValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E201236C5D400C660B5 /* TimeValue.cpp */; }; - 961FABBB1235DE1600F93A47 /* FuncUnwinders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABB81235DE1600F93A47 /* FuncUnwinders.cpp */; }; - 961FABBC1235DE1600F93A47 /* UnwindPlan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABB91235DE1600F93A47 /* UnwindPlan.cpp */; }; - 961FABBD1235DE1600F93A47 /* UnwindTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABBA1235DE1600F93A47 /* UnwindTable.cpp */; }; - 961FABE51235F15900F93A47 /* UnwindAssemblyProfiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABE41235F15900F93A47 /* UnwindAssemblyProfiler.cpp */; }; - 961FABEA1235F26800F93A47 /* UnwindAssemblyProfiler-x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FABE81235F26800F93A47 /* UnwindAssemblyProfiler-x86.cpp */; }; - 961FAC19123605A200F93A47 /* ArchDefaultUnwindPlan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FAC18123605A200F93A47 /* ArchDefaultUnwindPlan.cpp */; }; - 961FAC1E12360C7D00F93A47 /* ArchDefaultUnwindPlan-x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 961FAC1C12360C7D00F93A47 /* ArchDefaultUnwindPlan-x86.cpp */; }; - 96A6D9C61249D96F00250B38 /* ArchVolatileRegs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 96A6D9C51249D96F00250B38 /* ArchVolatileRegs.cpp */; }; - 96A6D9C91249D98800250B38 /* ArchVolatileRegs-x86.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 96A6D9C71249D98800250B38 /* ArchVolatileRegs-x86.cpp */; }; 9A19A6AF1163BBB200E0D453 /* SBValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A19A6A51163BB7E00E0D453 /* SBValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9A19A6B01163BBB300E0D453 /* SBValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A19A6AD1163BB9800E0D453 /* SBValue.cpp */; }; 9A357583116CFDEE00E8ED2F /* SBValueList.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A357582116CFDEE00E8ED2F /* SBValueList.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -395,7 +419,6 @@ 9A357673116E7B6400E8ED2F /* SBStringList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A357672116E7B6400E8ED2F /* SBStringList.cpp */; }; 9A3576A8116E9AB700E8ED2F /* SBHostOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A3576A7116E9AB700E8ED2F /* SBHostOS.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9A3576AA116E9AC700E8ED2F /* SBHostOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A3576A9116E9AC700E8ED2F /* SBHostOS.cpp */; }; - 9A4633DD11F65D9A00955CE1 /* UserSettingsController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A4633DC11F65D9A00955CE1 /* UserSettingsController.cpp */; }; 9AA69DA61188F52100D753A0 /* PseudoTerminal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2682F16A115EDA0D00CCFF99 /* PseudoTerminal.cpp */; }; 9AA69DAF118A023300D753A0 /* SBInputReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AA69DAE118A023300D753A0 /* SBInputReader.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9AA69DB1118A024600D753A0 /* SBInputReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA69DB0118A024600D753A0 /* SBInputReader.cpp */; }; @@ -403,12 +426,8 @@ 9AC70390117675270086C050 /* SBInstructionList.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AC7038F117675270086C050 /* SBInstructionList.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9AC703AF117675410086C050 /* SBInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC703AE117675410086C050 /* SBInstruction.cpp */; }; 9AC703B1117675490086C050 /* SBInstructionList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC703B0117675490086C050 /* SBInstructionList.cpp */; }; - AF68D2561255416E002FF25B /* RegisterContextLLDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF68D2541255416E002FF25B /* RegisterContextLLDB.cpp */; }; - AF68D3311255A111002FF25B /* UnwindLLDB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF68D32F1255A110002FF25B /* UnwindLLDB.cpp */; }; - AF94005911C03F6500085DB9 /* SymbolVendor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF94005711C03F6500085DB9 /* SymbolVendor.cpp */; }; B23DD25012EDFAC1000C3894 /* ARMUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = B23DD24F12EDFAC1000C3894 /* ARMUtils.h */; }; B287E63F12EFAE2C00C9BEFE /* ARMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B287E63E12EFAE2C00C9BEFE /* ARMDefines.h */; }; - B296983712C2FB98002D92C3 /* CommandObjectVersion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B296983412C2FB2B002D92C3 /* CommandObjectVersion.cpp */; }; B2D3033712EFA5C500F84EB3 /* InstructionUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = B2D3033612EFA5C500F84EB3 /* InstructionUtils.h */; }; /* End PBXBuildFile section */ @@ -434,6 +453,13 @@ remoteGlobalIDString = 26680206115FD0ED008E1FE4; remoteInfo = LLDB; }; + 2689011413353E9B00698AC0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2689FFC913353D7A00698AC0; + remoteInfo = "lldb-core"; + }; 26CE059F115C31E50022F371 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 265E9BE1115C2BAA00D0DCCB /* debugserver.xcodeproj */; @@ -627,6 +653,7 @@ 26879CE71333F58B0012C1F8 /* CommandObjectPlatform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectPlatform.cpp; path = source/Commands/CommandObjectPlatform.cpp; sourceTree = ""; }; 2689B0A4113EE3CD00A4AEDB /* Symbols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Symbols.h; path = include/lldb/Host/Symbols.h; sourceTree = ""; }; 2689B0B5113EE47E00A4AEDB /* Symbols.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Symbols.cpp; path = source/Host/macosx/Symbols.cpp; sourceTree = ""; }; + 2689FFCA13353D7A00698AC0 /* liblldb-core.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = "liblldb-core.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 268A683D1321B53B000E3FB8 /* DynamicLoaderStatic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicLoaderStatic.cpp; sourceTree = ""; }; 268A683E1321B53B000E3FB8 /* DynamicLoaderStatic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLoaderStatic.h; sourceTree = ""; }; 268A813F115B19D000F645B0 /* UniqueCStringMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UniqueCStringMap.h; path = include/lldb/Core/UniqueCStringMap.h; sourceTree = ""; }; @@ -1156,6 +1183,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 268901161335BBC300698AC0 /* liblldb-core.a in Frameworks */, 2668022F115FD19D008E1FE4 /* CoreFoundation.framework in Frameworks */, 26680230115FD19E008E1FE4 /* DebugSymbols.framework in Frameworks */, 26680231115FD1A0008E1FE4 /* Foundation.framework in Frameworks */, @@ -1165,6 +1193,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 2689FFC713353D7A00698AC0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 26F5C26810F3D9A4009D5894 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1186,6 +1221,7 @@ 08FB7794FE84155DC02AAC07 /* lldb */ = { isa = PBXGroup; children = ( + 2689FFCA13353D7A00698AC0 /* liblldb-core.a */, 26F5C32810F3DF7D009D5894 /* Libraries */, 08FB7795FE84155DC02AAC07 /* Source */, 26F5C22410F3D950009D5894 /* Tools */, @@ -2432,6 +2468,31 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 2689FFC813353D7A00698AC0 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2689FFEE13353DB600698AC0 /* Breakpoint.h in Headers */, + 2689FFF013353DB600698AC0 /* BreakpointID.h in Headers */, + 2689FFF213353DB600698AC0 /* BreakpointIDList.h in Headers */, + 2689FFF413353DB600698AC0 /* BreakpointList.h in Headers */, + 2689FFF613353DB600698AC0 /* BreakpointLocation.h in Headers */, + 2689FFF813353DB600698AC0 /* BreakpointLocationCollection.h in Headers */, + 2689FFFA13353DB600698AC0 /* BreakpointLocationList.h in Headers */, + 2689FFFC13353DB600698AC0 /* BreakpointOptions.h in Headers */, + 2689FFFE13353DB600698AC0 /* BreakpointResolver.h in Headers */, + 2689000013353DB600698AC0 /* BreakpointResolverAddress.h in Headers */, + 2689000213353DB600698AC0 /* BreakpointResolverFileLine.h in Headers */, + 2689000413353DB600698AC0 /* BreakpointResolverName.h in Headers */, + 2689000613353DB600698AC0 /* BreakpointSite.h in Headers */, + 2689000813353DB600698AC0 /* BreakpointSiteList.h in Headers */, + 2689000A13353DB600698AC0 /* Stoppoint.h in Headers */, + 2689000C13353DB600698AC0 /* StoppointCallbackContext.h in Headers */, + 2689000E13353DB600698AC0 /* StoppointLocation.h in Headers */, + 2689001013353DB600698AC0 /* WatchpointLocation.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -2467,6 +2528,7 @@ buildRules = ( ); dependencies = ( + 2689011513353E9B00698AC0 /* PBXTargetDependency */, 262CFC7211A450CB00946C6C /* PBXTargetDependency */, 26368AF6126B95FA00E8659F /* PBXTargetDependency */, ); @@ -2475,6 +2537,23 @@ productReference = 26680207115FD0ED008E1FE4 /* LLDB.framework */; productType = "com.apple.product-type.framework"; }; + 2689FFC913353D7A00698AC0 /* lldb-core */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2689FFD813353D7A00698AC0 /* Build configuration list for PBXNativeTarget "lldb-core" */; + buildPhases = ( + 2689FFC613353D7A00698AC0 /* Sources */, + 2689FFC713353D7A00698AC0 /* Frameworks */, + 2689FFC813353D7A00698AC0 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "lldb-core"; + productName = "lldb-core"; + productReference = 2689FFCA13353D7A00698AC0 /* liblldb-core.a */; + productType = "com.apple.product-type.library.dynamic"; + }; 26F5C26910F3D9A4009D5894 /* lldb-tool */ = { isa = PBXNativeTarget; buildConfigurationList = 26F5C26E10F3D9C5009D5894 /* Build configuration list for PBXNativeTarget "lldb-tool" */; @@ -2518,6 +2597,7 @@ 26F5C26910F3D9A4009D5894 /* lldb-tool */, 26680206115FD0ED008E1FE4 /* LLDB */, 26579F67126A25920007C5CB /* darwin-debug */, + 2689FFC913353D7A00698AC0 /* lldb-core */, ); }; /* End PBXProject section */ @@ -2626,214 +2706,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 26D5B06511B07550009A862E /* StoppointCallbackContext.cpp in Sources */, - 26D5B06611B07550009A862E /* Breakpoint.cpp in Sources */, - 26D5B06711B07550009A862E /* BreakpointID.cpp in Sources */, - 26D5B06811B07550009A862E /* BreakpointIDList.cpp in Sources */, - 26D5B06911B07550009A862E /* BreakpointList.cpp in Sources */, - 26D5B06A11B07550009A862E /* BreakpointLocation.cpp in Sources */, - 26D5B06B11B07550009A862E /* BreakpointLocationCollection.cpp in Sources */, - 26D5B06C11B07550009A862E /* BreakpointLocationList.cpp in Sources */, - 26D5B06D11B07550009A862E /* BreakpointOptions.cpp in Sources */, - 26D5B06E11B07550009A862E /* BreakpointResolver.cpp in Sources */, - 26D5B06F11B07550009A862E /* BreakpointSite.cpp in Sources */, - 26D5B07011B07550009A862E /* BreakpointSiteList.cpp in Sources */, - 26D5B07111B07550009A862E /* SearchFilter.cpp in Sources */, - 26D5B07211B07550009A862E /* Stoppoint.cpp in Sources */, - 26D5B07311B07550009A862E /* StoppointLocation.cpp in Sources */, - 26D5B07411B07550009A862E /* WatchpointLocation.cpp in Sources */, - 26D5B07711B07550009A862E /* CommandObjectBreakpoint.cpp in Sources */, - 26D5B07911B07550009A862E /* CommandObjectDisassemble.cpp in Sources */, - 26D5B07A11B07550009A862E /* CommandObjectExpression.cpp in Sources */, - 26D5B07B11B07550009A862E /* CommandObjectFile.cpp in Sources */, - 26D5B07C11B07550009A862E /* CommandObjectHelp.cpp in Sources */, - 26D5B07D11B07550009A862E /* CommandObjectImage.cpp in Sources */, - 26D5B07F11B07550009A862E /* CommandObjectMemory.cpp in Sources */, - 26D5B08011B07550009A862E /* CommandObjectProcess.cpp in Sources */, - 26D5B08111B07550009A862E /* CommandObjectQuit.cpp in Sources */, - 26D5B08211B07550009A862E /* CommandObjectRegister.cpp in Sources */, - 26D5B08311B07550009A862E /* CommandObjectScript.cpp in Sources */, - 26D5B08611B07550009A862E /* CommandObjectSettings.cpp in Sources */, - 26D5B08811B07550009A862E /* CommandObjectSource.cpp in Sources */, - 26D5B08B11B07550009A862E /* CommandObjectSyntax.cpp in Sources */, - 26D5B08C11B07550009A862E /* CommandObjectThread.cpp in Sources */, - 26D5B08E11B07550009A862E /* Address.cpp in Sources */, - 26D5B08F11B07550009A862E /* AddressRange.cpp in Sources */, - 26D5B09011B07550009A862E /* ArchSpec.cpp in Sources */, - 26D5B09111B07550009A862E /* Args.cpp in Sources */, - 26D5B09211B07550009A862E /* Broadcaster.cpp in Sources */, - 26D5B09311B07550009A862E /* Communication.cpp in Sources */, - 26D5B09411B07550009A862E /* Connection.cpp in Sources */, - 26D5B09511B07550009A862E /* ConnectionFileDescriptor.cpp in Sources */, - 26D5B09611B07550009A862E /* DataExtractor.cpp in Sources */, - 26D5B09711B07550009A862E /* DataBufferHeap.cpp in Sources */, - 26D5B09811B07550009A862E /* DataBufferMemoryMap.cpp in Sources */, - 26D5B09911B07550009A862E /* lldb.cpp in Sources */, - 26D5B09A11B07550009A862E /* lldb-log.cpp in Sources */, - 26D5B09B11B07550009A862E /* Disassembler.cpp in Sources */, - 26D5B09C11B07550009A862E /* DynamicLoader.cpp in Sources */, - 26D5B09D11B07550009A862E /* Error.cpp in Sources */, - 26D5B09E11B07550009A862E /* Event.cpp in Sources */, - 26D5B0A011B07550009A862E /* FileSpecList.cpp in Sources */, - 26D5B0A211B07550009A862E /* Language.cpp in Sources */, - 26D5B0A311B07550009A862E /* Listener.cpp in Sources */, - 26D5B0A411B07550009A862E /* Log.cpp in Sources */, - 26D5B0A511B07550009A862E /* Mangled.cpp in Sources */, - 26D5B0A611B07550009A862E /* Module.cpp in Sources */, - 26D5B0A711B07550009A862E /* ModuleChild.cpp in Sources */, - 26D5B0A811B07550009A862E /* ModuleList.cpp in Sources */, - 26D5B0A911B07550009A862E /* Options.cpp in Sources */, - 26D5B0AA11B07550009A862E /* PluginManager.cpp in Sources */, - 26D5B0AB11B07550009A862E /* RegularExpression.cpp in Sources */, - 26D5B0AC11B07550009A862E /* Scalar.cpp in Sources */, - 26D5B0AD11B07550009A862E /* Section.cpp in Sources */, - 26D5B0AE11B07550009A862E /* SourceManager.cpp in Sources */, - 26D5B0AF11B07550009A862E /* State.cpp in Sources */, - 26D5B0B011B07550009A862E /* Stream.cpp in Sources */, - 26D5B0B111B07550009A862E /* StreamFile.cpp in Sources */, - 26D5B0B211B07550009A862E /* StreamString.cpp in Sources */, - 26D5B0B311B07550009A862E /* ConstString.cpp in Sources */, - 26D5B0B411B07550009A862E /* Timer.cpp in Sources */, - 26D5B0B611B07550009A862E /* UserID.cpp in Sources */, - 26D5B0B711B07550009A862E /* Value.cpp in Sources */, - 26D5B0B811B07550009A862E /* ValueObject.cpp in Sources */, - 26D5B0B911B07550009A862E /* ValueObjectChild.cpp in Sources */, - 26D5B0BA11B07550009A862E /* ValueObjectList.cpp in Sources */, - 26D5B0BB11B07550009A862E /* ValueObjectVariable.cpp in Sources */, - 26D5B0BC11B07550009A862E /* VMRange.cpp in Sources */, - 26D5B0BD11B07550009A862E /* ClangUserExpression.cpp in Sources */, - 26D5B0BE11B07550009A862E /* ClangExpressionVariable.cpp in Sources */, 26D5B0C211B07550009A862E /* Host.mm in Sources */, - 26D5B0C411B07550009A862E /* CFCBundle.cpp in Sources */, - 26D5B0C511B07550009A862E /* CFCData.cpp in Sources */, - 26D5B0C611B07550009A862E /* CFCMutableArray.cpp in Sources */, - 26D5B0C711B07550009A862E /* CFCMutableDictionary.cpp in Sources */, - 26D5B0C811B07550009A862E /* CFCMutableSet.cpp in Sources */, - 26D5B0C911B07550009A862E /* CFCString.cpp in Sources */, - 26D5B0CB11B07550009A862E /* CommandInterpreter.cpp in Sources */, - 26D5B0CC11B07550009A862E /* CommandObject.cpp in Sources */, - 26D5B0CD11B07550009A862E /* CommandReturnObject.cpp in Sources */, - 26D5B0CF11B07550009A862E /* ScriptInterpreterPython.cpp in Sources */, - 26D5B0D011B07550009A862E /* Block.cpp in Sources */, - 26D5B0D111B07550009A862E /* ClangASTContext.cpp in Sources */, - 26D5B0D211B07550009A862E /* CompileUnit.cpp in Sources */, - 26D5B0D311B07550009A862E /* Declaration.cpp in Sources */, - 26D5B0D411B07550009A862E /* DWARFCallFrameInfo.cpp in Sources */, - 26D5B0D511B07550009A862E /* Function.cpp in Sources */, - 26D5B0D611B07550009A862E /* LineEntry.cpp in Sources */, - 26D5B0D711B07550009A862E /* LineTable.cpp in Sources */, - 26D5B0D811B07550009A862E /* Symbol.cpp in Sources */, - 26D5B0D911B07550009A862E /* SymbolContext.cpp in Sources */, - 26D5B0DA11B07550009A862E /* SymbolFile.cpp in Sources */, - 26D5B0DC11B07550009A862E /* Symtab.cpp in Sources */, - 26D5B0DD11B07550009A862E /* Type.cpp in Sources */, - 26D5B0DE11B07550009A862E /* TypeList.cpp in Sources */, - 26D5B0DF11B07550009A862E /* Variable.cpp in Sources */, - 26D5B0E011B07550009A862E /* VariableList.cpp in Sources */, - 26D5B0E111B07550009A862E /* ExecutionContext.cpp in Sources */, - 26D5B0E211B07550009A862E /* Process.cpp in Sources */, - 26D5B0E311B07550009A862E /* RegisterContext.cpp in Sources */, - 26D5B0E411B07550009A862E /* StackFrame.cpp in Sources */, - 26D5B0E511B07550009A862E /* StackFrameList.cpp in Sources */, - 26D5B0E611B07550009A862E /* StackID.cpp in Sources */, - 26D5B0E711B07550009A862E /* Target.cpp in Sources */, - 26D5B0E811B07550009A862E /* TargetList.cpp in Sources */, - 26D5B0E911B07550009A862E /* Thread.cpp in Sources */, - 26D5B0EA11B07550009A862E /* ThreadList.cpp in Sources */, - 26D5B0EB11B07550009A862E /* ThreadPlan.cpp in Sources */, - 26D5B0EC11B07550009A862E /* ObjectFile.cpp in Sources */, - 26D5B0EE11B07550009A862E /* ThreadPlanBase.cpp in Sources */, - 26D5B0EF11B07550009A862E /* ThreadPlanStepInstruction.cpp in Sources */, - 26D5B0F011B07550009A862E /* ThreadPlanStepOut.cpp in Sources */, - 26D5B0F111B07550009A862E /* ThreadPlanStepOverBreakpoint.cpp in Sources */, - 26D5B0F211B07550009A862E /* ThreadPlanStepThrough.cpp in Sources */, - 26D5B0F311B07550009A862E /* ThreadPlanStepRange.cpp in Sources */, - 26D5B0F411B07550009A862E /* DynamicLoaderMacOSXDYLD.cpp in Sources */, - 26D5B0F611B07550009A862E /* ObjectContainerUniversalMachO.cpp in Sources */, - 26D5B0F711B07550009A862E /* ObjectFileELF.cpp in Sources */, - 26D5B0F811B07550009A862E /* ObjectFileMachO.cpp in Sources */, - 26D5B0F911B07550009A862E /* MachException.cpp in Sources */, - 26D5B0FA11B07550009A862E /* MachTask.cpp in Sources */, - 26D5B0FB11B07550009A862E /* MachThreadContext_arm.cpp in Sources */, - 26D5B0FC11B07550009A862E /* MachThreadContext_i386.cpp in Sources */, - 26D5B0FD11B07550009A862E /* MachThreadContext_x86_64.cpp in Sources */, - 26D5B0FE11B07550009A862E /* MachVMMemory.cpp in Sources */, - 26D5B0FF11B07550009A862E /* MachVMRegion.cpp in Sources */, 26D5B10011B07550009A862E /* ProcessControl-mig.defs in Sources */, - 26D5B10111B07550009A862E /* ProcessMacOSX.cpp in Sources */, - 26D5B10211B07550009A862E /* ProcessMacOSXLog.cpp in Sources */, - 26D5B10311B07550009A862E /* RegisterContextMach_arm.cpp in Sources */, - 26D5B10411B07550009A862E /* RegisterContextMach_i386.cpp in Sources */, - 26D5B10511B07550009A862E /* RegisterContextMach_x86_64.cpp in Sources */, - 26D5B10611B07550009A862E /* ThreadMacOSX.cpp in Sources */, - 26D5B10711B07550009A862E /* DWARFAbbreviationDeclaration.cpp in Sources */, - 26D5B10811B07550009A862E /* DWARFCompileUnit.cpp in Sources */, - 26D5B10911B07550009A862E /* DWARFDebugAbbrev.cpp in Sources */, - 26D5B10A11B07550009A862E /* DWARFDebugAranges.cpp in Sources */, - 26D5B10B11B07550009A862E /* DWARFDebugArangeSet.cpp in Sources */, - 26D5B10C11B07550009A862E /* DWARFDebugInfo.cpp in Sources */, - 26D5B10D11B07550009A862E /* DWARFDebugInfoEntry.cpp in Sources */, - 26D5B10E11B07550009A862E /* DWARFDebugLine.cpp in Sources */, - 26D5B10F11B07550009A862E /* DWARFDebugMacinfo.cpp in Sources */, - 26D5B11011B07550009A862E /* DWARFDebugMacinfoEntry.cpp in Sources */, - 26D5B11111B07550009A862E /* DWARFDebugPubnames.cpp in Sources */, - 26D5B11211B07550009A862E /* DWARFDebugPubnamesSet.cpp in Sources */, - 26D5B11311B07550009A862E /* DWARFDebugRanges.cpp in Sources */, - 26D5B11411B07550009A862E /* DWARFDefines.cpp in Sources */, - 26D5B11511B07550009A862E /* DWARFDIECollection.cpp in Sources */, - 26D5B11611B07550009A862E /* DWARFFormValue.cpp in Sources */, - 26D5B11711B07550009A862E /* DWARFLocationDescription.cpp in Sources */, - 26D5B11811B07550009A862E /* DWARFLocationList.cpp in Sources */, - 26D5B11911B07550009A862E /* SymbolFileDWARF.cpp in Sources */, - 26D5B11A11B07550009A862E /* SymbolFileDWARFDebugMap.cpp in Sources */, - 26D5B11B11B07550009A862E /* SymbolFileSymtab.cpp in Sources */, - 26D5B11C11B07550009A862E /* SymbolVendorMacOSX.cpp in Sources */, - 26D5B11E11B07550009A862E /* ScriptInterpreter.cpp in Sources */, - 26D5B11F11B07550009A862E /* BreakpointResolverAddress.cpp in Sources */, - 26D5B12011B07550009A862E /* BreakpointResolverFileLine.cpp in Sources */, - 26D5B12111B07550009A862E /* BreakpointResolverName.cpp in Sources */, - 26D5B12211B07550009A862E /* DisassemblerLLVM.cpp in Sources */, - 26D5B12311B07550009A862E /* ThreadPlanRunToAddress.cpp in Sources */, - 26D5B12411B07550009A862E /* ThreadPlanShouldStopHere.cpp in Sources */, - 26D5B12511B07550009A862E /* ThreadPlanStepInRange.cpp in Sources */, - 26D5B12611B07550009A862E /* ThreadPlanStepOverRange.cpp in Sources */, - 26D5B12711B07550009A862E /* CommandObjectLog.cpp in Sources */, - 26D5B12811B07550009A862E /* ValueObjectRegister.cpp in Sources */, - 26D5B12A11B07550009A862E /* UUID.cpp in Sources */, - 26D5B12B11B07550009A862E /* ScriptInterpreterNone.cpp in Sources */, - 26D5B12C11B07550009A862E /* CommandObjectCrossref.cpp in Sources */, - 26D5B12D11B07550009A862E /* CommandObjectMultiword.cpp in Sources */, - 26D5B12E11B07550009A862E /* CommandObjectRegexCommand.cpp in Sources */, - 26D5B12F11B07550009A862E /* Symbols.cpp in Sources */, - 26D5B13011B07550009A862E /* Debugger.cpp in Sources */, - 26D5B13611B07550009A862E /* UnixSignals.cpp in Sources */, - 26D5B13711B07550009A862E /* LogChannelDWARF.cpp in Sources */, - 26D5B13811B07550009A862E /* PseudoTerminal.cpp in Sources */, - 26D5B13911B07550009A862E /* LLDBWrapPython.cpp in Sources */, - 26D5B13A11B07550009A862E /* StringList.cpp in Sources */, - 26D5B13B11B07550009A862E /* CommandCompletions.cpp in Sources */, - 26D5B13C11B07550009A862E /* AddressResolver.cpp in Sources */, - 26D5B13D11B07550009A862E /* AddressResolverFileLine.cpp in Sources */, - 26D5B13E11B07550009A862E /* AddressResolverName.cpp in Sources */, - 26D5B13F11B07550009A862E /* ObjectContainerBSDArchive.cpp in Sources */, - 26D5B14011B07550009A862E /* CommandObjectBreakpointCommand.cpp in Sources */, - 26D5B14111B07550009A862E /* InputReader.cpp in Sources */, - 26D5B14211B07550009A862E /* CommandObjectFrame.cpp in Sources */, - 26D5B14311B07550009A862E /* ABISysV_x86_64.cpp in Sources */, - 26D5B14411B07550009A862E /* ABI.cpp in Sources */, - 26D5B14511B07550009A862E /* StringExtractor.cpp in Sources */, - 26D5B14611B07550009A862E /* ThreadPlanStepUntil.cpp in Sources */, - 26D5B14711B07550009A862E /* ThreadPlanCallFunction.cpp in Sources */, - 26D5B14811B07550009A862E /* ClangFunction.cpp in Sources */, - 26D5B14911B07550009A862E /* RecordingMemoryManager.cpp in Sources */, - 26D5B14B11B07550009A862E /* CommandObjectTarget.cpp in Sources */, - 26D5B14C11B07550009A862E /* PathMappingList.cpp in Sources */, - 26D5B14D11B07550009A862E /* StringExtractorGDBRemote.cpp in Sources */, - 26D5B15311B07550009A862E /* ABIMacOSX_i386.cpp in Sources */, - 26D5B15511B07550009A862E /* Baton.cpp in Sources */, - 26D5B15611B07550009A862E /* CommandObjectArgs.cpp in Sources */, - 26D5B15A11B07550009A862E /* UnwindMacOSXFrameBackchain.cpp in Sources */, - 26D5B15B11B07550009A862E /* RegisterContextMacOSXFrameBackchain.cpp in Sources */, 26680324116005D9008E1FE4 /* SBThread.cpp in Sources */, 26680326116005DB008E1FE4 /* SBTarget.cpp in Sources */, 26680327116005DC008E1FE4 /* SBSourceManager.cpp in Sources */, @@ -2866,80 +2740,293 @@ 9AC703AF117675410086C050 /* SBInstruction.cpp in Sources */, 9AC703B1117675490086C050 /* SBInstructionList.cpp in Sources */, 9AA69DB1118A024600D753A0 /* SBInputReader.cpp in Sources */, - 49F1A74611B3388F003ED505 /* ClangExpressionDeclMap.cpp in Sources */, - 49D7072911B5AD11001AD875 /* ClangASTSource.cpp in Sources */, - 4CA9637B11B6E99A00780E28 /* CommandObjectApropos.cpp in Sources */, - AF94005911C03F6500085DB9 /* SymbolVendor.cpp in Sources */, - 261B5A5411C3F2AD00AABD0A /* SharingPtr.cpp in Sources */, - 4C08CDE811C81EF8001610A8 /* ThreadSpec.cpp in Sources */, - 49A8A3A011D568A300AD3B68 /* ASTResultSynthesizer.cpp in Sources */, - 49DA743011DE6A5A006AEF7E /* IRToDWARF.cpp in Sources */, - 49307AAE11DEA4D90081F992 /* IRForTarget.cpp in Sources */, - 4C5DBBC811E3FEC60035160F /* CommandObjectCommands.cpp in Sources */, - 26D27C9F11ED3A4E0024D721 /* ELFHeader.cpp in Sources */, - 9A4633DD11F65D9A00955CE1 /* UserSettingsController.cpp in Sources */, - 49E45FAF11F660FE008F7B28 /* ClangASTType.cpp in Sources */, - 2615DB871208A9E40021781D /* StopInfo.cpp in Sources */, - 2615DBCA1208B5FC0021781D /* StopInfoMachException.cpp in Sources */, - 49D4FE891210B61C00CDB854 /* ClangPersistentVariables.cpp in Sources */, - 49FB515E121481B000DF8983 /* DWARFExpression.cpp in Sources */, - 49445C2612245E3600C11A81 /* ClangExpressionParser.cpp in Sources */, - 491193521226386000578B7F /* ASTStructExtractor.cpp in Sources */, - 497C86BE122823D800B54702 /* ClangUtilityFunction.cpp in Sources */, - 49CF982A122C70BD007A0B96 /* IRDynamicChecks.cpp in Sources */, - 961FABBB1235DE1600F93A47 /* FuncUnwinders.cpp in Sources */, - 961FABBC1235DE1600F93A47 /* UnwindPlan.cpp in Sources */, - 961FABBD1235DE1600F93A47 /* UnwindTable.cpp in Sources */, - 961FABE51235F15900F93A47 /* UnwindAssemblyProfiler.cpp in Sources */, - 961FABEA1235F26800F93A47 /* UnwindAssemblyProfiler-x86.cpp in Sources */, - 961FAC19123605A200F93A47 /* ArchDefaultUnwindPlan.cpp in Sources */, - 961FAC1E12360C7D00F93A47 /* ArchDefaultUnwindPlan-x86.cpp in Sources */, - 69A01E211236C5D400C660B5 /* Condition.cpp in Sources */, - 69A01E221236C5D400C660B5 /* Host.cpp in Sources */, - 69A01E241236C5D400C660B5 /* Mutex.cpp in Sources */, - 69A01E251236C5D400C660B5 /* Symbols.cpp in Sources */, - 69A01E261236C5D400C660B5 /* TimeValue.cpp in Sources */, 268F9D55123AA16600B91E9B /* SBSymbolContextList.cpp in Sources */, - 2618D7921240116900F2B8FE /* SectionLoadList.cpp in Sources */, - 2618D9EB12406FE600F2B8FE /* NameToDIE.cpp in Sources */, 26C72C961243229A0068DC16 /* SBStream.cpp in Sources */, - 4CB4430C12491DDA00C13DC2 /* LanguageRuntime.cpp in Sources */, - 4CB4436C124944B000C13DC2 /* ItaniumABILanguageRuntime.cpp in Sources */, - 4CB443BE1249920C00C13DC2 /* CPPLanguageRuntime.cpp in Sources */, - 4CB443F312499B5000C13DC2 /* ObjCLanguageRuntime.cpp in Sources */, - 96A6D9C61249D96F00250B38 /* ArchVolatileRegs.cpp in Sources */, - 96A6D9C91249D98800250B38 /* ArchVolatileRegs-x86.cpp in Sources */, - 4C139EA5124A8B03000BFF8D /* AppleObjCRuntimeV2.cpp in Sources */, - 4C0A91D812511CB900CA6636 /* AppleObjCTrampolineHandler.cpp in Sources */, - 4C0A91DA12511CB900CA6636 /* AppleThreadPlanStepThroughObjCTrampoline.cpp in Sources */, - AF68D2561255416E002FF25B /* RegisterContextLLDB.cpp in Sources */, - AF68D3311255A111002FF25B /* UnwindLLDB.cpp in Sources */, - 26424E3D125986CB0016D82C /* ValueObjectConstResult.cpp in Sources */, - 4C1AB23B1263E5F400D0F04A /* ThreadPlanTestCondition.cpp in Sources */, - 4C61978C12823D4300FAFFCC /* AppleObjCRuntime.cpp in Sources */, - 4C61978E12823D4300FAFFCC /* AppleObjCRuntimeV1.cpp in Sources */, - 4CC2A149128C73ED001531C4 /* ThreadPlanTracer.cpp in Sources */, - 266A42D6128E3FFB0090CF7C /* ClangNamespaceDecl.cpp in Sources */, - 26E69031129C6BEF00DDECD9 /* ClangExternalASTSourceCallbacks.cpp in Sources */, - 4C7CF7E61295E12B00B4FBB5 /* ThreadPlanCallUserExpression.cpp in Sources */, - B296983712C2FB98002D92C3 /* CommandObjectVersion.cpp in Sources */, - 26D9FDC912F784FD0003F2EE /* EmulateInstruction.cpp in Sources */, - 26D9FDCE12F7853F0003F2EE /* EmulateInstructionARM.cpp in Sources */, - 26B8B42512EEC52A00A831B2 /* UniqueDWARFASTType.cpp in Sources */, - 4906FD4212F2255300A2A77C /* ASTDumper.cpp in Sources */, - 268DA874130095ED00C9483A /* Terminal.cpp in Sources */, - 26FA43181301048600E71120 /* FileSpec.cpp in Sources */, - 260C6EA313011581005E16B0 /* File.cpp in Sources */, - 2618EE651315B29C001D6D71 /* GDBRemoteCommunication.cpp in Sources */, - 2618EE671315B29C001D6D71 /* GDBRemoteRegisterContext.cpp in Sources */, - 2618EE691315B29C001D6D71 /* ProcessGDBRemote.cpp in Sources */, - 2618EE6B1315B29C001D6D71 /* ProcessGDBRemoteLog.cpp in Sources */, - 2618EE6D1315B29C001D6D71 /* ThreadGDBRemote.cpp in Sources */, - 264A43BE1320BCEB005B4096 /* Platform.cpp in Sources */, - 268A683F1321B53B000E3FB8 /* DynamicLoaderStatic.cpp in Sources */, - 26C557801325781A008FD8FE /* PlatformMacOSX.cpp in Sources */, - 2675F7001332BE690067997B /* PlatformRemoteiOS.cpp in Sources */, - 26879CE81333F58B0012C1F8 /* CommandObjectPlatform.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2689FFC613353D7A00698AC0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2689FFDA13353D9D00698AC0 /* lldb.cpp in Sources */, + 2689FFDB13353DA300698AC0 /* lldb-log.cpp in Sources */, + 2689FFEF13353DB600698AC0 /* Breakpoint.cpp in Sources */, + 2689FFF113353DB600698AC0 /* BreakpointID.cpp in Sources */, + 2689FFF313353DB600698AC0 /* BreakpointIDList.cpp in Sources */, + 2689FFF513353DB600698AC0 /* BreakpointList.cpp in Sources */, + 2689FFF713353DB600698AC0 /* BreakpointLocation.cpp in Sources */, + 2689FFF913353DB600698AC0 /* BreakpointLocationCollection.cpp in Sources */, + 2689FFFB13353DB600698AC0 /* BreakpointLocationList.cpp in Sources */, + 2689FFFD13353DB600698AC0 /* BreakpointOptions.cpp in Sources */, + 2689FFFF13353DB600698AC0 /* BreakpointResolver.cpp in Sources */, + 2689000113353DB600698AC0 /* BreakpointResolverAddress.cpp in Sources */, + 2689000313353DB600698AC0 /* BreakpointResolverFileLine.cpp in Sources */, + 2689000513353DB600698AC0 /* BreakpointResolverName.cpp in Sources */, + 2689000713353DB600698AC0 /* BreakpointSite.cpp in Sources */, + 2689000913353DB600698AC0 /* BreakpointSiteList.cpp in Sources */, + 2689000B13353DB600698AC0 /* Stoppoint.cpp in Sources */, + 2689000D13353DB600698AC0 /* StoppointCallbackContext.cpp in Sources */, + 2689000F13353DB600698AC0 /* StoppointLocation.cpp in Sources */, + 2689001113353DB600698AC0 /* WatchpointLocation.cpp in Sources */, + 2689001213353DDE00698AC0 /* CommandObjectApropos.cpp in Sources */, + 2689001313353DDE00698AC0 /* CommandObjectArgs.cpp in Sources */, + 2689001413353DDE00698AC0 /* CommandObjectBreakpoint.cpp in Sources */, + 2689001513353DDE00698AC0 /* CommandObjectBreakpointCommand.cpp in Sources */, + 2689001613353DDE00698AC0 /* CommandObjectCommands.cpp in Sources */, + 2689001713353DDE00698AC0 /* CommandObjectDisassemble.cpp in Sources */, + 2689001813353DDE00698AC0 /* CommandObjectExpression.cpp in Sources */, + 2689001913353DDE00698AC0 /* CommandObjectFile.cpp in Sources */, + 2689001A13353DDE00698AC0 /* CommandObjectFrame.cpp in Sources */, + 2689001B13353DDE00698AC0 /* CommandObjectHelp.cpp in Sources */, + 2689001C13353DDE00698AC0 /* CommandObjectImage.cpp in Sources */, + 2689001D13353DDE00698AC0 /* CommandObjectLog.cpp in Sources */, + 2689001E13353DDE00698AC0 /* CommandObjectMemory.cpp in Sources */, + 2689001F13353DDE00698AC0 /* CommandObjectPlatform.cpp in Sources */, + 2689002013353DDE00698AC0 /* CommandObjectProcess.cpp in Sources */, + 2689002113353DDE00698AC0 /* CommandObjectQuit.cpp in Sources */, + 2689002213353DDE00698AC0 /* CommandObjectRegister.cpp in Sources */, + 2689002313353DDE00698AC0 /* CommandObjectScript.cpp in Sources */, + 2689002413353DDE00698AC0 /* CommandObjectSettings.cpp in Sources */, + 2689002513353DDE00698AC0 /* CommandObjectSource.cpp in Sources */, + 2689002613353DDE00698AC0 /* CommandObjectSyntax.cpp in Sources */, + 2689002713353DDE00698AC0 /* CommandObjectTarget.cpp in Sources */, + 2689002813353DDE00698AC0 /* CommandObjectThread.cpp in Sources */, + 2689002913353DDE00698AC0 /* CommandObjectVersion.cpp in Sources */, + 2689002A13353E0400698AC0 /* Address.cpp in Sources */, + 2689002B13353E0400698AC0 /* AddressRange.cpp in Sources */, + 2689002C13353E0400698AC0 /* AddressResolver.cpp in Sources */, + 2689002D13353E0400698AC0 /* AddressResolverFileLine.cpp in Sources */, + 2689002E13353E0400698AC0 /* AddressResolverName.cpp in Sources */, + 2689002F13353E0400698AC0 /* ArchSpec.cpp in Sources */, + 2689003013353E0400698AC0 /* Baton.cpp in Sources */, + 2689003113353E0400698AC0 /* Broadcaster.cpp in Sources */, + 2689003213353E0400698AC0 /* Communication.cpp in Sources */, + 2689003313353E0400698AC0 /* Connection.cpp in Sources */, + 2689003413353E0400698AC0 /* ConnectionFileDescriptor.cpp in Sources */, + 2689003513353E0400698AC0 /* ConstString.cpp in Sources */, + 2689003613353E0400698AC0 /* DataBufferHeap.cpp in Sources */, + 2689003713353E0400698AC0 /* DataBufferMemoryMap.cpp in Sources */, + 2689003813353E0400698AC0 /* DataExtractor.cpp in Sources */, + 2689003913353E0400698AC0 /* Debugger.cpp in Sources */, + 2689003A13353E0400698AC0 /* Disassembler.cpp in Sources */, + 2689003B13353E0400698AC0 /* EmulateInstruction.cpp in Sources */, + 2689003C13353E0400698AC0 /* Error.cpp in Sources */, + 2689003D13353E0400698AC0 /* Event.cpp in Sources */, + 2689003E13353E0400698AC0 /* FileSpecList.cpp in Sources */, + 2689003F13353E0400698AC0 /* InputReader.cpp in Sources */, + 2689004013353E0400698AC0 /* Language.cpp in Sources */, + 2689004113353E0400698AC0 /* Listener.cpp in Sources */, + 2689004213353E0400698AC0 /* Log.cpp in Sources */, + 2689004313353E0400698AC0 /* Mangled.cpp in Sources */, + 2689004413353E0400698AC0 /* Module.cpp in Sources */, + 2689004513353E0400698AC0 /* ModuleChild.cpp in Sources */, + 2689004613353E0400698AC0 /* ModuleList.cpp in Sources */, + 2689004713353E0400698AC0 /* PluginManager.cpp in Sources */, + 2689004813353E0400698AC0 /* RegularExpression.cpp in Sources */, + 2689004913353E0400698AC0 /* Scalar.cpp in Sources */, + 2689004A13353E0400698AC0 /* SearchFilter.cpp in Sources */, + 2689004B13353E0400698AC0 /* Section.cpp in Sources */, + 2689004C13353E0400698AC0 /* SourceManager.cpp in Sources */, + 2689004D13353E0400698AC0 /* State.cpp in Sources */, + 2689004E13353E0400698AC0 /* Stream.cpp in Sources */, + 2689004F13353E0400698AC0 /* StreamFile.cpp in Sources */, + 2689005013353E0400698AC0 /* StreamString.cpp in Sources */, + 2689005113353E0400698AC0 /* StringList.cpp in Sources */, + 2689005213353E0400698AC0 /* Timer.cpp in Sources */, + 2689005313353E0400698AC0 /* UserID.cpp in Sources */, + 2689005413353E0400698AC0 /* UserSettingsController.cpp in Sources */, + 2689005513353E0400698AC0 /* UUID.cpp in Sources */, + 2689005613353E0400698AC0 /* Value.cpp in Sources */, + 2689005713353E0400698AC0 /* ValueObject.cpp in Sources */, + 2689005813353E0400698AC0 /* ValueObjectChild.cpp in Sources */, + 2689005913353E0400698AC0 /* ValueObjectConstResult.cpp in Sources */, + 2689005A13353E0400698AC0 /* ValueObjectList.cpp in Sources */, + 2689005B13353E0400698AC0 /* ValueObjectRegister.cpp in Sources */, + 2689005C13353E0400698AC0 /* ValueObjectVariable.cpp in Sources */, + 2689005D13353E0400698AC0 /* VMRange.cpp in Sources */, + 2689005E13353E0E00698AC0 /* ClangASTSource.cpp in Sources */, + 2689005F13353E0E00698AC0 /* ClangFunction.cpp in Sources */, + 2689006013353E0E00698AC0 /* ClangExpressionDeclMap.cpp in Sources */, + 2689006113353E0E00698AC0 /* ClangExpressionParser.cpp in Sources */, + 2689006213353E0E00698AC0 /* ClangExpressionVariable.cpp in Sources */, + 2689006313353E0E00698AC0 /* ClangPersistentVariables.cpp in Sources */, + 2689006413353E0E00698AC0 /* ClangUserExpression.cpp in Sources */, + 2689006513353E0E00698AC0 /* ClangUtilityFunction.cpp in Sources */, + 2689006613353E0E00698AC0 /* DWARFExpression.cpp in Sources */, + 2689006713353E0E00698AC0 /* ASTDumper.cpp in Sources */, + 2689006813353E0E00698AC0 /* ASTResultSynthesizer.cpp in Sources */, + 2689006913353E0E00698AC0 /* ASTStructExtractor.cpp in Sources */, + 2689006A13353E0E00698AC0 /* IRDynamicChecks.cpp in Sources */, + 2689006B13353E0E00698AC0 /* IRForTarget.cpp in Sources */, + 2689006C13353E0E00698AC0 /* IRToDWARF.cpp in Sources */, + 2689006D13353E0E00698AC0 /* RecordingMemoryManager.cpp in Sources */, + 2689006E13353E1A00698AC0 /* File.cpp in Sources */, + 2689006F13353E1A00698AC0 /* FileSpec.cpp in Sources */, + 2689007013353E1A00698AC0 /* Condition.cpp in Sources */, + 2689007113353E1A00698AC0 /* Host.cpp in Sources */, + 2689007213353E1A00698AC0 /* Mutex.cpp in Sources */, + 2689007313353E1A00698AC0 /* Symbols.cpp in Sources */, + 2689007413353E1A00698AC0 /* Terminal.cpp in Sources */, + 2689007513353E1A00698AC0 /* TimeValue.cpp in Sources */, + 2689007613353E1A00698AC0 /* CFCBundle.cpp in Sources */, + 2689007713353E1A00698AC0 /* CFCData.cpp in Sources */, + 2689007813353E1A00698AC0 /* CFCMutableArray.cpp in Sources */, + 2689007913353E1A00698AC0 /* CFCMutableDictionary.cpp in Sources */, + 2689007A13353E1A00698AC0 /* CFCMutableSet.cpp in Sources */, + 2689007B13353E1A00698AC0 /* CFCString.cpp in Sources */, + 2689007C13353E1A00698AC0 /* Symbols.cpp in Sources */, + 2689007D13353E2200698AC0 /* Args.cpp in Sources */, + 2689007E13353E2200698AC0 /* LLDBWrapPython.cpp in Sources */, + 2689007F13353E2200698AC0 /* CommandCompletions.cpp in Sources */, + 2689008013353E2200698AC0 /* CommandInterpreter.cpp in Sources */, + 2689008113353E2200698AC0 /* CommandObject.cpp in Sources */, + 2689008213353E2200698AC0 /* CommandObjectCrossref.cpp in Sources */, + 2689008313353E2200698AC0 /* CommandObjectMultiword.cpp in Sources */, + 2689008413353E2200698AC0 /* CommandObjectRegexCommand.cpp in Sources */, + 2689008513353E2200698AC0 /* CommandReturnObject.cpp in Sources */, + 2689008613353E2200698AC0 /* Options.cpp in Sources */, + 2689008713353E2200698AC0 /* ScriptInterpreter.cpp in Sources */, + 2689008813353E2200698AC0 /* ScriptInterpreterNone.cpp in Sources */, + 2689008913353E2200698AC0 /* ScriptInterpreterPython.cpp in Sources */, + 2689008A13353E4200698AC0 /* ABIMacOSX_i386.cpp in Sources */, + 2689008B13353E4200698AC0 /* ABISysV_x86_64.cpp in Sources */, + 2689008C13353E4200698AC0 /* DisassemblerLLVM.cpp in Sources */, + 2689008D13353E4200698AC0 /* DynamicLoaderMacOSXDYLD.cpp in Sources */, + 2689008E13353E4200698AC0 /* DynamicLoaderStatic.cpp in Sources */, + 2689008F13353E4200698AC0 /* EmulateInstructionARM.cpp in Sources */, + 2689009013353E4200698AC0 /* ItaniumABILanguageRuntime.cpp in Sources */, + 2689009113353E4200698AC0 /* AppleObjCRuntime.cpp in Sources */, + 2689009213353E4200698AC0 /* AppleObjCRuntimeV1.cpp in Sources */, + 2689009313353E4200698AC0 /* AppleObjCTrampolineHandler.cpp in Sources */, + 2689009413353E4200698AC0 /* AppleThreadPlanStepThroughObjCTrampoline.cpp in Sources */, + 2689009513353E4200698AC0 /* AppleObjCRuntimeV2.cpp in Sources */, + 2689009613353E4200698AC0 /* ObjectContainerBSDArchive.cpp in Sources */, + 2689009713353E4200698AC0 /* ObjectContainerUniversalMachO.cpp in Sources */, + 2689009813353E4200698AC0 /* ELFHeader.cpp in Sources */, + 2689009913353E4200698AC0 /* ObjectFileELF.cpp in Sources */, + 2689009A13353E4200698AC0 /* ObjectFileMachO.cpp in Sources */, + 2689009B13353E4200698AC0 /* PlatformMacOSX.cpp in Sources */, + 2689009C13353E4200698AC0 /* PlatformRemoteiOS.cpp in Sources */, + 2689009D13353E4200698AC0 /* GDBRemoteCommunication.cpp in Sources */, + 2689009E13353E4200698AC0 /* GDBRemoteRegisterContext.cpp in Sources */, + 2689009F13353E4200698AC0 /* ProcessGDBRemote.cpp in Sources */, + 268900A013353E4200698AC0 /* ProcessGDBRemoteLog.cpp in Sources */, + 268900A113353E4200698AC0 /* ThreadGDBRemote.cpp in Sources */, + 268900A213353E5000698AC0 /* MachException.cpp in Sources */, + 268900A313353E5000698AC0 /* MachTask.cpp in Sources */, + 268900A413353E5000698AC0 /* MachThreadContext_arm.cpp in Sources */, + 268900A513353E5000698AC0 /* MachThreadContext_i386.cpp in Sources */, + 268900A613353E5000698AC0 /* MachThreadContext_x86_64.cpp in Sources */, + 268900A713353E5000698AC0 /* MachVMMemory.cpp in Sources */, + 268900A813353E5000698AC0 /* MachVMRegion.cpp in Sources */, + 268900A913353E5000698AC0 /* ProcessMacOSX.cpp in Sources */, + 268900AA13353E5000698AC0 /* ProcessMacOSXLog.cpp in Sources */, + 268900AB13353E5000698AC0 /* RegisterContextMach_arm.cpp in Sources */, + 268900AC13353E5000698AC0 /* RegisterContextMach_i386.cpp in Sources */, + 268900AD13353E5000698AC0 /* RegisterContextMach_x86_64.cpp in Sources */, + 268900AE13353E5000698AC0 /* ThreadMacOSX.cpp in Sources */, + 268900AF13353E5000698AC0 /* UnwindLLDB.cpp in Sources */, + 268900B013353E5000698AC0 /* RegisterContextLLDB.cpp in Sources */, + 268900B113353E5000698AC0 /* ArchVolatileRegs-x86.cpp in Sources */, + 268900B213353E5000698AC0 /* ArchDefaultUnwindPlan-x86.cpp in Sources */, + 268900B313353E5000698AC0 /* UnwindAssemblyProfiler-x86.cpp in Sources */, + 268900B413353E5000698AC0 /* RegisterContextMacOSXFrameBackchain.cpp in Sources */, + 268900B513353E5000698AC0 /* StopInfoMachException.cpp in Sources */, + 268900B613353E5000698AC0 /* UnwindMacOSXFrameBackchain.cpp in Sources */, + 268900B713353E5F00698AC0 /* DWARFAbbreviationDeclaration.cpp in Sources */, + 268900B813353E5F00698AC0 /* DWARFCompileUnit.cpp in Sources */, + 268900B913353E5F00698AC0 /* DWARFDebugAbbrev.cpp in Sources */, + 268900BA13353E5F00698AC0 /* DWARFDebugAranges.cpp in Sources */, + 268900BB13353E5F00698AC0 /* DWARFDebugArangeSet.cpp in Sources */, + 268900BC13353E5F00698AC0 /* DWARFDebugInfo.cpp in Sources */, + 268900BD13353E5F00698AC0 /* DWARFDebugInfoEntry.cpp in Sources */, + 268900BE13353E5F00698AC0 /* DWARFDebugLine.cpp in Sources */, + 268900BF13353E5F00698AC0 /* DWARFDebugMacinfo.cpp in Sources */, + 268900C013353E5F00698AC0 /* DWARFDebugMacinfoEntry.cpp in Sources */, + 268900C113353E5F00698AC0 /* DWARFDebugPubnames.cpp in Sources */, + 268900C213353E5F00698AC0 /* DWARFDebugPubnamesSet.cpp in Sources */, + 268900C313353E5F00698AC0 /* DWARFDebugRanges.cpp in Sources */, + 268900C413353E5F00698AC0 /* DWARFDefines.cpp in Sources */, + 268900C513353E5F00698AC0 /* DWARFDIECollection.cpp in Sources */, + 268900C613353E5F00698AC0 /* DWARFFormValue.cpp in Sources */, + 268900C713353E5F00698AC0 /* DWARFLocationDescription.cpp in Sources */, + 268900C813353E5F00698AC0 /* DWARFLocationList.cpp in Sources */, + 268900C913353E5F00698AC0 /* NameToDIE.cpp in Sources */, + 268900CA13353E5F00698AC0 /* SymbolFileDWARF.cpp in Sources */, + 268900CB13353E5F00698AC0 /* LogChannelDWARF.cpp in Sources */, + 268900CC13353E5F00698AC0 /* SymbolFileDWARFDebugMap.cpp in Sources */, + 268900CD13353E5F00698AC0 /* UniqueDWARFASTType.cpp in Sources */, + 268900CE13353E5F00698AC0 /* SymbolFileSymtab.cpp in Sources */, + 268900CF13353E5F00698AC0 /* SymbolVendorMacOSX.cpp in Sources */, + 268900D013353E6F00698AC0 /* Block.cpp in Sources */, + 268900D113353E6F00698AC0 /* ClangASTContext.cpp in Sources */, + 268900D213353E6F00698AC0 /* ClangASTType.cpp in Sources */, + 268900D313353E6F00698AC0 /* ClangExternalASTSourceCallbacks.cpp in Sources */, + 268900D413353E6F00698AC0 /* ClangNamespaceDecl.cpp in Sources */, + 268900D513353E6F00698AC0 /* CompileUnit.cpp in Sources */, + 268900D613353E6F00698AC0 /* Declaration.cpp in Sources */, + 268900D713353E6F00698AC0 /* DWARFCallFrameInfo.cpp in Sources */, + 268900D813353E6F00698AC0 /* Function.cpp in Sources */, + 268900D913353E6F00698AC0 /* FuncUnwinders.cpp in Sources */, + 268900DA13353E6F00698AC0 /* LineEntry.cpp in Sources */, + 268900DB13353E6F00698AC0 /* LineTable.cpp in Sources */, + 268900DC13353E6F00698AC0 /* ObjectFile.cpp in Sources */, + 268900DD13353E6F00698AC0 /* Symbol.cpp in Sources */, + 268900DE13353E6F00698AC0 /* SymbolContext.cpp in Sources */, + 268900DF13353E6F00698AC0 /* SymbolFile.cpp in Sources */, + 268900E013353E6F00698AC0 /* SymbolVendor.cpp in Sources */, + 268900E113353E6F00698AC0 /* Symtab.cpp in Sources */, + 268900E213353E6F00698AC0 /* Type.cpp in Sources */, + 268900E313353E6F00698AC0 /* TypeList.cpp in Sources */, + 268900E413353E6F00698AC0 /* UnwindPlan.cpp in Sources */, + 268900E513353E6F00698AC0 /* UnwindTable.cpp in Sources */, + 268900E613353E6F00698AC0 /* Variable.cpp in Sources */, + 268900E713353E6F00698AC0 /* VariableList.cpp in Sources */, + 268900E813353E6F00698AC0 /* ABI.cpp in Sources */, + 268900E913353E6F00698AC0 /* CPPLanguageRuntime.cpp in Sources */, + 268900EA13353E6F00698AC0 /* DynamicLoader.cpp in Sources */, + 268900EB13353E6F00698AC0 /* ExecutionContext.cpp in Sources */, + 268900EC13353E6F00698AC0 /* LanguageRuntime.cpp in Sources */, + 268900ED13353E6F00698AC0 /* ObjCLanguageRuntime.cpp in Sources */, + 268900EE13353E6F00698AC0 /* PathMappingList.cpp in Sources */, + 268900EF13353E6F00698AC0 /* Platform.cpp in Sources */, + 268900F013353E6F00698AC0 /* Process.cpp in Sources */, + 268900F113353E6F00698AC0 /* RegisterContext.cpp in Sources */, + 268900F213353E6F00698AC0 /* SectionLoadList.cpp in Sources */, + 268900F313353E6F00698AC0 /* StackFrame.cpp in Sources */, + 268900F413353E6F00698AC0 /* StackFrameList.cpp in Sources */, + 268900F513353E6F00698AC0 /* StackID.cpp in Sources */, + 268900F613353E6F00698AC0 /* StopInfo.cpp in Sources */, + 268900F713353E6F00698AC0 /* Target.cpp in Sources */, + 268900F813353E6F00698AC0 /* TargetList.cpp in Sources */, + 268900F913353E6F00698AC0 /* Thread.cpp in Sources */, + 268900FA13353E6F00698AC0 /* ThreadList.cpp in Sources */, + 268900FB13353E6F00698AC0 /* ThreadPlan.cpp in Sources */, + 268900FC13353E6F00698AC0 /* ThreadPlanBase.cpp in Sources */, + 268900FD13353E6F00698AC0 /* ThreadPlanCallFunction.cpp in Sources */, + 268900FE13353E6F00698AC0 /* ThreadPlanCallUserExpression.cpp in Sources */, + 268900FF13353E6F00698AC0 /* ThreadPlanShouldStopHere.cpp in Sources */, + 2689010013353E6F00698AC0 /* ThreadPlanStepInstruction.cpp in Sources */, + 2689010113353E6F00698AC0 /* ThreadPlanStepOut.cpp in Sources */, + 2689010213353E6F00698AC0 /* ThreadPlanStepOverBreakpoint.cpp in Sources */, + 2689010313353E6F00698AC0 /* ThreadPlanStepRange.cpp in Sources */, + 2689010413353E6F00698AC0 /* ThreadPlanStepInRange.cpp in Sources */, + 2689010513353E6F00698AC0 /* ThreadPlanStepOverRange.cpp in Sources */, + 2689010613353E6F00698AC0 /* ThreadPlanRunToAddress.cpp in Sources */, + 2689010713353E6F00698AC0 /* ThreadPlanStepThrough.cpp in Sources */, + 2689010813353E6F00698AC0 /* ThreadPlanStepUntil.cpp in Sources */, + 2689010913353E6F00698AC0 /* ThreadPlanTestCondition.cpp in Sources */, + 2689010A13353E6F00698AC0 /* ThreadPlanTracer.cpp in Sources */, + 2689010B13353E6F00698AC0 /* ThreadSpec.cpp in Sources */, + 2689010C13353E6F00698AC0 /* UnixSignals.cpp in Sources */, + 2689010D13353E8200698AC0 /* ArchVolatileRegs.cpp in Sources */, + 2689010E13353E8200698AC0 /* ArchDefaultUnwindPlan.cpp in Sources */, + 2689010F13353E8200698AC0 /* UnwindAssemblyProfiler.cpp in Sources */, + 2689011013353E8200698AC0 /* SharingPtr.cpp in Sources */, + 2689011113353E8200698AC0 /* StringExtractor.cpp in Sources */, + 2689011213353E8200698AC0 /* StringExtractorGDBRemote.cpp in Sources */, + 2689011313353E8200698AC0 /* PseudoTerminal.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2971,6 +3058,11 @@ target = 26680206115FD0ED008E1FE4 /* LLDB */; targetProxy = 266803611160110D008E1FE4 /* PBXContainerItemProxy */; }; + 2689011513353E9B00698AC0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 2689FFC913353D7A00698AC0 /* lldb-core */; + targetProxy = 2689011413353E9B00698AC0 /* PBXContainerItemProxy */; + }; 26CE0610115C438C0022F371 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "lldb-debugserver"; @@ -2994,7 +3086,7 @@ __STDC_LIMIT_MACROS, LLDB_CONFIGURATION_DEBUG, ); - GCC_VERSION = ""; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -3025,7 +3117,7 @@ __STDC_LIMIT_MACROS, LLDB_CONFIGURATION_RELEASE, ); - GCC_VERSION = ""; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -3102,7 +3194,6 @@ "\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"", ); FRAMEWORK_VERSION = A; - GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_OBJC_GC = supported; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -3121,11 +3212,7 @@ ); LLVM_BUILD_DIR = "$(SRCROOT)/llvm"; LLVM_CONFIGURATION = "Debug+Asserts"; - OTHER_CFLAGS = ( - "-DFOR_DYLD=0", - "-DSUPPORT_REMOTE_UNWINDING", - "-Wparentheses", - ); + OTHER_CFLAGS = "-Wparentheses"; OTHER_CPLUSPLUSFLAGS = ( "-fno-rtti", "-Wglobal-constructors", @@ -3178,11 +3265,7 @@ ); LLVM_BUILD_DIR = "$(SRCROOT)/llvm"; LLVM_CONFIGURATION = "Debug+Asserts"; - OTHER_CFLAGS = ( - "-DFOR_DYLD=0", - "-DSUPPORT_REMOTE_UNWINDING", - "-Wparentheses", - ); + OTHER_CFLAGS = "-Wparentheses"; OTHER_CPLUSPLUSFLAGS = ( "-fno-rtti", "-Wglobal-constructors", @@ -3203,6 +3286,92 @@ }; name = Release; }; + 2689FFD513353D7A00698AC0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COPY_PHASE_STRIP = NO; + EXECUTABLE_EXTENSION = a; + GCC_ENABLE_OBJC_GC = supported; + GCC_PREPROCESSOR_DEFINITIONS = ( + __STDC_CONSTANT_MACROS, + __STDC_LIMIT_MACROS, + LLDB_CONFIGURATION_DEBUG, + ); + LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/lldb-core.a"; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.6; + OTHER_CFLAGS = "-Wparentheses"; + OTHER_CPLUSPLUSFLAGS = ( + "-fno-rtti", + "-Wglobal-constructors", + "$(OTHER_CFLAGS)", + ); + PRODUCT_NAME = "lib$(TARGET_NAME)"; + SDKROOT = macosx; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/source $(SRCROOT)/source/Plugins/Process/Utility $(SRCROOT)/include $(SRCROOT)/source/Host/macosx/cfcpp $(SRCROOT)/llvm/include $(SRCROOT)/llvm/tools/clang/include $(LLVM_BUILD_DIR)/llvm/include $(LLVM_BUILD_DIR)/llvm/tools/clang/include"; + }; + name = Debug; + }; + 2689FFD613353D7A00698AC0 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + EXECUTABLE_EXTENSION = a; + GCC_ENABLE_OBJC_GC = supported; + GCC_PREPROCESSOR_DEFINITIONS = ( + __STDC_CONSTANT_MACROS, + __STDC_LIMIT_MACROS, + LLDB_CONFIGURATION_RELEASE, + ); + LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/lldb-core.a"; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.6; + OTHER_CFLAGS = "-Wparentheses"; + OTHER_CPLUSPLUSFLAGS = ( + "-fno-rtti", + "-Wglobal-constructors", + "$(OTHER_CFLAGS)", + ); + PRODUCT_NAME = "lib$(TARGET_NAME)"; + SDKROOT = macosx; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/source $(SRCROOT)/source/Plugins/Process/Utility $(SRCROOT)/include $(SRCROOT)/source/Host/macosx/cfcpp $(SRCROOT)/llvm/include $(SRCROOT)/llvm/tools/clang/include $(LLVM_BUILD_DIR)/llvm/include $(LLVM_BUILD_DIR)/llvm/tools/clang/include"; + }; + name = Release; + }; + 2689FFD713353D7A00698AC0 /* BuildAndIntegration */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + EXECUTABLE_EXTENSION = a; + GCC_ENABLE_OBJC_GC = supported; + GCC_PREPROCESSOR_DEFINITIONS = ( + __STDC_CONSTANT_MACROS, + __STDC_LIMIT_MACROS, + LLDB_CONFIGURATION_BUILD_AND_INTEGRATION, + ); + LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/lldb-core.a"; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.6; + OTHER_CFLAGS = "-Wparentheses"; + OTHER_CPLUSPLUSFLAGS = ( + "-fno-rtti", + "-Wglobal-constructors", + "$(OTHER_CFLAGS)", + ); + PRODUCT_NAME = "lib$(TARGET_NAME)"; + SDKROOT = macosx; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/source $(SRCROOT)/source/Plugins/Process/Utility $(SRCROOT)/include $(SRCROOT)/source/Host/macosx/cfcpp $(SRCROOT)/llvm/include $(SRCROOT)/llvm/tools/clang/include $(LLVM_BUILD_DIR)/llvm/include $(LLVM_BUILD_DIR)/llvm/tools/clang/include"; + }; + name = BuildAndIntegration; + }; 268A89B211963ECA00D953EB /* BuildAndIntegration */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3217,7 +3386,7 @@ __STDC_LIMIT_MACROS, LLDB_CONFIGURATION_BUILD_AND_INTEGRATION, ); - GCC_VERSION = ""; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -3247,7 +3416,6 @@ GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_MODEL_TUNING = G5; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = ""; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "lldb-Info.plist"; INSTALL_PATH = /Developer/usr/bin; @@ -3301,11 +3469,7 @@ ); LLVM_BUILD_DIR = "$(DERIVED_FILE_DIR)/llvm.build"; LLVM_CONFIGURATION = "Debug+Asserts"; - OTHER_CFLAGS = ( - "-DFOR_DYLD=0", - "-DSUPPORT_REMOTE_UNWINDING", - "-Wparentheses", - ); + OTHER_CFLAGS = "-Wparentheses"; OTHER_CPLUSPLUSFLAGS = ( "-fno-rtti", "-Wglobal-constructors", @@ -3342,7 +3506,6 @@ GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = ""; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "lldb-Info.plist"; INSTALL_PATH = /Developer/usr/bin; @@ -3381,7 +3544,6 @@ GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_MODEL_TUNING = G5; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = ""; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "lldb-Info.plist"; INSTALL_PATH = /Developer/usr/bin; @@ -3435,6 +3597,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = BuildAndIntegration; }; + 2689FFD813353D7A00698AC0 /* Build configuration list for PBXNativeTarget "lldb-core" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2689FFD513353D7A00698AC0 /* Debug */, + 2689FFD613353D7A00698AC0 /* Release */, + 2689FFD713353D7A00698AC0 /* BuildAndIntegration */, + ); + defaultConfigurationIsVisible = 0; + }; 26F5C26E10F3D9C5009D5894 /* Build configuration list for PBXNativeTarget "lldb-tool" */ = { isa = XCConfigurationList; buildConfigurations = ( Modified: lldb/trunk/source/Commands/CommandObjectMemory.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectMemory.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectMemory.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectMemory.cpp Sat Mar 19 23:57:14 2011 @@ -711,6 +711,8 @@ case eFormatVectorOfFloat32: case eFormatVectorOfFloat64: case eFormatVectorOfUInt128: + case eFormatOSType: + case eFormatComplexInteger: result.AppendError("unsupported format for writing memory"); result.SetStatus(eReturnStatusFailed); return false; Modified: lldb/trunk/source/Core/Communication.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Communication.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/source/Core/Communication.cpp (original) +++ lldb/trunk/source/Core/Communication.cpp Sat Mar 19 23:57:14 2011 @@ -419,6 +419,7 @@ case eConnectionStatusTimedOut: return "timed out"; case eConnectionStatusNoConnection: return "no connection"; case eConnectionStatusLostConnection: return "lost connection"; + case eConnectionStatusEndOfFile: return "end of file"; } static char unknown_state_string[64]; Modified: lldb/trunk/source/Expression/DWARFExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/DWARFExpression.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/source/Expression/DWARFExpression.cpp (original) +++ lldb/trunk/source/Expression/DWARFExpression.cpp Sat Mar 19 23:57:14 2011 @@ -2291,6 +2291,10 @@ switch (source_value_type) { + case Value::eValueTypeScalar: + case Value::eValueTypeFileAddress: + break; + case Value::eValueTypeLoadAddress: switch (target_value_type) { Modified: lldb/trunk/source/Interpreter/CommandObject.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/CommandObject.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/CommandObject.cpp (original) +++ lldb/trunk/source/Interpreter/CommandObject.cpp Sat Mar 19 23:57:14 2011 @@ -232,7 +232,7 @@ switch (state) { - + case eStateInvalid: case eStateSuspended: case eStateCrashed: case eStateStopped: Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp (original) +++ lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Sat Mar 19 23:57:14 2011 @@ -10214,7 +10214,7 @@ reg_num = LLDB_REGNUM_GENERIC_PC; break; default: - if (0 <= num && num < SP_REG) + if (num < SP_REG) { reg_kind = eRegisterKindDWARF; reg_num = dwarf_r0 + num; @@ -10223,7 +10223,7 @@ { assert(0 && "Invalid register number"); *success = false; - return ~0u; + return UINT32_MAX; } break; } Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp (original) +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp Sat Mar 19 23:57:14 2011 @@ -307,8 +307,7 @@ "%s/%i.%i", m_device_support_directory_for_os_version.c_str(), major, - minor, - update); + minor); file_spec.SetFile(resolved_path, resolve_path); if (file_spec.Exists() && file_spec.GetPath(resolved_path, sizeof(resolved_path))) Modified: lldb/trunk/source/Plugins/Process/Utility/RegisterContextMacOSXFrameBackchain.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Utility/RegisterContextMacOSXFrameBackchain.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Process/Utility/RegisterContextMacOSXFrameBackchain.cpp (original) +++ lldb/trunk/source/Plugins/Process/Utility/RegisterContextMacOSXFrameBackchain.cpp Sat Mar 19 23:57:14 2011 @@ -111,6 +111,10 @@ switch (reg_info->encoding) { + case eEncodingInvalid: + case eEncodingVector: + break; + case eEncodingUint: switch (reg_info->byte_size) { Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp Sat Mar 19 23:57:14 2011 @@ -295,6 +295,9 @@ switch (exe_symbol->GetType()) { + default: + break; + case eSymbolTypeCode: { // For each N_FUN, or function that we run into in the debug map Modified: lldb/trunk/source/Symbol/Type.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/Type.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/source/Symbol/Type.cpp (original) +++ lldb/trunk/source/Symbol/Type.cpp Sat Mar 19 23:57:14 2011 @@ -124,6 +124,7 @@ s->Printf(", type_uid = 0x%8.8x", m_encoding_uid); switch (m_encoding_uid_type) { + case eEncodingInvalid: break; case eEncodingIsUID: s->PutCString(" (unresolved type)"); break; case eEncodingIsConstUID: s->PutCString(" (unresolved const type)"); break; case eEncodingIsRestrictUID: s->PutCString(" (unresolved restrict type)"); break; @@ -171,6 +172,7 @@ *s << ", type_data = " << (uint64_t)m_encoding_uid; switch (m_encoding_uid_type) { + case eEncodingInvalid: break; case eEncodingIsUID: s->PutCString(" (unresolved type)"); break; case eEncodingIsConstUID: s->PutCString(" (unresolved const type)"); break; case eEncodingIsRestrictUID: s->PutCString(" (unresolved restrict type)"); break; @@ -269,6 +271,9 @@ { switch (m_encoding_uid_type) { + case eEncodingInvalid: + case eEncodingIsSyntheticUID: + break; case eEncodingIsUID: case eEncodingIsConstUID: case eEncodingIsRestrictUID: Modified: lldb/trunk/source/Target/Process.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Process.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/source/Target/Process.cpp (original) +++ lldb/trunk/source/Target/Process.cpp Sat Mar 19 23:57:14 2011 @@ -1586,7 +1586,7 @@ DidLaunch (); - m_dyld_ap.reset (DynamicLoader::FindPlugin(this, false)); + m_dyld_ap.reset (DynamicLoader::FindPlugin(this, NULL)); if (m_dyld_ap.get()) m_dyld_ap->DidLaunch(); @@ -1796,7 +1796,7 @@ // We have complete the attach, now it is time to find the dynamic loader // plug-in - m_dyld_ap.reset (DynamicLoader::FindPlugin(this, false)); + m_dyld_ap.reset (DynamicLoader::FindPlugin(this, NULL)); if (m_dyld_ap.get()) m_dyld_ap->DidAttach(); Modified: lldb/trunk/source/Target/RegisterContext.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/RegisterContext.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/source/Target/RegisterContext.cpp (original) +++ lldb/trunk/source/Target/RegisterContext.cpp Sat Mar 19 23:57:14 2011 @@ -285,6 +285,10 @@ uint32_t offset = 0; switch (reg_info->encoding) { + case eEncodingInvalid: + case eEncodingVector: + break; + case eEncodingUint: switch (reg_info->byte_size) { Modified: lldb/trunk/tools/debugserver/source/RNBRemote.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/RNBRemote.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/tools/debugserver/source/RNBRemote.cpp (original) +++ lldb/trunk/tools/debugserver/source/RNBRemote.cpp Sat Mar 19 23:57:14 2011 @@ -3351,4 +3351,102 @@ strm << "ptrsize:" << std::dec << sizeof(void *) << ';'; return SendPacket (strm.str()); } +// +//struct ProcessInfo +//{ +// nub_process_t pid; +// std::string name; +// std::string user; +// std::string group; +// uint32_t cpu; // mach-o cpu type +// uint32_t sub; // mach-o cpu subtype +// +// void +// Clear() +// { +// pid = 0; +// name.clear(); +// user.clear(); +// group.clear(); +// cpu = 0; +// sub = 0; +// } +//}; +// +//static bool +//GetMacOSXProcessName (ProcessInfo &proc_info, +// const char *name_match) // can be NULL +//{ +// char process_name[MAXCOMLEN * 2 + 1]; +// int name_len = ::proc_name(proc_info.pid, process_name, MAXCOMLEN * 2); +// if (name_len == 0) +// return false; +// +// if (name_match == NULL || strcmp (name_match, process_name) == 0) +// { +// proc_info.name.assign (process_name, name_len); +// return true; +// } +// proc_info.name.clear(); +// return false; +//} +// +// +//static bool +//GetMacOSXProcessCPUType (ProcessInfo &proc_info) +//{ +// // Make a new mib to stay thread safe +// int mib[CTL_MAXNAME]={0,}; +// size_t mib_len = CTL_MAXNAME; +// if (::sysctlnametomib("sysctl.proc_cputype", mib, &mib_len)) +// return false; +// +// mib[mib_len] = proc_info.pid; +// mib_len++; +// +// cpu_type_t cpu = 0; +// cpu_type_t sub = 0; +// size_t cpu_len = sizeof(cpu); +// if (::sysctl (mib, mib_len, &cpu, &cpu_len, 0, 0) == 0) +// { +// switch (cpu) +// { +// case llvm::MachO::CPUTypeI386: sub = llvm::MachO::CPUSubType_I386_ALL; break; +// case llvm::MachO::CPUTypeX86_64: sub = llvm::MachO::CPUSubType_X86_64_ALL; break; +// default: break; +// } +// proc_info.cpu = cpu; +// proc_info.sub = sub; +// return true; +// } +// proc_info.cpu = 0; +// proc_info.sub = 0; +// return false; +//} + +rnb_err_t +RNBRemote::HandlePacket_qProcessInfo (const char *p) +{ + return RNBRemote::HandlePacket_UNIMPLEMENTED (p); +} + +rnb_err_t +RNBRemote::HandlePacket_qfProcessInfoAll (const char *p) +{ + return RNBRemote::HandlePacket_UNIMPLEMENTED (p); +} + +rnb_err_t +RNBRemote::HandlePacket_qfProcessInfoName (const char *p) +{ + return RNBRemote::HandlePacket_UNIMPLEMENTED (p); +} + +rnb_err_t +RNBRemote::HandlePacket_qsProcessInfo (const char *p) +{ + return RNBRemote::HandlePacket_UNIMPLEMENTED (p); +} + + Modified: lldb/trunk/tools/debugserver/source/RNBRemote.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/RNBRemote.h?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/tools/debugserver/source/RNBRemote.h (original) +++ lldb/trunk/tools/debugserver/source/RNBRemote.h Sat Mar 19 23:57:14 2011 @@ -91,6 +91,10 @@ query_shlib_notify_info_addr, // 'qShlibInfoAddr' query_step_packet_supported, // 'qStepPacketSupported' query_host_info, // 'qHostInfo' + platform_proc_info_for_pid, // 'qProcessInfo:' -- get process info for process by ID + platform_proc_info_first_all, // 'qfProcessInfoAll' -- list all processes + platform_proc_info_first_name, // 'qfProcessInfoName:' -- list all processes that match "name" + platform_proc_info_subsequent, // 'qsProcessInfo' -- get subsequent matches for 'qfProcessInfo*' queries pass_signals_to_inferior, // 'QPassSignals' start_noack_mode, // 'QStartNoAckMode' prefix_reg_packets_with_tid, // 'QPrefixRegisterPacketsWithThreadID @@ -161,6 +165,10 @@ rnb_err_t HandlePacket_qThreadExtraInfo (const char *p); rnb_err_t HandlePacket_qThreadStopInfo (const char *p); rnb_err_t HandlePacket_qHostInfo (const char *p); + rnb_err_t HandlePacket_qProcessInfo (const char *p); + rnb_err_t HandlePacket_qfProcessInfoAll (const char *p); + rnb_err_t HandlePacket_qfProcessInfoName (const char *p); + rnb_err_t HandlePacket_qsProcessInfo (const char *p); rnb_err_t HandlePacket_QStartNoAckMode (const char *p); rnb_err_t HandlePacket_QThreadSuffixSupported (const char *p); rnb_err_t HandlePacket_QSetLogging (const char *p); @@ -227,6 +235,18 @@ HandlePacketCallback async; // Function to call when inferior is running std::string abbrev; std::string printable_name; + + bool + IsPlatformPacket () const + { + switch (type) + { + case set_logging_mode: + case query_host_info: + return true; + } + return false; + } Packet() : type(invalid_packet), normal (NULL), Modified: lldb/trunk/tools/debugserver/source/debugserver.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/debugserver.cpp?rev=127963&r1=127962&r2=127963&view=diff ============================================================================== --- lldb/trunk/tools/debugserver/source/debugserver.cpp (original) +++ lldb/trunk/tools/debugserver/source/debugserver.cpp Sat Mar 19 23:57:14 2011 @@ -42,6 +42,7 @@ eRNBRunLoopModeInferiorAttaching, eRNBRunLoopModeInferiorLaunching, eRNBRunLoopModeInferiorExecuting, + eRNBRunLoopModePlatformMode, eRNBRunLoopModeExit } RNBRunLoopMode; @@ -565,6 +566,40 @@ } +RNBRunLoopMode +RNBRunLoopPlatform (RNBRemote *remote) +{ + RNBRunLoopMode mode = eRNBRunLoopModePlatformMode; + RNBContext& ctx = remote->Context(); + + while (mode == eRNBRunLoopModePlatformMode) + { + std::string set_events_str; + const uint32_t event_mask = RNBContext::event_read_packet_available | + RNBContext::event_read_thread_exiting; + + DNBLogThreadedIf (LOG_RNB_EVENTS, "%s ctx.Events().WaitForSetEvents(0x%08x) ...",__FUNCTION__, event_mask); + nub_event_t set_events = ctx.Events().WaitForSetEvents(event_mask); + DNBLogThreadedIf (LOG_RNB_EVENTS, "%s ctx.Events().WaitForSetEvents(0x%08x) => 0x%08x (%s)",__FUNCTION__, event_mask, set_events, ctx.EventsAsString(set_events, set_events_str)); + + if (set_events) + { + if (set_events & RNBContext::event_read_packet_available) + { + if (remote->HandleReceivedPacket() == rnb_not_connected) + mode = eRNBRunLoopModeExit; + } + + if (set_events & RNBContext::event_read_thread_exiting) + { + mode = eRNBRunLoopModeExit; + } + ctx.Events().ResetEvents(set_events); + } + } + return eRNBRunLoopModeExit; +} + //---------------------------------------------------------------------- // Convenience function to set up the remote listening port // Returns 1 for success 0 for failure. @@ -670,6 +705,7 @@ { "setsid", no_argument, NULL, 'S' }, // call setsid() to make debugserver run in its own session { "disable-aslr", no_argument, NULL, 'D' }, // Use _POSIX_SPAWN_DISABLE_ASLR to avoid shared library randomization { "working-dir", required_argument, NULL, 'W' }, // The working directory that the inferior process should have (only if debugserver launches the process) + { "platform", required_argument, NULL, 'p' }, // Put this executable into a remote platform mode { NULL, 0, NULL, 0 } }; @@ -924,6 +960,10 @@ case 'D': g_disable_aslr = 1; break; + + case 'p': + start_mode = eRNBRunLoopModePlatformMode; + break; } } @@ -1027,7 +1067,8 @@ } // If we know we're waiting to attach, we don't need any of this other info. - if (start_mode != eRNBRunLoopModeInferiorAttaching) + if (start_mode != eRNBRunLoopModeInferiorAttaching && + start_mode != eRNBRunLoopModePlatformMode) { if (argc == 0 || g_lockdown_opt) { @@ -1125,16 +1166,17 @@ } else #endif - if (listen_port != INT32_MAX) - { - if (!StartListening (remote, listen_port)) - mode = eRNBRunLoopModeExit; - } - else if (str[0] == '/') - { - if (remote->Comm().OpenFile (str)) - mode = eRNBRunLoopModeExit; - } + if (listen_port != INT32_MAX) + { + if (!StartListening (remote, listen_port)) + mode = eRNBRunLoopModeExit; + } + else if (str[0] == '/') + { + if (remote->Comm().OpenFile (str)) + mode = eRNBRunLoopModeExit; + } + if (mode != eRNBRunLoopModeExit) { RNBLogSTDOUT ("Got a connection, waiting for process information for launching or attaching.\n"); @@ -1286,6 +1328,22 @@ mode = RNBRunLoopInferiorExecuting(remote); break; + case eRNBRunLoopModePlatformMode: + if (listen_port != INT32_MAX) + { + if (!StartListening (remote, listen_port)) + mode = eRNBRunLoopModeExit; + } + else if (str[0] == '/') + { + if (remote->Comm().OpenFile (str)) + mode = eRNBRunLoopModeExit; + } + + if (mode != eRNBRunLoopModeExit) + mode = RNBRunLoopPlatform (remote); + break; + default: mode = eRNBRunLoopModeExit; case eRNBRunLoopModeExit: