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...
Ed Maste
emaste at FreeBSD.org
Wed Mar 19 13:18:47 UTC 2014
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 <stdio.h>
+#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<lldb::BreakpointLocationSP> collection;
typedef std::map<lldb_private::Address,
@@ -257,7 +260,7 @@ protected:
Address::ModulePointerAndOffsetLessThanFunctionObject> 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 <stack>
#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<lldb::DynamicLibrarySP> 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 <stdint.h>
-
// C++ Includes
#include <string>
#include <vector>
@@ -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 <class Formatter>
+ bool
+ IsMatch (const std::shared_ptr<Formatter>& 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<FormattersMatchCandidate> 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<uint32_t> 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 ***
More information about the svn-src-stable
mailing list