From owner-svn-src-all@FreeBSD.ORG Wed Mar 19 13:18:47 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AAA5E8C2; Wed, 19 Mar 2014 13:18:47 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 91B275FA; Wed, 19 Mar 2014 13:18:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s2JDIlL7046281; Wed, 19 Mar 2014 13:18:47 GMT (envelope-from emaste@svn.freebsd.org) Received: (from emaste@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s2JDIhd1046254; Wed, 19 Mar 2014 13:18:43 GMT (envelope-from emaste@svn.freebsd.org) Message-Id: <201403191318.s2JDIhd1046254@svn.freebsd.org> From: Ed Maste Date: Wed, 19 Mar 2014 13:18:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r263367 - in stable/10: contrib/llvm/tools/lldb/include/lldb contrib/llvm/tools/lldb/include/lldb/API contrib/llvm/tools/lldb/include/lldb/Breakpoint contrib/llvm/tools/lldb/include/lld... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Mar 2014 13:18:47 -0000 Author: emaste Date: Wed Mar 19 13:18:42 2014 New Revision: 263367 URL: http://svnweb.freebsd.org/changeset/base/263367 Log: MFC r258884: Update LLDB to upstream r196259 snapshot Sponsored by: DARPA, AFRL Added: stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBPlatform.h - copied unchanged from r258884, head/contrib/llvm/tools/lldb/include/lldb/API/SBPlatform.h stable/10/contrib/llvm/tools/lldb/include/lldb/Host/Debug.h - copied unchanged from r258884, head/contrib/llvm/tools/lldb/include/lldb/Host/Debug.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/RegisterCheckpoint.h - copied unchanged from r258884, head/contrib/llvm/tools/lldb/include/lldb/Target/RegisterCheckpoint.h stable/10/contrib/llvm/tools/lldb/include/lldb/Utility/Iterable.h - copied unchanged from r258884, head/contrib/llvm/tools/lldb/include/lldb/Utility/Iterable.h stable/10/contrib/llvm/tools/lldb/source/API/SBPlatform.cpp - copied unchanged from r258884, head/contrib/llvm/tools/lldb/source/API/SBPlatform.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/HistoryThread.cpp - copied unchanged from r258884, head/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/HistoryThread.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/HistoryThread.h - copied unchanged from r258884, head/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/HistoryThread.h stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/HistoryUnwind.cpp - copied unchanged from r258884, head/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/HistoryUnwind.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/HistoryUnwind.h - copied unchanged from r258884, head/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/HistoryUnwind.h stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextHistory.cpp - copied unchanged from r258884, head/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextHistory.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextHistory.h - copied unchanged from r258884, head/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextHistory.h Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBDebugger.h stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBError.h stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBExpressionOptions.h stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBFileSpec.h stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBModule.h stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBTarget.h stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBThread.h stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/Breakpoint.h stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointList.h stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointLocationList.h stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Address.h stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Debugger.h stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Module.h stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/CXXFormatterFunctions.h stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatCache.h stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatClasses.h stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatManager.h stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatNavigator.h stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/TypeCategory.h stable/10/contrib/llvm/tools/lldb/include/lldb/Expression/ClangFunction.h stable/10/contrib/llvm/tools/lldb/include/lldb/Expression/ClangUserExpression.h stable/10/contrib/llvm/tools/lldb/include/lldb/Host/File.h stable/10/contrib/llvm/tools/lldb/include/lldb/Host/FileSpec.h stable/10/contrib/llvm/tools/lldb/include/lldb/Host/Host.h stable/10/contrib/llvm/tools/lldb/include/lldb/Host/OptionParser.h stable/10/contrib/llvm/tools/lldb/include/lldb/Interpreter/PythonDataObjects.h stable/10/contrib/llvm/tools/lldb/include/lldb/Interpreter/ScriptInterpreterPython.h stable/10/contrib/llvm/tools/lldb/include/lldb/Symbol/TypeList.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/ABI.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/LanguageRuntime.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/Platform.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/Process.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/RegisterContext.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/SystemRuntime.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/Target.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/Thread.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/ThreadList.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/ThreadPlanCallFunction.h stable/10/contrib/llvm/tools/lldb/include/lldb/Target/ThreadPlanCallUserExpression.h stable/10/contrib/llvm/tools/lldb/include/lldb/Utility/PythonPointer.h stable/10/contrib/llvm/tools/lldb/include/lldb/lldb-enumerations.h stable/10/contrib/llvm/tools/lldb/include/lldb/lldb-forward.h stable/10/contrib/llvm/tools/lldb/include/lldb/lldb-private-enumerations.h stable/10/contrib/llvm/tools/lldb/include/lldb/lldb-python.h stable/10/contrib/llvm/tools/lldb/source/API/SBDebugger.cpp stable/10/contrib/llvm/tools/lldb/source/API/SBExpressionOptions.cpp stable/10/contrib/llvm/tools/lldb/source/API/SBFileSpec.cpp stable/10/contrib/llvm/tools/lldb/source/API/SBModule.cpp stable/10/contrib/llvm/tools/lldb/source/API/SBProcess.cpp stable/10/contrib/llvm/tools/lldb/source/API/SBStream.cpp stable/10/contrib/llvm/tools/lldb/source/API/SBTarget.cpp stable/10/contrib/llvm/tools/lldb/source/API/SBThread.cpp stable/10/contrib/llvm/tools/lldb/source/Breakpoint/Breakpoint.cpp stable/10/contrib/llvm/tools/lldb/source/Breakpoint/BreakpointList.cpp stable/10/contrib/llvm/tools/lldb/source/Breakpoint/BreakpointLocation.cpp stable/10/contrib/llvm/tools/lldb/source/Breakpoint/BreakpointLocationList.cpp stable/10/contrib/llvm/tools/lldb/source/Commands/CommandObjectExpression.cpp stable/10/contrib/llvm/tools/lldb/source/Commands/CommandObjectMemory.cpp stable/10/contrib/llvm/tools/lldb/source/Commands/CommandObjectPlatform.cpp stable/10/contrib/llvm/tools/lldb/source/Commands/CommandObjectPlugin.cpp stable/10/contrib/llvm/tools/lldb/source/Commands/CommandObjectProcess.cpp stable/10/contrib/llvm/tools/lldb/source/Commands/CommandObjectTarget.cpp stable/10/contrib/llvm/tools/lldb/source/Commands/CommandObjectThread.cpp stable/10/contrib/llvm/tools/lldb/source/Commands/CommandObjectWatchpoint.cpp stable/10/contrib/llvm/tools/lldb/source/Core/Address.cpp stable/10/contrib/llvm/tools/lldb/source/Core/ConnectionFileDescriptor.cpp stable/10/contrib/llvm/tools/lldb/source/Core/Debugger.cpp stable/10/contrib/llvm/tools/lldb/source/Core/Mangled.cpp stable/10/contrib/llvm/tools/lldb/source/Core/Module.cpp stable/10/contrib/llvm/tools/lldb/source/Core/StreamFile.cpp stable/10/contrib/llvm/tools/lldb/source/Core/ValueObjectSyntheticFilter.cpp stable/10/contrib/llvm/tools/lldb/source/DataFormatters/CXXFormatterFunctions.cpp stable/10/contrib/llvm/tools/lldb/source/DataFormatters/FormatClasses.cpp stable/10/contrib/llvm/tools/lldb/source/DataFormatters/FormatManager.cpp stable/10/contrib/llvm/tools/lldb/source/DataFormatters/LibCxx.cpp stable/10/contrib/llvm/tools/lldb/source/DataFormatters/LibStdcpp.cpp stable/10/contrib/llvm/tools/lldb/source/DataFormatters/NSDictionary.cpp stable/10/contrib/llvm/tools/lldb/source/DataFormatters/NSSet.cpp stable/10/contrib/llvm/tools/lldb/source/DataFormatters/TypeCategory.cpp stable/10/contrib/llvm/tools/lldb/source/DataFormatters/TypeCategoryMap.cpp stable/10/contrib/llvm/tools/lldb/source/Expression/ClangFunction.cpp stable/10/contrib/llvm/tools/lldb/source/Expression/ClangUserExpression.cpp stable/10/contrib/llvm/tools/lldb/source/Expression/Materializer.cpp stable/10/contrib/llvm/tools/lldb/source/Host/common/File.cpp stable/10/contrib/llvm/tools/lldb/source/Host/common/FileSpec.cpp stable/10/contrib/llvm/tools/lldb/source/Host/common/Host.cpp stable/10/contrib/llvm/tools/lldb/source/Host/common/OptionParser.cpp stable/10/contrib/llvm/tools/lldb/source/Interpreter/Args.cpp stable/10/contrib/llvm/tools/lldb/source/Interpreter/CommandInterpreter.cpp stable/10/contrib/llvm/tools/lldb/source/Interpreter/PythonDataObjects.cpp stable/10/contrib/llvm/tools/lldb/source/Interpreter/ScriptInterpreterPython.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h stable/10/contrib/llvm/tools/lldb/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h stable/10/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.h stable/10/contrib/llvm/tools/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.h stable/10/contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h stable/10/contrib/llvm/tools/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h stable/10/contrib/llvm/tools/lldb/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Platform/POSIX/PlatformPOSIX.h stable/10/contrib/llvm/tools/lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_x86.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/POSIX/RegisterInfos_x86_64.h stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.h stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp stable/10/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h stable/10/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp stable/10/contrib/llvm/tools/lldb/source/Symbol/UnwindPlan.cpp stable/10/contrib/llvm/tools/lldb/source/Target/Platform.cpp stable/10/contrib/llvm/tools/lldb/source/Target/Process.cpp stable/10/contrib/llvm/tools/lldb/source/Target/RegisterContext.cpp stable/10/contrib/llvm/tools/lldb/source/Target/StackFrameList.cpp stable/10/contrib/llvm/tools/lldb/source/Target/SystemRuntime.cpp stable/10/contrib/llvm/tools/lldb/source/Target/Target.cpp stable/10/contrib/llvm/tools/lldb/source/Target/Thread.cpp stable/10/contrib/llvm/tools/lldb/source/Target/ThreadPlanCallFunction.cpp stable/10/contrib/llvm/tools/lldb/source/Target/ThreadPlanCallUserExpression.cpp stable/10/contrib/llvm/tools/lldb/source/Target/ThreadPlanStepInRange.cpp stable/10/contrib/llvm/tools/lldb/source/Utility/StringExtractor.cpp stable/10/contrib/llvm/tools/lldb/source/Utility/StringExtractorGDBRemote.cpp stable/10/contrib/llvm/tools/lldb/source/Utility/StringExtractorGDBRemote.h stable/10/contrib/llvm/tools/lldb/source/lldb.cpp stable/10/contrib/llvm/tools/lldb/tools/lldb-platform/lldb-platform.cpp stable/10/lib/clang/liblldbAPI/Makefile stable/10/lib/clang/liblldbPluginProcessUtility/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBDebugger.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBDebugger.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBDebugger.h Wed Mar 19 13:18:42 2014 (r263367) @@ -10,9 +10,11 @@ #ifndef LLDB_SBDebugger_h_ #define LLDB_SBDebugger_h_ -#include "lldb/API/SBDefines.h" #include +#include "lldb/API/SBDefines.h" +#include "lldb/API/SBPlatform.h" + namespace lldb { class SBDebugger @@ -153,6 +155,12 @@ public: void SetSelectedTarget (SBTarget& target); + lldb::SBPlatform + GetSelectedPlatform(); + + void + SetSelectedPlatform(lldb::SBPlatform &platform); + lldb::SBSourceManager GetSourceManager (); Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBError.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBError.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBError.h Wed Mar 19 13:18:42 2014 (r263367) @@ -72,6 +72,7 @@ protected: friend class SBCommunication; friend class SBHostOS; friend class SBInputReader; + friend class SBPlatform; friend class SBProcess; friend class SBThread; friend class SBTarget; Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBExpressionOptions.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBExpressionOptions.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBExpressionOptions.h Wed Mar 19 13:18:42 2014 (r263367) @@ -65,6 +65,12 @@ public: void SetTryAllThreads (bool run_others = true); + bool + GetTrapExceptions () const; + + void + SetTrapExceptions (bool trap_exceptions = true); + protected: SBExpressionOptions (lldb_private::EvaluateExpressionOptions &expression_options); Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBFileSpec.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBFileSpec.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBFileSpec.h Wed Mar 19 13:18:42 2014 (r263367) @@ -45,6 +45,12 @@ public: const char * GetDirectory() const; + void + SetFilename(const char *filename); + + void + SetDirectory(const char *directory); + uint32_t GetPath (char *dst_path, size_t dst_len) const; @@ -65,6 +71,7 @@ private: friend class SBLineEntry; friend class SBModule; friend class SBModuleSpec; + friend class SBPlatform; friend class SBProcess; friend class SBSourceManager; friend class SBThread; Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBModule.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBModule.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBModule.h Wed Mar 19 13:18:42 2014 (r263367) @@ -76,6 +76,42 @@ public: bool SetPlatformFileSpec (const lldb::SBFileSpec &platform_file); + //------------------------------------------------------------------ + /// Get accessor for the remote install path for a module. + /// + /// When debugging to a remote platform by connecting to a remote + /// platform, the install path of the module can be set. If the + /// install path is set, every time the process is about to launch + /// the target will install this module on the remote platform prior + /// to launching. + /// + /// @return + /// A file specification object. + //------------------------------------------------------------------ + lldb::SBFileSpec + GetRemoteInstallFileSpec (); + + //------------------------------------------------------------------ + /// Set accessor for the remote install path for a module. + /// + /// When debugging to a remote platform by connecting to a remote + /// platform, the install path of the module can be set. If the + /// install path is set, every time the process is about to launch + /// the target will install this module on the remote platform prior + /// to launching. + /// + /// If \a file specifies a full path to an install location, the + /// module will be installed to this path. If the path is relative + /// (no directory specified, or the path is partial like "usr/lib" + /// or "./usr/lib", then the install path will be resolved using + /// the platform's current working directory as the base path. + /// + /// @param[in] + /// A file specification object. + //------------------------------------------------------------------ + bool + SetRemoteInstallFileSpec (lldb::SBFileSpec &file); + lldb::ByteOrder GetByteOrder (); Copied: stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBPlatform.h (from r258884, head/contrib/llvm/tools/lldb/include/lldb/API/SBPlatform.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBPlatform.h Wed Mar 19 13:18:42 2014 (r263367, copy of r258884, head/contrib/llvm/tools/lldb/include/lldb/API/SBPlatform.h) @@ -0,0 +1,198 @@ +//===-- SBPlatform.h --------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLDB_SBPlatform_h_ +#define LLDB_SBPlatform_h_ + +#include "lldb/API/SBDefines.h" + +struct PlatformConnectOptions; +struct PlatformShellCommand; + +namespace lldb { + + class SBPlatformConnectOptions + { + public: + SBPlatformConnectOptions (const char *url); + + SBPlatformConnectOptions (const SBPlatformConnectOptions &rhs); + + ~SBPlatformConnectOptions (); + + void + operator=(const SBPlatformConnectOptions &rhs); + + const char * + GetURL(); + + void + SetURL(const char *url); + + bool + GetRsyncEnabled(); + + void + EnableRsync (const char *options, + const char *remote_path_prefix, + bool omit_remote_hostname); + + void + DisableRsync (); + + const char * + GetLocalCacheDirectory(); + + void + SetLocalCacheDirectory(const char *path); + protected: + PlatformConnectOptions *m_opaque_ptr; + }; + + class SBPlatformShellCommand + { + public: + SBPlatformShellCommand (const char *shell_command); + + SBPlatformShellCommand (const SBPlatformShellCommand &rhs); + + ~SBPlatformShellCommand(); + + void + Clear(); + + const char * + GetCommand(); + + void + SetCommand(const char *shell_command); + + const char * + GetWorkingDirectory (); + + void + SetWorkingDirectory (const char *path); + + uint32_t + GetTimeoutSeconds (); + + void + SetTimeoutSeconds (uint32_t sec); + + int + GetSignal (); + + int + GetStatus (); + + const char * + GetOutput (); + + protected: + friend class SBPlatform; + + PlatformShellCommand *m_opaque_ptr; + }; + + class SBPlatform + { + public: + + SBPlatform (); + + SBPlatform (const char *platform_name); + + ~SBPlatform(); + + bool + IsValid () const; + + void + Clear (); + + const char * + GetWorkingDirectory(); + + bool + SetWorkingDirectory(const char *path); + + const char * + GetName (); + + SBError + ConnectRemote (SBPlatformConnectOptions &connect_options); + + void + DisconnectRemote (); + + bool + IsConnected(); + + //---------------------------------------------------------------------- + // The following functions will work if the platform is connected + //---------------------------------------------------------------------- + const char * + GetTriple(); + + const char * + GetHostname (); + + const char * + GetOSBuild (); + + const char * + GetOSDescription (); + + uint32_t + GetOSMajorVersion (); + + uint32_t + GetOSMinorVersion (); + + uint32_t + GetOSUpdateVersion (); + + SBError + Put (SBFileSpec &src, SBFileSpec &dst); + + SBError + Get (SBFileSpec &src, SBFileSpec &dst); + + SBError + Install (SBFileSpec& src, SBFileSpec& dst); + + SBError + Run (SBPlatformShellCommand &shell_command); + + SBError + MakeDirectory (const char *path, uint32_t file_permissions = eFilePermissionsDirectoryDefault); + + uint32_t + GetFilePermissions (const char *path); + + SBError + SetFilePermissions (const char *path, uint32_t file_permissions); + + protected: + + friend class SBDebugger; + friend class SBTarget; + + lldb::PlatformSP + GetSP () const; + + void + SetSP (const lldb::PlatformSP& platform_sp); + + lldb::PlatformSP m_opaque_sp; + }; + +} // namespace lldb + +#endif // LLDB_SBPlatform_h_ Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBTarget.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBTarget.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBTarget.h Wed Mar 19 13:18:42 2014 (r263367) @@ -268,6 +268,23 @@ public: GetProcess (); //------------------------------------------------------------------ + /// Install any binaries that need to be installed. + /// + /// This function does nothing when debugging on the host system. + /// When connected to remote platforms, the target's main executable + /// and any modules that have their remote install path set will be + /// installed on the remote platform. If the main executable doesn't + /// have an install location set, it will be installed in the remote + /// platform's working directory. + /// + /// @return + /// An error describing anything that went wrong during + /// installation. + //------------------------------------------------------------------ + SBError + Install(); + + //------------------------------------------------------------------ /// Launch a new process. /// /// Launch a new process by spawning a new process using the Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBThread.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBThread.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/API/SBThread.h Wed Mar 19 13:18:42 2014 (r263367) @@ -202,7 +202,10 @@ public: GetStatus (lldb::SBStream &status) const; SBThread - GetExtendedBacktrace (const char *type); + GetExtendedBacktraceThread (const char *type); + + uint32_t + GetExtendedBacktraceOriginatingIndexID (); protected: friend class SBBreakpoint; Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/Breakpoint.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/Breakpoint.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/Breakpoint.h Wed Mar 19 13:18:42 2014 (r263367) @@ -311,6 +311,24 @@ public: //------------------------------------------------------------------ lldb::BreakpointLocationSP GetLocationAtIndex (size_t index); + + //------------------------------------------------------------------ + /// Removes all invalid breakpoint locations. + /// + /// Removes all breakpoint locations with architectures that aren't + /// compatible with \a arch. Also remove any breakpoint locations + /// with whose locations have address where the section has been + /// deleted (module and object files no longer exist). + /// + /// This is typically used after the process calls exec, or anytime + /// the architecture of the target changes. + /// + /// @param[in] arch + /// If valid, check the module in each breakpoint to make sure + /// they are compatible, otherwise, ignore architecture. + //------------------------------------------------------------------ + void + RemoveInvalidLocations (const ArchSpec &arch); //------------------------------------------------------------------ // The next section deals with various breakpoint options. Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointList.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointList.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointList.h Wed Mar 19 13:18:42 2014 (r263367) @@ -132,6 +132,25 @@ public: bool Remove (lldb::break_id_t breakID, bool notify); + + //------------------------------------------------------------------ + /// Removes all invalid breakpoint locations. + /// + /// Removes all breakpoint locations in the list with architectures + /// that aren't compatible with \a arch. Also remove any breakpoint + /// locations with whose locations have address where the section + /// has been deleted (module and object files no longer exist). + /// + /// This is typically used after the process calls exec, or anytime + /// the architecture of the target changes. + /// + /// @param[in] arch + /// If valid, check the module in each breakpoint to make sure + /// they are compatible, otherwise, ignore architecture. + //------------------------------------------------------------------ + void + RemoveInvalidLocations (const ArchSpec &arch); + void SetEnabledAll (bool enabled); Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointLocationList.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointLocationList.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointLocationList.h Wed Mar 19 13:18:42 2014 (r263367) @@ -250,6 +250,9 @@ protected: bool RemoveLocation (const lldb::BreakpointLocationSP &bp_loc_sp); + + void + RemoveInvalidLocations (const ArchSpec &arch); typedef std::vector collection; typedef std::map addr_map; Breakpoint &m_owner; - collection m_locations; + collection m_locations; // Vector of locations, sorted by ID addr_map m_address_to_location; mutable Mutex m_mutex; lldb::break_id_t m_next_id; Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Address.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Address.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Address.h Wed Mar 19 13:18:42 2014 (r263367) @@ -534,6 +534,16 @@ public: bool CalculateSymbolContextLineEntry (LineEntry &line_entry) const; + //------------------------------------------------------------------ + // Returns true if the section should be valid, but isn't because + // the shared pointer to the section can't be reconstructed from + // a weak pointer that contains a valid weak reference to a section. + // Returns false if the section weak pointer has no reference to + // a section, or if the section is still valid + //------------------------------------------------------------------ + bool + SectionWasDeleted() const; + protected: //------------------------------------------------------------------ // Member variables. @@ -550,7 +560,7 @@ protected: // have a valid section. //------------------------------------------------------------------ bool - SectionWasDeleted() const; + SectionWasDeletedPrivate() const; }; Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Debugger.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Debugger.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Debugger.h Wed Mar 19 13:18:42 2014 (r263367) @@ -17,9 +17,6 @@ #include #include "lldb/lldb-public.h" - -#include "lldb/API/SBDefines.h" - #include "lldb/Core/Broadcaster.h" #include "lldb/Core/Communication.h" #include "lldb/Core/InputReaderStack.h" @@ -55,6 +52,10 @@ friend class SourceManager; // For GetS public: + typedef lldb::DynamicLibrarySP (*LoadPluginCallbackType) (const lldb::DebuggerSP &debugger_sp, + const FileSpec& spec, + Error& error); + static lldb::DebuggerSP CreateInstance (lldb::LogOutputCallback log_callback = NULL, void *baton = NULL); @@ -65,7 +66,7 @@ public: FindTargetWithProcess (Process *process); static void - Initialize (); + Initialize (LoadPluginCallbackType load_plugin_callback); static void Terminate (); @@ -333,9 +334,7 @@ public: { return m_instance_name; } - - typedef bool (*LLDBCommandPluginInit) (lldb::SBDebugger& debugger); - + bool LoadPlugin (const FileSpec& spec, Error& error); @@ -377,6 +376,7 @@ protected: LogStreamMap m_log_streams; lldb::StreamSP m_log_callback_stream_sp; ConstString m_instance_name; + static LoadPluginCallbackType g_load_plugin_callback; typedef std::vector LoadedPluginsList; LoadedPluginsList m_loaded_plugins; Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Module.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Module.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/Core/Module.h Wed Mar 19 13:18:42 2014 (r263367) @@ -570,6 +570,18 @@ public: } const FileSpec & + GetRemoteInstallFileSpec () const + { + return m_remote_install_file; + } + + void + SetRemoteInstallFileSpec (const FileSpec &file) + { + m_remote_install_file = file; + } + + const FileSpec & GetSymbolFileFileSpec () const { return m_symfile_spec; @@ -1059,6 +1071,7 @@ protected: lldb_private::UUID m_uuid; ///< Each module is assumed to have a unique identifier to help match it up to debug symbols. FileSpec m_file; ///< The file representation on disk for this module (if there is one). FileSpec m_platform_file;///< The path to the module on the platform on which it is being debugged + FileSpec m_remote_install_file; ///< If set when debugging on remote platforms, this module will be installed at this location FileSpec m_symfile_spec; ///< If this path is valid, then this is the file that _will_ be used as the symbol file for this module ConstString m_object_name; ///< The name an object within this module that is selected, or empty of the module is represented by \a m_file. uint64_t m_object_offset; Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/CXXFormatterFunctions.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/CXXFormatterFunctions.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/CXXFormatterFunctions.h Wed Mar 19 13:18:42 2014 (r263367) @@ -17,6 +17,8 @@ #include "lldb/Core/ConstString.h" #include "lldb/DataFormatters/FormatClasses.h" +#include "lldb/DataFormatters/TypeSynthetic.h" +#include "lldb/Target/ExecutionContext.h" #include "lldb/Target/Target.h" #include "clang/AST/ASTContext.h" Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatCache.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatCache.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatCache.h Wed Mar 19 13:18:42 2014 (r263367) @@ -18,6 +18,7 @@ // Project includes #include "lldb/lldb-public.h" #include "lldb/Core/ConstString.h" +#include "lldb/Host/Mutex.h" #include "lldb/DataFormatters/FormatClasses.h" namespace lldb_private { Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatClasses.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatClasses.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatClasses.h Wed Mar 19 13:18:42 2014 (r263367) @@ -10,9 +10,6 @@ #ifndef lldb_FormatClasses_h_ #define lldb_FormatClasses_h_ -// C Includes -#include - // C++ Includes #include #include @@ -23,17 +20,86 @@ #include "lldb/lldb-public.h" #include "lldb/lldb-enumerations.h" -#include "lldb/Core/ValueObject.h" -#include "lldb/Interpreter/ScriptInterpreterPython.h" #include "lldb/Symbol/ClangASTType.h" #include "lldb/Symbol/Type.h" -#include "lldb/DataFormatters/TypeFormat.h" -#include "lldb/DataFormatters/TypeSummary.h" -#include "lldb/DataFormatters/TypeSynthetic.h" - namespace lldb_private { +class FormattersMatchCandidate +{ +public: + + FormattersMatchCandidate (ConstString name, + uint32_t reason, + bool strip_ptr, + bool strip_ref, + bool strip_tydef) : + m_type_name(name), + m_reason(reason), + m_stripped_pointer(strip_ptr), + m_stripped_reference(strip_ref), + m_stripped_typedef(strip_tydef) + { + } + + ~FormattersMatchCandidate () + {} + + ConstString + GetTypeName () const + { + return m_type_name; + } + + uint32_t + GetReason () const + { + return m_reason; + } + + bool + DidStripPointer () const + { + return m_stripped_pointer; + } + + bool + DidStripReference () const + { + return m_stripped_reference; + } + + bool + DidStripTypedef () const + { + return m_stripped_typedef; + } + + template + bool + IsMatch (const std::shared_ptr& formatter_sp) const + { + if (!formatter_sp) + return false; + if (formatter_sp->Cascades() == false && DidStripTypedef()) + return false; + if (formatter_sp->SkipsPointers() && DidStripPointer()) + return false; + if (formatter_sp->SkipsReferences() && DidStripReference()) + return false; + return true; + } + +private: + ConstString m_type_name; + uint32_t m_reason; + bool m_stripped_pointer; + bool m_stripped_reference; + bool m_stripped_typedef; +}; + +typedef std::vector FormattersMatchVector; + class TypeNameSpecifierImpl { public: Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatManager.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatManager.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatManager.h Wed Mar 19 13:18:42 2014 (r263367) @@ -19,6 +19,7 @@ #include "lldb/lldb-enumerations.h" #include "lldb/DataFormatters/FormatCache.h" +#include "lldb/DataFormatters/FormatClasses.h" #include "lldb/DataFormatters/FormatNavigator.h" #include "lldb/DataFormatters/TypeCategory.h" #include "lldb/DataFormatters/TypeCategoryMap.h" @@ -213,7 +214,36 @@ public: { } + static FormattersMatchVector + GetPossibleMatches (ValueObject& valobj, + lldb::DynamicValueType use_dynamic) + { + FormattersMatchVector matches; + GetPossibleMatches (valobj, + valobj.GetClangType(), + lldb_private::eFormatterChoiceCriterionDirectChoice, + use_dynamic, + matches, + false, + false, + false, + true); + return matches; + } + private: + + static void + GetPossibleMatches (ValueObject& valobj, + ClangASTType clang_type, + uint32_t reason, + lldb::DynamicValueType use_dynamic, + FormattersMatchVector& entries, + bool did_strip_ptr, + bool did_strip_ref, + bool did_strip_typedef, + bool root_level = false); + FormatCache m_format_cache; NamedSummariesMap m_named_summaries_map; std::atomic m_last_revision; Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatNavigator.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatNavigator.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/FormatNavigator.h Wed Mar 19 13:18:42 2014 (r263367) @@ -26,6 +26,9 @@ #include "lldb/Core/ValueObject.h" #include "lldb/DataFormatters/FormatClasses.h" +#include "lldb/DataFormatters/TypeFormat.h" +#include "lldb/DataFormatters/TypeSummary.h" +#include "lldb/DataFormatters/TypeSynthetic.h" #include "lldb/Symbol/ClangASTContext.h" #include "lldb/Symbol/ClangASTType.h" @@ -459,228 +462,29 @@ protected: } return false; } - - bool - Get_BitfieldMatch (ValueObject& valobj, - ConstString typeName, - MapValueType& entry, - uint32_t& reason) - { - Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES)); - // for bitfields, append size to the typename so one can custom format them - StreamString sstring; - sstring.Printf("%s:%d",typeName.AsCString(),valobj.GetBitfieldBitSize()); - ConstString bitfieldname = ConstString(sstring.GetData()); - if (log) - log->Printf("[Get_BitfieldMatch] appended bitfield info, final result is %s", bitfieldname.GetCString()); - if (Get(bitfieldname, entry)) - { - if (log) - log->Printf("[Get_BitfieldMatch] bitfield direct match found, returning"); - return true; - } - else - { - reason |= lldb_private::eFormatterChoiceCriterionStrippedBitField; - if (log) - log->Printf("[Get_BitfieldMatch] no bitfield direct match"); - return false; - } - } - - bool Get_ObjC (ValueObject& valobj, - MapValueType& entry) - { - Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES)); - lldb::ProcessSP process_sp = valobj.GetProcessSP(); - ObjCLanguageRuntime* runtime = process_sp->GetObjCLanguageRuntime(); - if (runtime == NULL) - { - if (log) - log->Printf("[Get_ObjC] no valid ObjC runtime, skipping dynamic"); - return false; - } - ObjCLanguageRuntime::ClassDescriptorSP objc_class_sp (runtime->GetClassDescriptor(valobj)); - if (!objc_class_sp) - { - if (log) - log->Printf("[Get_ObjC] invalid ISA, skipping dynamic"); - return false; - } - ConstString name (objc_class_sp->GetClassName()); - if (log) - log->Printf("[Get_ObjC] dynamic type inferred is %s - looking for direct dynamic match", name.GetCString()); - if (Get(name, entry)) - { - if (log) - log->Printf("[Get_ObjC] direct dynamic match found, returning"); - return true; - } - if (log) - log->Printf("[Get_ObjC] no dynamic match"); - return false; - } - + bool - Get_Impl (ValueObject& valobj, - ClangASTType clang_type, - MapValueType& entry, - lldb::DynamicValueType use_dynamic, - uint32_t& reason) + Get (const FormattersMatchVector& candidates, + MapValueType& entry, + uint32_t *reason) { - Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES)); - - if (!clang_type.IsValid()) - { - if (log) - log->Printf("[Get_Impl] type is invalid, returning"); - return false; - } - - clang_type = clang_type.RemoveFastQualifiers(); - - ConstString typeName(clang_type.GetConstTypeName()); - - if (valobj.GetBitfieldBitSize() > 0) + for (const FormattersMatchCandidate& candidate : candidates) { - if (Get_BitfieldMatch(valobj, typeName, entry, reason)) - return true; - } - - if (log) - log->Printf("[Get_Impl] trying to get %s for VO name %s of type %s", - m_name.c_str(), - valobj.GetName().AsCString(), - typeName.AsCString()); - - if (Get(typeName, entry)) - { - if (log) - log->Printf("[Get] direct match found, returning"); - return true; - } - if (log) - log->Printf("[Get_Impl] no direct match"); - - // strip pointers and references and see if that helps - if (clang_type.IsReferenceType()) - { - if (log) - log->Printf("[Get_Impl] stripping reference"); - if (Get_Impl(valobj, clang_type.GetNonReferenceType(), entry, use_dynamic, reason) && !entry->SkipsReferences()) + if (Get(candidate.GetTypeName(),entry)) { - reason |= lldb_private::eFormatterChoiceCriterionStrippedPointerReference; - return true; - } - } - else if (clang_type.IsPointerType()) - { - if (log) - log->Printf("[Get_Impl] stripping pointer"); - if (Get_Impl(valobj, clang_type.GetPointeeType(), entry, use_dynamic, reason) && !entry->SkipsPointers()) - { - reason |= lldb_private::eFormatterChoiceCriterionStrippedPointerReference; - return true; - } - } - - bool canBeObjCDynamic = valobj.GetClangType().IsPossibleDynamicType (NULL, - false, // no C++ - true); // yes ObjC - - if (canBeObjCDynamic) - { - if (use_dynamic != lldb::eNoDynamicValues) - { - if (log) - log->Printf("[Get_Impl] allowed to figure out dynamic ObjC type"); - if (Get_ObjC(valobj,entry)) + if (candidate.IsMatch(entry) == false) { - reason |= lldb_private::eFormatterChoiceCriterionDynamicObjCDiscovery; - return true; + entry.reset(); + continue; } - } - if (log) - log->Printf("[Get_Impl] dynamic disabled or failed - stripping ObjC pointer"); - if (Get_Impl(valobj, clang_type.GetPointeeType(), entry, use_dynamic, reason) && !entry->SkipsPointers()) - { - reason |= lldb_private::eFormatterChoiceCriterionStrippedPointerReference; - return true; - } - } - - // try to strip typedef chains - if (clang_type.IsTypedefType()) - { - if (log) - log->Printf("[Get_Impl] stripping typedef"); - if ((Get_Impl(valobj, clang_type.GetTypedefedType(), entry, use_dynamic, reason)) && entry->Cascades()) - { - reason |= lldb_private::eFormatterChoiceCriterionNavigatedTypedefs; - return true; - } - } - - // out of luck here - return false; - } - - // we are separately passing in valobj and type because the valobj is fixed (and is used for ObjC discovery and bitfield size) - // but the type can change (e.g. stripping pointers, ...) - bool Get (ValueObject& valobj, - ClangASTType clang_type, - MapValueType& entry, - lldb::DynamicValueType use_dynamic, - uint32_t& reason) - { - Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES)); - - if (Get_Impl (valobj, clang_type, entry, use_dynamic, reason)) - return true; - - // try going to the unqualified type - do { - if (log) - log->Printf("[Get] trying the unqualified type"); - if (!clang_type.IsValid()) - break; - - ClangASTType unqual_clang_ast_type = clang_type.GetFullyUnqualifiedType(); - if (!unqual_clang_ast_type.IsValid()) - { - if (log) - log->Printf("[Get] could not get the unqual_clang_ast_type"); - break; - } - if (unqual_clang_ast_type.GetOpaqueQualType() != clang_type.GetOpaqueQualType()) - { - if (log) - log->Printf("[Get] unqualified type is there and is not the same, let's try"); - if (Get_Impl (valobj, unqual_clang_ast_type,entry, use_dynamic, reason)) - return true; - } - else if (log) - log->Printf("[Get] unqualified type same as original type"); - } while(false); - - // if all else fails, go to static type - if (valobj.IsDynamic()) - { - if (log) - log->Printf("[Get] going to static value"); - lldb::ValueObjectSP static_value_sp(valobj.GetStaticValue()); - if (static_value_sp) - { - if (log) - log->Printf("[Get] has a static value - actually use it"); - if (Get(*static_value_sp.get(), static_value_sp->GetClangType(), entry, use_dynamic, reason)) + else { - reason |= lldb_private::eFormatterChoiceCriterionWentToStaticValue; + if(reason) + *reason = candidate.GetReason(); return true; } } } - return false; } }; Modified: stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/TypeCategory.h ============================================================================== --- stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/TypeCategory.h Wed Mar 19 13:16:58 2014 (r263366) +++ stable/10/contrib/llvm/tools/lldb/include/lldb/DataFormatters/TypeCategory.h Wed Mar 19 13:18:42 2014 (r263367) @@ -18,6 +18,7 @@ #include "lldb/lldb-public.h" #include "lldb/lldb-enumerations.h" +#include "lldb/DataFormatters/FormatClasses.h" #include "lldb/DataFormatters/FormatNavigator.h" namespace lldb_private { @@ -177,23 +178,22 @@ namespace lldb_private { return m_enabled_position; } - bool Get (ValueObject& valobj, + const FormattersMatchVector& candidates, lldb::TypeFormatImplSP& entry, - lldb::DynamicValueType use_dynamic, uint32_t* reason = NULL); bool Get (ValueObject& valobj, + const FormattersMatchVector& candidates, lldb::TypeSummaryImplSP& entry, - lldb::DynamicValueType use_dynamic, uint32_t* reason = NULL); *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***