summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
Diffstat (limited to 'lldb')
-rw-r--r--lldb/include/lldb/Breakpoint/Breakpoint.h6
-rw-r--r--lldb/include/lldb/Breakpoint/BreakpointLocation.h2
-rw-r--r--lldb/include/lldb/Breakpoint/BreakpointSite.h6
-rw-r--r--lldb/include/lldb/Core/Address.h5
-rw-r--r--lldb/include/lldb/Core/Debugger.h5
-rw-r--r--lldb/include/lldb/Core/FormatClasses.h16
-rw-r--r--lldb/include/lldb/Core/FormatManager.h2
-rw-r--r--lldb/include/lldb/Core/FormatNavigator.h2
-rw-r--r--lldb/include/lldb/Core/Module.h2
-rw-r--r--lldb/include/lldb/Core/SearchFilter.h14
-rw-r--r--lldb/include/lldb/Core/SourceManager.h2
-rw-r--r--lldb/include/lldb/Expression/ClangExpressionVariable.h2
-rw-r--r--lldb/include/lldb/Expression/ClangUserExpression.h2
-rw-r--r--lldb/include/lldb/Interpreter/Args.h2
-rw-r--r--lldb/include/lldb/Symbol/ClangASTImporter.h13
-rw-r--r--lldb/include/lldb/Symbol/DWARFCallFrameInfo.h2
-rw-r--r--lldb/include/lldb/Symbol/ObjectFile.h5
-rw-r--r--lldb/include/lldb/Symbol/Type.h4
-rw-r--r--lldb/include/lldb/Target/Memory.h2
-rw-r--r--lldb/include/lldb/Target/Process.h7
-rw-r--r--lldb/include/lldb/Target/RegisterContext.h1
-rw-r--r--lldb/include/lldb/Target/StackFrame.h5
-rw-r--r--lldb/include/lldb/Target/Target.h7
-rw-r--r--lldb/include/lldb/Target/Thread.h6
-rw-r--r--lldb/include/lldb/Target/ThreadList.h3
-rw-r--r--lldb/include/lldb/Utility/PriorityPointerPair.h2
-rw-r--r--lldb/include/lldb/lldb-forward-rtti.h138
-rw-r--r--lldb/include/lldb/lldb-types.h37
-rw-r--r--lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme11
-rw-r--r--lldb/source/API/SBAddress.cpp4
-rw-r--r--lldb/source/API/SBBreakpoint.cpp4
-rw-r--r--lldb/source/API/SBBreakpointLocation.cpp2
-rw-r--r--lldb/source/API/SBFrame.cpp2
-rw-r--r--lldb/source/API/SBFunction.cpp6
-rw-r--r--lldb/source/API/SBProcess.cpp2
-rw-r--r--lldb/source/API/SBSection.cpp2
-rw-r--r--lldb/source/API/SBSymbol.cpp6
-rw-r--r--lldb/source/API/SBTarget.cpp2
-rw-r--r--lldb/source/API/SBValue.cpp4
-rw-r--r--lldb/source/Breakpoint/Breakpoint.cpp8
-rw-r--r--lldb/source/Breakpoint/BreakpointLocation.cpp9
-rw-r--r--lldb/source/Breakpoint/BreakpointSite.cpp4
-rw-r--r--lldb/source/Commands/CommandObjectArgs.cpp2
-rw-r--r--lldb/source/Commands/CommandObjectSource.cpp4
-rw-r--r--lldb/source/Commands/CommandObjectTarget.cpp10
-rw-r--r--lldb/source/Commands/CommandObjectType.cpp4
-rw-r--r--lldb/source/Core/Address.cpp49
-rw-r--r--lldb/source/Core/AddressRange.cpp2
-rw-r--r--lldb/source/Core/Debugger.cpp8
-rw-r--r--lldb/source/Core/Disassembler.cpp2
-rw-r--r--lldb/source/Core/Module.cpp8
-rw-r--r--lldb/source/Core/ModuleList.cpp2
-rw-r--r--lldb/source/Core/SearchFilter.cpp10
-rw-r--r--lldb/source/Core/ValueObject.cpp2
-rw-r--r--lldb/source/Core/ValueObjectMemory.cpp2
-rw-r--r--lldb/source/Expression/ClangASTSource.cpp2
-rw-r--r--lldb/source/Expression/ClangFunction.cpp6
-rw-r--r--lldb/source/Expression/ClangUserExpression.cpp2
-rw-r--r--lldb/source/Expression/ClangUtilityFunction.cpp2
-rw-r--r--lldb/source/Expression/IRInterpreter.cpp6
-rw-r--r--lldb/source/Interpreter/CommandInterpreter.cpp2
-rw-r--r--lldb/source/Interpreter/ScriptInterpreterPython.cpp4
-rw-r--r--lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp2
-rw-r--r--lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp6
-rw-r--r--lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp2
-rw-r--r--lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCSymbolVendor.cpp2
-rw-r--r--lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h2
-rw-r--r--lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDPLog.cpp2
-rw-r--r--lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp16
-rw-r--r--lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h2
-rw-r--r--lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp47
-rw-r--r--lldb/source/Plugins/Process/Utility/UnwindLLDB.h10
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp2
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h2
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.h4
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp22
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h1
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp8
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h2
-rw-r--r--lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp2
-rw-r--r--lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp2
-rw-r--r--lldb/source/Symbol/ObjectFile.cpp8
-rw-r--r--lldb/source/Symbol/Symbol.cpp18
-rw-r--r--lldb/source/Symbol/SymbolVendor.cpp2
-rw-r--r--lldb/source/Symbol/Type.cpp2
-rw-r--r--lldb/source/Symbol/Variable.cpp4
-rw-r--r--lldb/source/Target/ExecutionContext.cpp34
-rw-r--r--lldb/source/Target/Process.cpp17
-rw-r--r--lldb/source/Target/StackFrame.cpp22
-rw-r--r--lldb/source/Target/Target.cpp37
-rw-r--r--lldb/source/Target/Thread.cpp9
-rw-r--r--lldb/source/Target/ThreadList.cpp37
-rw-r--r--lldb/source/Target/ThreadPlanTestCondition.cpp2
-rw-r--r--lldb/source/lldb-log.cpp2
94 files changed, 409 insertions, 416 deletions
diff --git a/lldb/include/lldb/Breakpoint/Breakpoint.h b/lldb/include/lldb/Breakpoint/Breakpoint.h
index 30e9fc30af9..2c2174f9ba3 100644
--- a/lldb/include/lldb/Breakpoint/Breakpoint.h
+++ b/lldb/include/lldb/Breakpoint/Breakpoint.h
@@ -74,7 +74,7 @@ namespace lldb_private {
/// not by the breakpoint.
//----------------------------------------------------------------------
class Breakpoint:
- public ReferenceCountedBase<Breakpoint>,
+ public std::tr1::enable_shared_from_this<Breakpoint>,
public Stoppoint
{
public:
@@ -286,10 +286,6 @@ public:
lldb::BreakpointLocationSP
GetLocationAtIndex (uint32_t index);
-
- const lldb::BreakpointSP
- GetSP ();
-
//------------------------------------------------------------------
// The next section deals with various breakpoint options.
//------------------------------------------------------------------
diff --git a/lldb/include/lldb/Breakpoint/BreakpointLocation.h b/lldb/include/lldb/Breakpoint/BreakpointLocation.h
index 6569e183dcf..71126efde4d 100644
--- a/lldb/include/lldb/Breakpoint/BreakpointLocation.h
+++ b/lldb/include/lldb/Breakpoint/BreakpointLocation.h
@@ -47,7 +47,7 @@ namespace lldb_private {
//----------------------------------------------------------------------
class BreakpointLocation :
- public ReferenceCountedBase<BreakpointLocation>,
+ public std::tr1::enable_shared_from_this<BreakpointLocation>,
public StoppointLocation
{
public:
diff --git a/lldb/include/lldb/Breakpoint/BreakpointSite.h b/lldb/include/lldb/Breakpoint/BreakpointSite.h
index 718311528bf..774aff822e0 100644
--- a/lldb/include/lldb/Breakpoint/BreakpointSite.h
+++ b/lldb/include/lldb/Breakpoint/BreakpointSite.h
@@ -39,7 +39,7 @@ namespace lldb_private {
//----------------------------------------------------------------------
class BreakpointSite :
- public ReferenceCountedBase<BreakpointSite>,
+ public std::tr1::enable_shared_from_this<BreakpointSite>,
public StoppointLocation
{
public:
@@ -159,7 +159,7 @@ public:
/// \a owner is the Breakpoint Location to add.
//------------------------------------------------------------------
void
- AddOwner (lldb::BreakpointLocationSP &owner);
+ AddOwner (const lldb::BreakpointLocationSP &owner);
//------------------------------------------------------------------
/// This method returns the number of breakpoint locations currently
@@ -263,7 +263,7 @@ private:
// Only the Process can create breakpoint sites in
// Process::CreateBreakpointSite (lldb::BreakpointLocationSP &, bool).
BreakpointSite (BreakpointSiteList *list,
- lldb::BreakpointLocationSP& owner,
+ const lldb::BreakpointLocationSP& owner,
lldb::addr_t m_addr,
lldb::tid_t tid,
bool use_hardware);
diff --git a/lldb/include/lldb/Core/Address.h b/lldb/include/lldb/Core/Address.h
index 1b82346aa18..5b1980a299b 100644
--- a/lldb/include/lldb/Core/Address.h
+++ b/lldb/include/lldb/Core/Address.h
@@ -435,7 +435,10 @@ public:
/// isn't resolved yet.
//------------------------------------------------------------------
Module *
- GetModule () const;
+ GetModulePtr () const;
+
+ lldb::ModuleSP
+ GetModuleSP () const;
//------------------------------------------------------------------
/// Get const accessor for the section.
diff --git a/lldb/include/lldb/Core/Debugger.h b/lldb/include/lldb/Core/Debugger.h
index d5e308c8cd6..f17e5f0a1c6 100644
--- a/lldb/include/lldb/Core/Debugger.h
+++ b/lldb/include/lldb/Core/Debugger.h
@@ -251,7 +251,7 @@ private:
class Debugger :
- public ReferenceCountedBaseVirtual<Debugger>,
+ public std::tr1::enable_shared_from_this<Debugger>,
public UserID,
public DebuggerInstanceSettings
{
@@ -315,9 +315,6 @@ public:
void Clear();
- lldb::DebuggerSP
- GetSP ();
-
bool
GetAsyncExecution ();
diff --git a/lldb/include/lldb/Core/FormatClasses.h b/lldb/include/lldb/Core/FormatClasses.h
index 2ed21063a5b..985f108c335 100644
--- a/lldb/include/lldb/Core/FormatClasses.h
+++ b/lldb/include/lldb/Core/FormatClasses.h
@@ -57,7 +57,7 @@ struct ValueFormat
bool skipptr = false,
bool skipref = false);
- typedef lldb::SharedPtr<ValueFormat>::Type SharedPointer;
+ typedef SHARED_PTR(ValueFormat) SharedPointer;
typedef bool(*ValueCallback)(void*, ConstString, const lldb::ValueFormatSP&);
~ValueFormat()
@@ -115,7 +115,7 @@ public:
virtual void
Update() = 0;
- typedef lldb::SharedPtr<SyntheticChildrenFrontEnd>::Type SharedPointer;
+ typedef SHARED_PTR(SyntheticChildrenFrontEnd) SharedPointer;
};
@@ -166,7 +166,7 @@ public:
virtual SyntheticChildrenFrontEnd::SharedPointer
GetFrontEnd(lldb::ValueObjectSP backend) = 0;
- typedef lldb::SharedPtr<SyntheticChildren>::Type SharedPointer;
+ typedef SHARED_PTR(SyntheticChildren) SharedPointer;
typedef bool(*SyntheticChildrenCallback)(void*, ConstString, const SyntheticChildren::SharedPointer&);
};
@@ -266,7 +266,7 @@ public:
return UINT32_MAX;
}
- typedef lldb::SharedPtr<SyntheticChildrenFrontEnd>::Type SharedPointer;
+ typedef SHARED_PTR(SyntheticChildrenFrontEnd) SharedPointer;
};
@@ -351,7 +351,7 @@ public:
return m_interpreter->GetIndexOfChildWithName(m_wrapper, name.GetCString());
}
- typedef lldb::SharedPtr<SyntheticChildrenFrontEnd>::Type SharedPointer;
+ typedef SHARED_PTR(SyntheticChildrenFrontEnd) SharedPointer;
};
@@ -550,7 +550,7 @@ public:
virtual uint32_t
GetIndexOfChildWithName (const ConstString &name_cs);
- typedef lldb::SharedPtr<SyntheticChildrenFrontEnd>::Type SharedPointer;
+ typedef SHARED_PTR(SyntheticChildrenFrontEnd) SharedPointer;
};
@@ -628,7 +628,7 @@ struct SummaryFormat
virtual std::string
GetDescription() = 0;
- typedef lldb::SharedPtr<SummaryFormat>::Type SharedPointer;
+ typedef SHARED_PTR(SummaryFormat) SharedPointer;
typedef bool(*SummaryCallback)(void*, ConstString, const lldb::SummaryFormatSP&);
typedef bool(*RegexSummaryCallback)(void*, lldb::RegularExpressionSP, const lldb::SummaryFormatSP&);
@@ -706,7 +706,7 @@ struct ScriptSummaryFormat : public SummaryFormat
virtual std::string
GetDescription();
- typedef lldb::SharedPtr<ScriptSummaryFormat>::Type SharedPointer;
+ typedef SHARED_PTR(ScriptSummaryFormat) SharedPointer;
};
diff --git a/lldb/include/lldb/Core/FormatManager.h b/lldb/include/lldb/Core/FormatManager.h
index 8f56287ad2d..4b1098b54fd 100644
--- a/lldb/include/lldb/Core/FormatManager.h
+++ b/lldb/include/lldb/Core/FormatManager.h
@@ -154,7 +154,7 @@ public:
const char** matching_category = NULL,
FormatCategoryItems* matching_type = NULL);
- typedef lldb::SharedPtr<FormatCategory>::Type SharedPointer;
+ typedef SHARED_PTR(FormatCategory) SharedPointer;
private:
SummaryNavigator::SharedPointer m_summary_nav;
diff --git a/lldb/include/lldb/Core/FormatNavigator.h b/lldb/include/lldb/Core/FormatNavigator.h
index 437cecadef1..8b0dfa44697 100644
--- a/lldb/include/lldb/Core/FormatNavigator.h
+++ b/lldb/include/lldb/Core/FormatNavigator.h
@@ -232,7 +232,7 @@ public:
typedef typename MapType::mapped_type MapValueType;
typedef typename BackEndType::CallbackType CallbackType;
- typedef typename lldb::SharedPtr<FormatNavigator<KeyType, ValueType> >::Type SharedPointer;
+ typedef typename std::tr1::shared_ptr<FormatNavigator<KeyType, ValueType> > SharedPointer;
friend class FormatCategory;
diff --git a/lldb/include/lldb/Core/Module.h b/lldb/include/lldb/Core/Module.h
index bf8ed401c74..2e187ee0ae6 100644
--- a/lldb/include/lldb/Core/Module.h
+++ b/lldb/include/lldb/Core/Module.h
@@ -44,7 +44,7 @@
namespace lldb_private {
class Module :
- public ReferenceCountedBaseVirtual<Module>,
+ public std::tr1::enable_shared_from_this<Module>,
public SymbolContextScope
{
public:
diff --git a/lldb/include/lldb/Core/SearchFilter.h b/lldb/include/lldb/Core/SearchFilter.h
index 0101ec2862b..e875c4f2e0b 100644
--- a/lldb/include/lldb/Core/SearchFilter.h
+++ b/lldb/include/lldb/Core/SearchFilter.h
@@ -281,7 +281,7 @@ class SearchFilterForNonModuleSpecificSearches :
public SearchFilter
{
public:
- SearchFilterForNonModuleSpecificSearches (lldb::TargetSP &targetSP) : SearchFilter(targetSP) {};
+ SearchFilterForNonModuleSpecificSearches (const lldb::TargetSP &targetSP) : SearchFilter(targetSP) {};
~SearchFilterForNonModuleSpecificSearches () {}
virtual bool
@@ -311,7 +311,7 @@ public:
/// @param[in] module
/// The Module that limits the search.
//------------------------------------------------------------------
- SearchFilterByModule (lldb::TargetSP &targetSP,
+ SearchFilterByModule (const lldb::TargetSP &targetSP,
const FileSpec &module);
SearchFilterByModule (const SearchFilterByModule& rhs);
@@ -372,8 +372,8 @@ public:
/// @param[in] module
/// The Module that limits the search.
//------------------------------------------------------------------
- SearchFilterByModuleList (lldb::TargetSP &targetSP,
- const FileSpecList &module_list);
+ SearchFilterByModuleList (const lldb::TargetSP &targetSP,
+ const FileSpecList &module_list);
SearchFilterByModuleList (const SearchFilterByModuleList& rhs);
@@ -433,9 +433,9 @@ public:
/// @param[in] module
/// The Module that limits the search.
//------------------------------------------------------------------
- SearchFilterByModuleListAndCU (lldb::TargetSP &targetSP,
- const FileSpecList &module_list,
- const FileSpecList &cu_list);
+ SearchFilterByModuleListAndCU (const lldb::TargetSP &targetSP,
+ const FileSpecList &module_list,
+ const FileSpecList &cu_list);
SearchFilterByModuleListAndCU (const SearchFilterByModuleListAndCU& rhs);
diff --git a/lldb/include/lldb/Core/SourceManager.h b/lldb/include/lldb/Core/SourceManager.h
index 9fc9a3f89f4..fbbb7f13e5c 100644
--- a/lldb/include/lldb/Core/SourceManager.h
+++ b/lldb/include/lldb/Core/SourceManager.h
@@ -79,7 +79,7 @@ public:
#endif // SWIG
- typedef lldb::SharedPtr<File>::Type FileSP;
+ typedef std::tr1::shared_ptr<File> FileSP;
#ifndef SWIG
diff --git a/lldb/include/lldb/Expression/ClangExpressionVariable.h b/lldb/include/lldb/Expression/ClangExpressionVariable.h
index 00897265130..cdc2b7a72c1 100644
--- a/lldb/include/lldb/Expression/ClangExpressionVariable.h
+++ b/lldb/include/lldb/Expression/ClangExpressionVariable.h
@@ -216,7 +216,7 @@ public:
void
TransferAddress (bool force = false);
- typedef lldb::SharedPtr<ValueObjectConstResult>::Type ValueObjectConstResultSP;
+ typedef SHARED_PTR(ValueObjectConstResult) ValueObjectConstResultSP;
//----------------------------------------------------------------------
/// Members
diff --git a/lldb/include/lldb/Expression/ClangUserExpression.h b/lldb/include/lldb/Expression/ClangUserExpression.h
index 9e0080312b1..613434ceca1 100644
--- a/lldb/include/lldb/Expression/ClangUserExpression.h
+++ b/lldb/include/lldb/Expression/ClangUserExpression.h
@@ -47,7 +47,7 @@ namespace lldb_private
class ClangUserExpression : public ClangExpression
{
public:
- typedef lldb::SharedPtr<ClangUserExpression>::Type ClangUserExpressionSP;
+ typedef SHARED_PTR(ClangUserExpression) ClangUserExpressionSP;
//------------------------------------------------------------------
/// Constructor
diff --git a/lldb/include/lldb/Interpreter/Args.h b/lldb/include/lldb/Interpreter/Args.h
index a5b66ac387c..07811405a81 100644
--- a/lldb/include/lldb/Interpreter/Args.h
+++ b/lldb/include/lldb/Interpreter/Args.h
@@ -30,7 +30,7 @@ namespace lldb_private {
typedef std::pair<int, std::string> OptionArgValue;
typedef std::pair<std::string, OptionArgValue> OptionArgPair;
typedef std::vector<OptionArgPair> OptionArgVector;
-typedef lldb::SharedPtr<OptionArgVector>::Type OptionArgVectorSP;
+typedef SHARED_PTR(OptionArgVector) OptionArgVectorSP;
struct OptionArgElement
{
diff --git a/lldb/include/lldb/Symbol/ClangASTImporter.h b/lldb/include/lldb/Symbol/ClangASTImporter.h
index 901081ff278..1e1dd53c187 100644
--- a/lldb/include/lldb/Symbol/ClangASTImporter.h
+++ b/lldb/include/lldb/Symbol/ClangASTImporter.h
@@ -86,7 +86,7 @@ public:
//
typedef std::vector < std::pair<lldb::ModuleSP, ClangNamespaceDecl> > NamespaceMap;
- typedef lldb::SharedPtr<NamespaceMap>::Type NamespaceMapSP;
+ typedef SHARED_PTR(NamespaceMap) NamespaceMapSP;
void RegisterNamespaceMap (const clang::NamespaceDecl *decl,
NamespaceMapSP &namespace_map);
@@ -193,9 +193,9 @@ private:
clang::ASTContext *m_source_ctx;
};
- typedef lldb::SharedPtr<Minion>::Type MinionSP;
- typedef std::map<clang::ASTContext *, MinionSP> MinionMap;
- typedef std::map<const clang::NamespaceDecl *, NamespaceMapSP> NamespaceMetaMap;
+ typedef SHARED_PTR(Minion) MinionSP;
+ typedef std::map<clang::ASTContext *, MinionSP> MinionMap;
+ typedef std::map<const clang::NamespaceDecl *, NamespaceMapSP> NamespaceMetaMap;
struct ASTContextMetadata
{
@@ -216,11 +216,10 @@ private:
MapCompleter *m_map_completer;
};
- typedef lldb::SharedPtr<ASTContextMetadata>::Type ASTContextMetadataSP;
-
+ typedef SHARED_PTR(ASTContextMetadata) ASTContextMetadataSP;
typedef std::map<const clang::ASTContext *, ASTContextMetadataSP> ContextMetadataMap;
- ContextMetadataMap m_metadata_map;
+ ContextMetadataMap m_metadata_map;
ASTContextMetadataSP
GetContextMetadata (clang::ASTContext *dst_ctx)
diff --git a/lldb/include/lldb/Symbol/DWARFCallFrameInfo.h b/lldb/include/lldb/Symbol/DWARFCallFrameInfo.h
index 0d667aef14d..bd646d15068 100644
--- a/lldb/include/lldb/Symbol/DWARFCallFrameInfo.h
+++ b/lldb/include/lldb/Symbol/DWARFCallFrameInfo.h
@@ -78,7 +78,7 @@ private:
inst_length (0), ptr_encoding (0), initial_row() {}
};
- typedef lldb::SharedPtr<CIE>::Type CIESP;
+ typedef SHARED_PTR(CIE) CIESP;
struct FDEEntry
{
diff --git a/lldb/include/lldb/Symbol/ObjectFile.h b/lldb/include/lldb/Symbol/ObjectFile.h
index 1bbd8149135..6b356e5c1b4 100644
--- a/lldb/include/lldb/Symbol/ObjectFile.h
+++ b/lldb/include/lldb/Symbol/ObjectFile.h
@@ -50,7 +50,7 @@ namespace lldb_private {
/// this abstract class.
//----------------------------------------------------------------------
class ObjectFile:
- public ReferenceCountedBaseVirtual<ObjectFile>,
+ public std::tr1::enable_shared_from_this<ObjectFile>,
public PluginInterface,
public ModuleChild
{
@@ -100,9 +100,6 @@ public:
virtual
~ObjectFile();
- lldb::ObjectFileSP
- GetSP ();
-
//------------------------------------------------------------------
/// Dump a description of this object to a Stream.
///
diff --git a/lldb/include/lldb/Symbol/Type.h b/lldb/include/lldb/Symbol/Type.h
index 21e11dc5617..35fcd23d2c2 100644
--- a/lldb/include/lldb/Symbol/Type.h
+++ b/lldb/include/lldb/Symbol/Type.h
@@ -21,7 +21,7 @@
namespace lldb_private {
class SymbolFileType :
- public ReferenceCountedBaseVirtual<SymbolFileType>,
+ public std::tr1::enable_shared_from_this<SymbolFileType>,
public UserID
{
public:
@@ -50,7 +50,7 @@ class SymbolFileType :
};
class Type :
- public ReferenceCountedBaseVirtual<Type>,
+ public std::tr1::enable_shared_from_this<Type>,
public UserID
{
public:
diff --git a/lldb/include/lldb/Target/Memory.h b/lldb/include/lldb/Target/Memory.h
index 941e4c0258b..3a45c911b3e 100644
--- a/lldb/include/lldb/Target/Memory.h
+++ b/lldb/include/lldb/Target/Memory.h
@@ -163,7 +163,7 @@ namespace lldb_private {
DeallocateMemory (lldb::addr_t ptr);
protected:
- typedef lldb::SharedPtr<AllocatedBlock>::Type AllocatedBlockSP;
+ typedef std::tr1::shared_ptr<AllocatedBlock> AllocatedBlockSP;
AllocatedBlockSP
AllocatePage (uint32_t byte_size,
diff --git a/lldb/include/lldb/Target/Process.h b/lldb/include/lldb/Target/Process.h
index 730422abf74..20f58489d2e 100644
--- a/lldb/include/lldb/Target/Process.h
+++ b/lldb/include/lldb/Target/Process.h
@@ -1263,7 +1263,7 @@ protected:
/// @brief A plug-in interface definition class for debugging a process.
//----------------------------------------------------------------------
class Process :
- public ReferenceCountedBaseVirtual<Process>,
+ public std::tr1::enable_shared_from_this<Process>,
public UserID,
public Broadcaster,
public ExecutionContextScope,
@@ -2769,7 +2769,7 @@ public:
ClearBreakpointSiteByID (lldb::user_id_t break_id);
lldb::break_id_t
- CreateBreakpointSite (lldb::BreakpointLocationSP &owner,
+ CreateBreakpointSite (const lldb::BreakpointLocationSP &owner,
bool use_hardware);
Error
@@ -2997,9 +2997,6 @@ public:
virtual void
CalculateExecutionContext (ExecutionContext &exe_ctx);
- lldb::ProcessSP
- GetSP ();
-
void
SetSTDIOFileDescriptor (int file_descriptor);
diff --git a/lldb/include/lldb/Target/RegisterContext.h b/lldb/include/lldb/Target/RegisterContext.h
index 06742d2d7b1..af6a20e54ea 100644
--- a/lldb/include/lldb/Target/RegisterContext.h
+++ b/lldb/include/lldb/Target/RegisterContext.h
@@ -20,6 +20,7 @@
namespace lldb_private {
class RegisterContext :
+ public std::tr1::enable_shared_from_this<RegisterContext>,
public ExecutionContextScope
{
public:
diff --git a/lldb/include/lldb/Target/StackFrame.h b/lldb/include/lldb/Target/StackFrame.h
index e90959bcb43..0995a04f8cf 100644
--- a/lldb/include/lldb/Target/StackFrame.h
+++ b/lldb/include/lldb/Target/StackFrame.h
@@ -27,7 +27,7 @@
namespace lldb_private {
class StackFrame :
- public ReferenceCountedBaseVirtual<StackFrame>,
+ public std::tr1::enable_shared_from_this<StackFrame>,
public ExecutionContextScope
{
public:
@@ -166,9 +166,6 @@ public:
virtual void
CalculateExecutionContext (ExecutionContext &exe_ctx);
- lldb::StackFrameSP
- GetSP ();
-
bool
GetStatus (Stream &strm,
bool show_frame_info,
diff --git a/lldb/include/lldb/Target/Target.h b/lldb/include/lldb/Target/Target.h
index a202fb8ee6c..a6132d891e4 100644
--- a/lldb/include/lldb/Target/Target.h
+++ b/lldb/include/lldb/Target/Target.h
@@ -246,7 +246,7 @@ protected:
// Target
//----------------------------------------------------------------------
class Target :
- public ReferenceCountedBaseVirtual<Target>,
+ public std::tr1::enable_shared_from_this<Target>,
public Broadcaster,
public ExecutionContextScope,
public TargetInstanceSettings
@@ -340,9 +340,6 @@ public:
const lldb::ProcessSP &
GetProcessSP () const;
- lldb::TargetSP
- GetSP();
-
void
Destroy();
@@ -912,7 +909,7 @@ public:
StopHook (lldb::TargetSP target_sp, lldb::user_id_t uid);
friend class Target;
};
- typedef lldb::SharedPtr<StopHook>::Type StopHookSP;
+ typedef SHARED_PTR(StopHook) StopHookSP;
// Add an empty stop hook to the Target's stop hook list, and returns a shared pointer to it in new_hook.
// Returns the id of the new hook.
diff --git a/lldb/include/lldb/Target/Thread.h b/lldb/include/lldb/Target/Thread.h
index ab416ca2ab1..43745674820 100644
--- a/lldb/include/lldb/Target/Thread.h
+++ b/lldb/include/lldb/Target/Thread.h
@@ -85,7 +85,7 @@ private:
};
class Thread :
- public ReferenceCountedBaseVirtual<Thread>,
+ public std::tr1::enable_shared_from_this<Thread>,
public UserID,
public ExecutionContextScope,
public ThreadInstanceSettings
@@ -233,9 +233,6 @@ public:
lldb::StateType
GetState() const;
- lldb::ThreadSP
- GetSP ();
-
void
SetState (lldb::StateType state);
@@ -769,6 +766,7 @@ public:
protected:
friend class ThreadPlan;
+ friend class ThreadList;
friend class StackFrameList;
// This is necessary to make sure thread assets get destroyed while the thread is still in good shape
diff --git a/lldb/include/lldb/Target/ThreadList.h b/lldb/include/lldb/Target/ThreadList.h
index 66fbd26ec0e..3a998c49f85 100644
--- a/lldb/include/lldb/Target/ThreadList.h
+++ b/lldb/include/lldb/Target/ThreadList.h
@@ -59,6 +59,9 @@ public:
void
Clear();
+ void
+ Destroy();
+
// Note that "idx" is not the same as the "thread_index". It is a zero
// based index to accessing the current threads, whereas "thread_index"
// is a unique index assigned
diff --git a/lldb/include/lldb/Utility/PriorityPointerPair.h b/lldb/include/lldb/Utility/PriorityPointerPair.h
index 949173d302e..21e60bb2915 100644
--- a/lldb/include/lldb/Utility/PriorityPointerPair.h
+++ b/lldb/include/lldb/Utility/PriorityPointerPair.h
@@ -30,7 +30,7 @@ public:
typedef T& reference_type;
typedef T* pointer_type;
- typedef typename lldb::SharedPtr<T>::Type T_SP;
+ typedef typename SHARED_PTR(T) T_SP;
PriorityPointerPair() :
m_high(),
diff --git a/lldb/include/lldb/lldb-forward-rtti.h b/lldb/include/lldb/lldb-forward-rtti.h
index c9f7b539047..5709f47292c 100644
--- a/lldb/include/lldb/lldb-forward-rtti.h
+++ b/lldb/include/lldb/lldb-forward-rtti.h
@@ -13,84 +13,84 @@
#if defined(__cplusplus)
#include "lldb/lldb-types.h"
+#include <tr1/memory> // for std::tr1::shared_ptr
//----------------------------------------------------------------------
// lldb forward declarations
//----------------------------------------------------------------------
namespace lldb {
- typedef SharedPtr<lldb_private::ABI>::Type ABISP;
- typedef SharedPtr<lldb_private::AddressResolver>::Type AddressResolverSP;
- typedef SharedPtr<lldb_private::Baton>::Type BatonSP;
- typedef SharedPtr<lldb_private::Block>::Type BlockSP;
- typedef IntrusiveSharedPtr<lldb_private::Breakpoint>::Type BreakpointSP;
- typedef IntrusiveSharedPtr<lldb_private::BreakpointSite>::Type BreakpointSiteSP;
- typedef IntrusiveSharedPtr<lldb_private::BreakpointLocation>::Type BreakpointLocationSP;
- typedef SharedPtr<lldb_private::BreakpointResolver>::Type BreakpointResolverSP;
- typedef SharedPtr<lldb_private::Broadcaster>::Type BroadcasterSP;
- typedef SharedPtr<lldb_private::ClangExpressionVariable>::Type ClangExpressionVariableSP;
- typedef SharedPtr<lldb_private::CommandObject>::Type CommandObjectSP;
- typedef SharedPtr<lldb_private::Communication>::Type CommunicationSP;
- typedef SharedPtr<lldb_private::Connection>::Type ConnectionSP;
- typedef SharedPtr<lldb_private::CompileUnit>::Type CompUnitSP;
- typedef SharedPtr<lldb_private::DataBuffer>::Type DataBufferSP;
- typedef SharedPtr<lldb_private::DataExtractor>::Type DataExtractorSP;
- typedef IntrusiveSharedPtr<lldb_private::Debugger>::Type DebuggerSP;
- typedef SharedPtr<lldb_private::Disassembler>::Type DisassemblerSP;
- typedef SharedPtr<lldb_private::DynamicLoader>::Type DynamicLoaderSP;
- typedef SharedPtr<lldb_private::Event>::Type EventSP;
- typedef SharedPtr<lldb_private::FormatCategory>::Type FormatCategorySP;
- typedef SharedPtr<lldb_private::Function>::Type FunctionSP;
- typedef SharedPtr<lldb_private::InlineFunctionInfo>::Type InlineFunctionInfoSP;
- typedef SharedPtr<lldb_private::InputReader>::Type InputReaderSP;
- typedef SharedPtr<lldb_private::InstanceSettings>::Type InstanceSettingsSP;
- typedef SharedPtr<lldb_private::Instruction>::Type InstructionSP;
- typedef SharedPtr<lldb_private::LanguageRuntime>::Type LanguageRuntimeSP;
- typedef SharedPtr<lldb_private::LineTable>::Type LineTableSP;
- typedef SharedPtr<lldb_private::Listener>::Type ListenerSP;
- typedef SharedPtr<lldb_private::Log>::Type LogSP;
- typedef SharedPtr<lldb_private::LogChannel>::Type LogChannelSP;
- typedef IntrusiveSharedPtr<lldb_private::Module>::Type ModuleSP;
- typedef IntrusiveSharedPtr<lldb_private::ObjectFile>::Type ObjectFileSP;
- typedef SharedPtr<lldb_private::OptionValue>::Type OptionValueSP;
- typedef SharedPtr<lldb_private::Platform>::Type PlatformSP;
- typedef IntrusiveSharedPtr<lldb_private::Process>::Type ProcessSP;
- typedef SharedPtr<lldb_private::RegisterContext>::Type RegisterContextSP;
- typedef SharedPtr<lldb_private::RegularExpression>::Type RegularExpressionSP;
- typedef SharedPtr<lldb_private::Section>::Type SectionSP;
- typedef SharedPtr<lldb_private::SearchFilter>::Type SearchFilterSP;
+ typedef std::tr1::shared_ptr<lldb_private::ABI> ABISP;
+ typedef std::tr1::shared_ptr<lldb_private::Baton> BatonSP;
+ typedef std::tr1::shared_ptr<lldb_private::Block> BlockSP;
+ typedef std::tr1::shared_ptr<lldb_private::Breakpoint> BreakpointSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::BreakpointSite> BreakpointSiteSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::BreakpointLocation> BreakpointLocationSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::BreakpointResolver> BreakpointResolverSP;
+ typedef std::tr1::shared_ptr<lldb_private::Broadcaster> BroadcasterSP;
+ typedef std::tr1::shared_ptr<lldb_private::ClangExpressionVariable> ClangExpressionVariableSP;
+ typedef std::tr1::shared_ptr<lldb_private::CommandObject> CommandObjectSP;
+ typedef std::tr1::shared_ptr<lldb_private::Communication> CommunicationSP;
+ typedef std::tr1::shared_ptr<lldb_private::Connection> ConnectionSP;
+ typedef std::tr1::shared_ptr<lldb_private::CompileUnit> CompUnitSP;
+ typedef std::tr1::shared_ptr<lldb_private::DataBuffer> DataBufferSP;
+ typedef std::tr1::shared_ptr<lldb_private::DataExtractor> DataExtractorSP;
+ typedef std::tr1::shared_ptr<lldb_private::Debugger> DebuggerSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::Disassembler> DisassemblerSP;
+ typedef std::tr1::shared_ptr<lldb_private::DynamicLoader> DynamicLoaderSP;
+ typedef std::tr1::shared_ptr<lldb_private::Event> EventSP;
+ typedef std::tr1::shared_ptr<lldb_private::FormatCategory> FormatCategorySP;
+ typedef std::tr1::shared_ptr<lldb_private::Function> FunctionSP;
+ typedef std::tr1::shared_ptr<lldb_private::InlineFunctionInfo> InlineFunctionInfoSP;
+ typedef std::tr1::shared_ptr<lldb_private::InputReader> InputReaderSP;
+ typedef std::tr1::shared_ptr<lldb_private::InstanceSettings> InstanceSettingsSP;
+ typedef std::tr1::shared_ptr<lldb_private::Instruction> InstructionSP;
+ typedef std::tr1::shared_ptr<lldb_private::LanguageRuntime> LanguageRuntimeSP;
+ typedef std::tr1::shared_ptr<lldb_private::LineTable> LineTableSP;
+ typedef std::tr1::shared_ptr<lldb_private::Listener> ListenerSP;
+ typedef std::tr1::shared_ptr<lldb_private::Log> LogSP;
+ typedef std::tr1::shared_ptr<lldb_private::LogChannel> LogChannelSP;
+ typedef std::tr1::shared_ptr<lldb_private::Module> ModuleSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::ObjectFile> ObjectFileSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::OptionValue> OptionValueSP;
+ typedef std::tr1::shared_ptr<lldb_private::Platform> PlatformSP;
+ typedef std::tr1::shared_ptr<lldb_private::Process> ProcessSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::RegisterContext> RegisterContextSP;
+ typedef std::tr1::shared_ptr<lldb_private::RegularExpression> RegularExpressionSP;
+ typedef std::tr1::shared_ptr<lldb_private::Section> SectionSP;
+ typedef std::tr1::shared_ptr<lldb_private::SearchFilter> SearchFilterSP;
#ifndef LLDB_DISABLE_PYTHON
- typedef SharedPtr<lldb_private::ScriptSummaryFormat>::Type ScriptFormatSP;
+ typedef std::tr1::shared_ptr<lldb_private::ScriptSummaryFormat> ScriptFormatSP;
#endif // #ifndef LLDB_DISABLE_PYTHON
- typedef IntrusiveSharedPtr<lldb_private::StackFrame>::Type StackFrameSP;
- typedef SharedPtr<lldb_private::StackFrameList>::Type StackFrameListSP;
- typedef SharedPtr<lldb_private::StopInfo>::Type StopInfoSP;
- typedef SharedPtr<lldb_private::StoppointLocation>::Type StoppointLocationSP;
- typedef SharedPtr<lldb_private::Stream>::Type StreamSP;
- typedef SharedPtr<lldb_private::StringSummaryFormat>::Type StringSummaryFormatSP;
- typedef SharedPtr<lldb_private::SummaryFormat>::Type SummaryFormatSP;
- typedef SharedPtr<lldb_private::SymbolFile>::Type SymbolFileSP;
- typedef IntrusiveSharedPtr<lldb_private::SymbolFileType>::Type SymbolFileTypeSP;
- typedef SharedPtr<lldb_private::SymbolContextSpecifier>::Type SymbolContextSpecifierSP;
- typedef SharedPtr<lldb_private::SyntheticChildren>::Type SyntheticChildrenSP;
- typedef SharedPtr<lldb_private::SyntheticChildrenFrontEnd>::Type SyntheticChildrenFrontEndSP;
- typedef IntrusiveSharedPtr<lldb_private::Target>::Type TargetSP;
- typedef IntrusiveSharedPtr<lldb_private::Thread>::Type ThreadSP;
- typedef SharedPtr<lldb_private::ThreadPlan>::Type ThreadPlanSP;
- typedef SharedPtr<lldb_private::ThreadPlanTracer>::Type ThreadPlanTracerSP;
- typedef IntrusiveSharedPtr<lldb_private::Type>::Type TypeSP;
- typedef SharedPtr<lldb_private::TypeImpl>::Type TypeImplSP;
- typedef SharedPtr<lldb_private::FuncUnwinders>::Type FuncUnwindersSP;
- typedef SharedPtr<lldb_private::UserSettingsController>::Type UserSettingsControllerSP;
- typedef SharedPtr<lldb_private::UnwindPlan>::Type UnwindPlanSP;
+ typedef std::tr1::shared_ptr<lldb_private::StackFrame> StackFrameSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::StackFrameList> StackFrameListSP;
+ typedef std::tr1::shared_ptr<lldb_private::StopInfo> StopInfoSP;
+ typedef std::tr1::shared_ptr<lldb_private::StoppointLocation> StoppointLocationSP;
+ typedef std::tr1::shared_ptr<lldb_private::Stream> StreamSP;
+ typedef std::tr1::shared_ptr<lldb_private::StringSummaryFormat> StringSummaryFormatSP;
+ typedef std::tr1::shared_ptr<lldb_private::SummaryFormat> SummaryFormatSP;
+ typedef std::tr1::shared_ptr<lldb_private::SymbolFile> SymbolFileSP;
+ typedef std::tr1::shared_ptr<lldb_private::SymbolFileType> SymbolFileTypeSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::SymbolContextSpecifier> SymbolContextSpecifierSP;
+ typedef std::tr1::shared_ptr<lldb_private::SyntheticChildren> SyntheticChildrenSP;
+ typedef std::tr1::shared_ptr<lldb_private::SyntheticChildrenFrontEnd> SyntheticChildrenFrontEndSP;
+ typedef std::tr1::shared_ptr<lldb_private::Target> TargetSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::Thread> ThreadSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::ThreadPlan> ThreadPlanSP;
+ typedef std::tr1::shared_ptr<lldb_private::ThreadPlanTracer> ThreadPlanTracerSP;
+ typedef std::tr1::shared_ptr<lldb_private::Type> TypeSP; // make_shared_from_this
+ typedef std::tr1::shared_ptr<lldb_private::TypeImpl> TypeImplSP;
+ typedef std::tr1::shared_ptr<lldb_private::FuncUnwinders> FuncUnwindersSP;
+ typedef std::tr1::shared_ptr<lldb_private::UserSettingsController> UserSettingsControllerSP;
+ typedef std::tr1::shared_ptr<lldb_private::UnwindPlan> UnwindPlanSP;
typedef SharedPtr<lldb_private::ValueObject>::Type ValueObjectSP;
- typedef SharedPtr<lldb_private::Value>::Type ValueSP;
- typedef SharedPtr<lldb_private::ValueFormat>::Type ValueFormatSP;
- typedef SharedPtr<lldb_private::ValueList>::Type ValueListSP;
- typedef SharedPtr<lldb_private::Variable>::Type VariableSP;
- typedef SharedPtr<lldb_private::VariableList>::Type VariableListSP;
- typedef SharedPtr<lldb_private::ValueObjectList>::Type ValueObjectListSP;
- typedef SharedPtr<lldb_private::Watchpoint>::Type WatchpointSP;
+ typedef std::tr1::shared_ptr<lldb_private::Value> ValueSP;
+ typedef std::tr1::shared_ptr<lldb_private::ValueFormat> ValueFormatSP;
+ typedef std::tr1::shared_ptr<lldb_private::ValueList> ValueListSP;
+ typedef std::tr1::shared_ptr<lldb_private::Variable> VariableSP;
+ typedef std::tr1::shared_ptr<lldb_private::VariableList> VariableListSP;
+ typedef std::tr1::shared_ptr<lldb_private::ValueObjectList> ValueObjectListSP;
+ typedef std::tr1::shared_ptr<lldb_private::Watchpoint> WatchpointSP;
} // namespace lldb
diff --git a/lldb/include/lldb/lldb-types.h b/lldb/include/lldb/lldb-types.h
index 1067965af15..d1908db13d7 100644
--- a/lldb/include/lldb/lldb-types.h
+++ b/lldb/include/lldb/lldb-types.h
@@ -23,13 +23,13 @@
//----------------------------------------------------------------------
// All host systems must define:
-// liblldb::condition_t The native condition type (or a substitute class) for conditions on the host system.
-// liblldb::mutex_t The native mutex type for mutex objects on the host system.
-// liblldb::thread_t The native thread type for spawned threads on the system
-// liblldb::thread_arg_t The type of the one any only thread creation argument for the host system
-// liblldb::thread_result_t The return type that gets returned when a thread finishes.
-// liblldb::thread_func_t The function prototype used to spawn a thread on the host system.
-// liblldb::SharedPtr The template that wraps up the host version of a reference counted pointer (like boost::shared_ptr)
+// lldb::condition_t The native condition type (or a substitute class) for conditions on the host system.
+// lldb::mutex_t The native mutex type for mutex objects on the host system.
+// lldb::thread_t The native thread type for spawned threads on the system
+// lldb::thread_arg_t The type of the one any only thread creation argument for the host system
+// lldb::thread_result_t The return type that gets returned when a thread finishes.
+// lldb::thread_func_t The function prototype used to spawn a thread on the host system.
+// lldb::SharedPtr The template that wraps up the host version of a reference counted pointer (like boost::shared_ptr)
// #define LLDB_INVALID_PROCESS_ID ...
// #define LLDB_INVALID_THREAD_ID ...
// #define LLDB_INVALID_HOST_THREAD ...
@@ -64,17 +64,17 @@ namespace lldb {
{
typedef lldb_private::SharingPtr<_Tp> Type;
};
- template<typename _Tp>
- struct LoggingSharedPtr
- {
- typedef lldb_private::LoggingSharingPtr<_Tp> Type;
- };
-
- template <typename _Tp>
- struct IntrusiveSharedPtr
- {
- typedef lldb_private::IntrusiveSharingPtr<_Tp> Type;
- };
+// template<typename _Tp>
+// struct LoggingSharedPtr
+// {
+// typedef lldb_private::LoggingSharingPtr<_Tp> Type;
+// };
+//
+// template <typename _Tp>
+// struct IntrusiveSharedPtr
+// {
+// typedef lldb_private::IntrusiveSharingPtr<_Tp> Type;
+// };
} // namespace lldb
@@ -91,6 +91,7 @@ const lldb::thread_t lldb_invalid_host_thread_const = { NULL, 0 } ;
#endif
+#define SHARED_PTR(T) std::tr1::shared_ptr<T>
#define LLDB_INVALID_HOST_TIME { 0, 0 }
namespace lldb
diff --git a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme b/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme
index 6e12c06c956..43205cd4e07 100644
--- a/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme
+++ b/lldb/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme
@@ -99,6 +99,12 @@
ReferencedContainer = "container:lldb.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
+ <CommandLineArguments>
+ <CommandLineArgument
+ argument = "/Volumes/work/gclayton/Documents/src/args/a.out"
+ isEnabled = "YES">
+ </CommandLineArgument>
+ </CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "LLDB_LAUNCH_FLAG_DISABLE_ASLR"
@@ -132,6 +138,11 @@
</EnvironmentVariable>
</EnvironmentVariables>
<AdditionalOptions>
+ <AdditionalOption
+ key = "MallocScribble"
+ value = ""
+ isEnabled = "YES">
+ </AdditionalOption>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
diff --git a/lldb/source/API/SBAddress.cpp b/lldb/source/API/SBAddress.cpp
index f0059658294..6e6a806de48 100644
--- a/lldb/source/API/SBAddress.cpp
+++ b/lldb/source/API/SBAddress.cpp
@@ -32,7 +32,7 @@ namespace lldb_private
}
AddressImpl (const Address &addr) :
- m_module_sp (addr.GetModule()),
+ m_module_sp (addr.GetModuleSP()),
m_address (addr)
{
}
@@ -301,7 +301,7 @@ SBAddress::GetModule ()
{
Module *module = m_opaque_ap->GetModule();
if (module)
- *sb_module = module;
+ *sb_module = module->shared_from_this();
}
return sb_module;
}
diff --git a/lldb/source/API/SBBreakpoint.cpp b/lldb/source/API/SBBreakpoint.cpp
index 62e4a4cc103..33bdbe0b472 100644
--- a/lldb/source/API/SBBreakpoint.cpp
+++ b/lldb/source/API/SBBreakpoint.cpp
@@ -497,14 +497,14 @@ SBBreakpoint::PrivateBreakpointHitCallback
Process *process = ctx->exe_ctx.GetProcessPtr();
if (process)
{
- SBProcess sb_process (process->GetSP());
+ SBProcess sb_process (process->shared_from_this());
SBThread sb_thread;
SBBreakpointLocation sb_location;
assert (bp_sp);
sb_location.SetLocation (bp_sp->FindLocationByID (break_loc_id));
Thread *thread = ctx->exe_ctx.GetThreadPtr();
if (thread)
- sb_thread.SetThread(thread->GetSP());
+ sb_thread.SetThread(thread->shared_from_this());
return data->callback (data->callback_baton,
sb_process,
diff --git a/lldb/source/API/SBBreakpointLocation.cpp b/lldb/source/API/SBBreakpointLocation.cpp
index 619428eb8c8..57cf5a1a5c7 100644
--- a/lldb/source/API/SBBreakpointLocation.cpp
+++ b/lldb/source/API/SBBreakpointLocation.cpp
@@ -301,7 +301,7 @@ SBBreakpointLocation::GetBreakpoint ()
if (m_opaque_sp)
{
Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex());
- *sb_bp = m_opaque_sp->GetBreakpoint ().GetSP();
+ *sb_bp = m_opaque_sp->GetBreakpoint ().shared_from_this();
}
if (log)
diff --git a/lldb/source/API/SBFrame.cpp b/lldb/source/API/SBFrame.cpp
index 3a3c5823827..c0a69782568 100644
--- a/lldb/source/API/SBFrame.cpp
+++ b/lldb/source/API/SBFrame.cpp
@@ -553,7 +553,7 @@ SBFrame::GetThread () const
if (m_opaque_sp)
{
Mutex::Locker api_locker (m_opaque_sp->GetThread().GetProcess().GetTarget().GetAPIMutex());
- sb_thread.SetThread (m_opaque_sp->GetThread().GetSP());
+ sb_thread.SetThread (m_opaque_sp->GetThread().shared_from_this());
}
if (log)
diff --git a/lldb/source/API/SBFunction.cpp b/lldb/source/API/SBFunction.cpp
index 4e23b9dfb49..f55b2147741 100644
--- a/lldb/source/API/SBFunction.cpp
+++ b/lldb/source/API/SBFunction.cpp
@@ -133,10 +133,10 @@ SBFunction::GetInstructions (SBTarget target)
target->CalculateExecutionContext (exe_ctx);
exe_ctx.SetProcessSP(target->GetProcessSP());
}
- Module *module = m_opaque_ptr->GetAddressRange().GetBaseAddress().GetModule();
- if (module)
+ ModuleSP module_sp = m_opaque_ptr->GetAddressRange().GetBaseAddress().GetModuleSP();
+ if (module_sp)
{
- sb_instructions.SetDisassembler (Disassembler::DisassembleRange (module->GetArchitecture(),
+ sb_instructions.SetDisassembler (Disassembler::DisassembleRange (module_sp->GetArchitecture(),
NULL,
exe_ctx,
m_opaque_ptr->GetAddressRange()));
diff --git a/lldb/source/API/SBProcess.cpp b/lldb/source/API/SBProcess.cpp
index aacec526ce4..76c1badba64 100644
--- a/lldb/source/API/SBProcess.cpp
+++ b/lldb/source/API/SBProcess.cpp
@@ -238,7 +238,7 @@ SBProcess::GetTarget() const
SBTarget sb_target;
if (m_opaque_sp)
- sb_target = m_opaque_sp->GetTarget().GetSP();
+ sb_target = m_opaque_sp->GetTarget().shared_from_this();
if (log)
log->Printf ("SBProcess(%p)::GetTarget () => SBTarget(%p)", m_opaque_sp.get(), sb_target.get());
diff --git a/lldb/source/API/SBSection.cpp b/lldb/source/API/SBSection.cpp
index ed6dba76e58..dedcc7a2850 100644
--- a/lldb/source/API/SBSection.cpp
+++ b/lldb/source/API/SBSection.cpp
@@ -29,7 +29,7 @@ namespace lldb_private
m_section (section)
{
if (section)
- m_module_sp = section->GetModule();
+ m_module_sp = section->GetModule()->shared_from_this();
}
SectionImpl (const SectionImpl &rhs) :
diff --git a/lldb/source/API/SBSymbol.cpp b/lldb/source/API/SBSymbol.cpp
index 1765dbddd8e..51bb98c194a 100644
--- a/lldb/source/API/SBSymbol.cpp
+++ b/lldb/source/API/SBSymbol.cpp
@@ -131,10 +131,10 @@ SBSymbol::GetInstructions (SBTarget target)
const AddressRange *symbol_range = m_opaque_ptr->GetAddressRangePtr();
if (symbol_range)
{
- Module *module = symbol_range->GetBaseAddress().GetModule();
- if (module)
+ ModuleSP module_sp = symbol_range->GetBaseAddress().GetModuleSP();
+ if (module_sp)
{
- sb_instructions.SetDisassembler (Disassembler::DisassembleRange (module->GetArchitecture (),
+ sb_instructions.SetDisassembler (Disassembler::DisassembleRange (module_sp->GetArchitecture (),
NULL,
exe_ctx,
*symbol_range));
diff --git a/lldb/source/API/SBTarget.cpp b/lldb/source/API/SBTarget.cpp
index 82224a930c6..f594827a1e2 100644
--- a/lldb/source/API/SBTarget.cpp
+++ b/lldb/source/API/SBTarget.cpp
@@ -119,7 +119,7 @@ SBTarget::GetDebugger () const
{
SBDebugger debugger;
if (m_opaque_sp)
- debugger.reset (m_opaque_sp->GetDebugger().GetSP());
+ debugger.reset (m_opaque_sp->GetDebugger().shared_from_this());
return debugger;
}
diff --git a/lldb/source/API/SBValue.cpp b/lldb/source/API/SBValue.cpp
index 1ed3fea133a..87413e036d2 100644
--- a/lldb/source/API/SBValue.cpp
+++ b/lldb/source/API/SBValue.cpp
@@ -883,7 +883,7 @@ SBValue::GetThread()
{
if (m_opaque_sp->GetExecutionContextScope())
{
- result = SBThread(m_opaque_sp->GetExecutionContextScope()->CalculateThread()->GetSP());
+ result = SBThread(m_opaque_sp->GetExecutionContextScope()->CalculateThread()->shared_from_this());
}
}
LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
@@ -905,7 +905,7 @@ SBValue::GetFrame()
{
if (m_opaque_sp->GetExecutionContextScope())
{
- result.SetFrame (m_opaque_sp->GetExecutionContextScope()->CalculateStackFrame()->GetSP());
+ result.SetFrame (m_opaque_sp->GetExecutionContextScope()->CalculateStackFrame()->shared_from_this());
}
}
LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
diff --git a/lldb/source/Breakpoint/Breakpoint.cpp b/lldb/source/Breakpoint/Breakpoint.cpp
index 9095db064ee..aa9fab25618 100644
--- a/lldb/source/Breakpoint/Breakpoint.cpp
+++ b/lldb/source/Breakpoint/Breakpoint.cpp
@@ -556,11 +556,3 @@ Breakpoint::GetFilterDescription (Stream *s)
{
m_filter_sp->GetDescription (s);
}
-
-const BreakpointSP
-Breakpoint::GetSP ()
-{
- // This object contains an instrusive ref count base class so we can
- // easily make a shared pointer to this object
- return BreakpointSP (this);
-}
diff --git a/lldb/source/Breakpoint/BreakpointLocation.cpp b/lldb/source/Breakpoint/BreakpointLocation.cpp
index 9adf18989be..fb123de56e6 100644
--- a/lldb/source/Breakpoint/BreakpointLocation.cpp
+++ b/lldb/source/Breakpoint/BreakpointLocation.cpp
@@ -149,11 +149,10 @@ BreakpointLocation::SetCondition (const char *condition)
ThreadPlan *
BreakpointLocation::GetThreadPlanToTestCondition (ExecutionContext &exe_ctx, Stream &error)
{
- lldb::BreakpointLocationSP this_sp(this);
if (m_options_ap.get())
- return m_options_ap->GetThreadPlanToTestCondition (exe_ctx, this_sp, error);
+ return m_options_ap->GetThreadPlanToTestCondition (exe_ctx, shared_from_this(), error);
else
- return m_owner.GetThreadPlanToTestCondition (exe_ctx, this_sp, error);
+ return m_owner.GetThreadPlanToTestCondition (exe_ctx, shared_from_this(), error);
}
const char *
@@ -259,9 +258,7 @@ BreakpointLocation::ResolveBreakpointSite ()
if (m_owner.GetTarget().GetSectionLoadList().IsEmpty())
return false;
- BreakpointLocationSP this_sp(this);
-
- lldb::break_id_t new_id = process->CreateBreakpointSite (this_sp, false);
+ lldb::break_id_t new_id = process->CreateBreakpointSite (shared_from_this(), false);
if (new_id == LLDB_INVALID_BREAK_ID)
{
diff --git a/lldb/source/Breakpoint/BreakpointSite.cpp b/lldb/source/Breakpoint/BreakpointSite.cpp
index 962117c27df..1ad7f8f1440 100644
--- a/lldb/source/Breakpoint/BreakpointSite.cpp
+++ b/lldb/source/Breakpoint/BreakpointSite.cpp
@@ -23,7 +23,7 @@ using namespace lldb_private;
BreakpointSite::BreakpointSite
(
BreakpointSiteList *list,
- BreakpointLocationSP& owner,
+ const BreakpointLocationSP& owner,
lldb::addr_t addr,
lldb::tid_t tid,
bool use_hardware
@@ -155,7 +155,7 @@ BreakpointSite::SetEnabled (bool enabled)
}
void
-BreakpointSite::AddOwner (BreakpointLocationSP &owner)
+BreakpointSite::AddOwner (const BreakpointLocationSP &owner)
{
m_owners.Add(owner);
}
diff --git a/lldb/source/Commands/CommandObjectArgs.cpp b/lldb/source/Commands/CommandObjectArgs.cpp
index dfbbe7969b6..01f798f573f 100644
--- a/lldb/source/Commands/CommandObjectArgs.cpp
+++ b/lldb/source/Commands/CommandObjectArgs.cpp
@@ -148,7 +148,7 @@ CommandObjectArgs::Execute
return false;
}
- Module *thread_module = thread_cur_frame->GetFrameCodeAddress ().GetModule ();
+ Module *thread_module = thread_cur_frame->GetFrameCodeAddress ().GetModulePtr ();
if (!thread_module)
{
result.AppendError ("The PC has no associated module.");
diff --git a/lldb/source/Commands/CommandObjectSource.cpp b/lldb/source/Commands/CommandObjectSource.cpp
index 07e133c6bb7..21f6339b014 100644
--- a/lldb/source/Commands/CommandObjectSource.cpp
+++ b/lldb/source/Commands/CommandObjectSource.cpp
@@ -468,7 +468,7 @@ public:
{
const bool show_inlines = true;
m_breakpoint_locations.Reset (last_file_sp->GetFileSpec(), 0, show_inlines);
- SearchFilter target_search_filter (target->GetSP());
+ SearchFilter target_search_filter (target->shared_from_this());
target_search_filter.Search (m_breakpoint_locations);
}
}
@@ -570,7 +570,7 @@ public:
{
const bool show_inlines = true;
m_breakpoint_locations.Reset (*sc.comp_unit, 0, show_inlines);
- SearchFilter target_search_filter (target->GetSP());
+ SearchFilter target_search_filter (target->shared_from_this());
target_search_filter.Search (m_breakpoint_locations);
}
else
diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp
index 8b0fd17d159..3e05d2141e0 100644
--- a/lldb/source/Commands/CommandObjectTarget.cpp
+++ b/lldb/source/Commands/CommandObjectTarget.cpp
@@ -1329,7 +1329,7 @@ LookupAddressInModule
{
if (!target->GetSectionLoadList().ResolveLoadAddress (addr, so_addr))
return false;
- else if (so_addr.GetModule() != module)
+ else if (so_addr.GetModulePtr() != module)
return false;
}
else
@@ -1643,7 +1643,7 @@ FindModulesByName (Target *target,
{
if (FileSpec::Equal(module->GetFileSpec(), module_file_spec, true))
{
- module_sp = module;
+ module_sp = module->shared_from_this();
module_list.AppendIfNeeded(module_sp);
}
}
@@ -2757,7 +2757,7 @@ public:
Address module_address;
if (module_address.SetLoadAddress(m_options.m_module_addr, target))
{
- Module *module = module_address.GetModule();
+ Module *module = module_address.GetModulePtr();
if (module)
{
PrintModule (strm, module);
@@ -2800,7 +2800,7 @@ public:
if (use_global_module_list)
{
module = Module::GetAllocatedModuleAtIndex(image_idx);
- module_sp = module;
+ module_sp = module->shared_from_this();
}
else
{
@@ -2874,7 +2874,7 @@ protected:
case 'r':
{
uint32_t ref_count = 0;
- ModuleSP module_sp (module);
+ ModuleSP module_sp (module->shared_from_this());
if (module_sp)
{
// Take one away to make sure we don't count our local "module_sp"
diff --git a/lldb/source/Commands/CommandObjectType.cpp b/lldb/source/Commands/CommandObjectType.cpp
index 26a110ee336..61756d7942e 100644
--- a/lldb/source/Commands/CommandObjectType.cpp
+++ b/lldb/source/Commands/CommandObjectType.cpp
@@ -75,7 +75,7 @@ public:
{
}
- typedef lldb::SharedPtr<ScriptAddOptions>::Type SharedPointer;
+ typedef SHARED_PTR(ScriptAddOptions) SharedPointer;
};
@@ -108,7 +108,7 @@ public:
{
}
- typedef lldb::SharedPtr<SynthAddOptions>::Type SharedPointer;
+ typedef SHARED_PTR(SynthAddOptions) SharedPointer;
};
diff --git a/lldb/source/Core/Address.cpp b/lldb/source/Core/Address.cpp
index 2ea3bb17312..120ae5e4aa7 100644
--- a/lldb/source/Core/Address.cpp
+++ b/lldb/source/Core/Address.cpp
@@ -55,7 +55,7 @@ GetByteOrderAndAddressSize (ExecutionContextScope *exe_scope, const Address &add
if (byte_order == eByteOrderInvalid || addr_size == 0)
{
- Module *module = address.GetModule();
+ Module *module = address.GetModulePtr();
if (module)
{
byte_order = module->GetArchitecture().GetByteOrder();
@@ -118,7 +118,7 @@ ReadAddress (ExecutionContextScope *exe_scope, const Address &address, uint32_t
{
// If we were not running, yet able to read an integer, we must
// have a module
- Module *module = address.GetModule();
+ Module *module = address.GetModulePtr();
assert (module);
if (module->ResolveFileAddress(deref_addr, deref_so_addr))
return true;
@@ -248,13 +248,26 @@ Address::ResolveAddressUsingFileSections (addr_t addr, const SectionList *sectio
}
Module *
-Address::GetModule () const
+Address::GetModulePtr () const
{
if (m_section)
return m_section->GetModule();
return NULL;
}
+ModuleSP
+Address::GetModuleSP () const
+{
+ lldb::ModuleSP module_sp;
+ if (m_section)
+ {
+ Module *module = m_section->GetModule();
+ if (module)
+ module_sp = module->shared_from_this();
+ }
+ return module_sp;
+}
+
addr_t
Address::GetFileAddress () const
{
@@ -434,7 +447,7 @@ Address::Dump (Stream *s, ExecutionContextScope *exe_scope, DumpStyle style, Dum
}
uint32_t pointer_size = 4;
- Module *module = GetModule();
+ Module *module = GetModulePtr();
if (target)
pointer_size = target->GetArchitecture().GetAddressByteSize();
else if (module)
@@ -670,7 +683,7 @@ Address::Dump (Stream *s, ExecutionContextScope *exe_scope, DumpStyle style, Dum
case DumpStyleDetailedSymbolContext:
if (IsSectionOffset())
{
- Module *module = GetModule();
+ Module *module = GetModulePtr();
if (module)
{
SymbolContext sc;
@@ -738,7 +751,7 @@ Address::CalculateSymbolContext (SymbolContext *sc, uint32_t resolve_scope) cons
Module *address_module = m_section->GetModule();
if (address_module)
{
- sc->module_sp = address_module;
+ sc->module_sp = address_module->shared_from_this();
if (sc->module_sp)
return sc->module_sp->ResolveSymbolContextForAddress (*this, resolve_scope, *sc);
}
@@ -760,7 +773,7 @@ Address::CalculateSymbolContextCompileUnit () const
if (m_section)
{
SymbolContext sc;
- sc.module_sp = m_section->GetModule();
+ sc.module_sp = m_section->GetModule()->shared_from_this();
if (sc.module_sp)
{
sc.module_sp->ResolveSymbolContextForAddress (*this, eSymbolContextCompUnit, sc);
@@ -776,7 +789,7 @@ Address::CalculateSymbolContextFunction () const
if (m_section)
{
SymbolContext sc;
- sc.module_sp = m_section->GetModule();
+ sc.module_sp = m_section->GetModule()->shared_from_this();
if (sc.module_sp)
{
sc.module_sp->ResolveSymbolContextForAddress (*this, eSymbolContextFunction, sc);
@@ -792,7 +805,7 @@ Address::CalculateSymbolContextBlock () const
if (m_section)
{
SymbolContext sc;
- sc.module_sp = m_section->GetModule();
+ sc.module_sp = m_section->GetModule()->shared_from_this();
if (sc.module_sp)
{
sc.module_sp->ResolveSymbolContextForAddress (*this, eSymbolContextBlock, sc);
@@ -808,7 +821,7 @@ Address::CalculateSymbolContextSymbol () const
if (m_section)
{
SymbolContext sc;
- sc.module_sp = m_section->GetModule();
+ sc.module_sp = m_section->GetModule()->shared_from_this();
if (sc.module_sp)
{
sc.module_sp->ResolveSymbolContextForAddress (*this, eSymbolContextSymbol, sc);
@@ -824,7 +837,7 @@ Address::CalculateSymbolContextLineEntry (LineEntry &line_entry) const
if (m_section)
{
SymbolContext sc;
- sc.module_sp = m_section->GetModule();
+ sc.module_sp = m_section->GetModule()->shared_from_this();
if (sc.module_sp)
{
sc.module_sp->ResolveSymbolContextForAddress (*this, eSymbolContextLineEntry, sc);
@@ -868,8 +881,8 @@ Address::CompareLoadAddress (const Address& a, const Address& b, Target *target)
int
Address::CompareModulePointerAndOffset (const Address& a, const Address& b)
{
- Module *a_module = a.GetModule ();
- Module *b_module = b.GetModule ();
+ Module *a_module = a.GetModulePtr ();
+ Module *b_module = b.GetModulePtr ();
if (a_module < b_module)
return -1;
if (a_module > b_module)
@@ -913,8 +926,8 @@ Address::MemorySize () const
bool
lldb_private::operator< (const Address& lhs, const Address& rhs)
{
- Module *lhs_module = lhs.GetModule();
- Module *rhs_module = rhs.GetModule();
+ Module *lhs_module = lhs.GetModulePtr();
+ Module *rhs_module = rhs.GetModulePtr();
if (lhs_module == rhs_module)
{
// Addresses are in the same module, just compare the file addresses
@@ -931,8 +944,8 @@ lldb_private::operator< (const Address& lhs, const Address& rhs)
bool
lldb_private::operator> (const Address& lhs, const Address& rhs)
{
- Module *lhs_module = lhs.GetModule();
- Module *rhs_module = rhs.GetModule();
+ Module *lhs_module = lhs.GetModulePtr();
+ Module *rhs_module = rhs.GetModulePtr();
if (lhs_module == rhs_module)
{
// Addresses are in the same module, just compare the file addresses
@@ -987,7 +1000,7 @@ Address::ResolveLinkedAddress ()
AddressClass
Address::GetAddressClass () const
{
- Module *module = GetModule();
+ Module *module = GetModulePtr();
if (module)
{
ObjectFile *obj_file = module->GetObjectFile();
diff --git a/lldb/source/Core/AddressRange.cpp b/lldb/source/Core/AddressRange.cpp
index 391f611dc35..700de90806c 100644
--- a/lldb/source/Core/AddressRange.cpp
+++ b/lldb/source/Core/AddressRange.cpp
@@ -177,7 +177,7 @@ AddressRange::Dump(Stream *s, Target *target, Address::DumpStyle style, Address:
{
if (show_module)
{
- Module *module = GetBaseAddress().GetModule();
+ Module *module = GetBaseAddress().GetModulePtr();
if (module)
s->Printf("%s", module->GetFileSpec().GetFilename().AsCString());
}
diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp
index 8b5e8d42bac..f979c8d5877 100644
--- a/lldb/source/Core/Debugger.cpp
+++ b/lldb/source/Core/Debugger.cpp
@@ -263,14 +263,6 @@ Debugger::Destroy (DebuggerSP &debugger_sp)
}
DebuggerSP
-Debugger::GetSP ()
-{
- // This object contains an instrusive ref count base class so we can
- // easily make a shared pointer to this object
- return DebuggerSP (this);
-}
-
-DebuggerSP
Debugger::FindDebuggerWithInstanceName (const ConstString &instance_name)
{
DebuggerSP debugger_sp;
diff --git a/lldb/source/Core/Disassembler.cpp b/lldb/source/Core/Disassembler.cpp
index fe044a6dc4c..d6b19acdaa3 100644
--- a/lldb/source/Core/Disassembler.cpp
+++ b/lldb/source/Core/Disassembler.cpp
@@ -383,7 +383,7 @@ Disassembler::PrintInstructions
prev_sc = sc;
- Module *module = addr.GetModule();
+ Module *module = addr.GetModulePtr();
if (module)
{
uint32_t resolved_mask = module->ResolveSymbolContextForAddress(addr, eSymbolContextEverything, sc);
diff --git a/lldb/source/Core/Module.cpp b/lldb/source/Core/Module.cpp
index 556b4a57a7c..28e8be2334b 100644
--- a/lldb/source/Core/Module.cpp
+++ b/lldb/source/Core/Module.cpp
@@ -224,7 +224,7 @@ Module::ParseAllDebugSymbols()
return;
SymbolContext sc;
- sc.module_sp = this;
+ sc.module_sp = shared_from_this();
uint32_t cu_idx;
SymbolVendor *symbols = GetSymbolVendor ();
@@ -258,7 +258,7 @@ Module::ParseAllDebugSymbols()
void
Module::CalculateSymbolContext(SymbolContext* sc)
{
- sc->module_sp = this;
+ sc->module_sp = shared_from_this();
}
Module *
@@ -328,7 +328,7 @@ Module::ResolveSymbolContextForAddress (const Address& so_addr, uint32_t resolve
{
// If the section offset based address resolved itself, then this
// is the right module.
- sc.module_sp = this;
+ sc.module_sp = shared_from_this();
resolved_flags |= eSymbolContextModule;
// Resolve the compile unit, function, block, line table or line
@@ -430,7 +430,7 @@ Module::FindCompileUnits (const FileSpec &path,
const uint32_t start_size = sc_list.GetSize();
const uint32_t num_compile_units = GetNumCompileUnits();
SymbolContext sc;
- sc.module_sp = this;
+ sc.module_sp = shared_from_this();
const bool compare_directory = path.GetDirectory();
for (uint32_t i=0; i<num_compile_units; ++i)
{
diff --git a/lldb/source/Core/ModuleList.cpp b/lldb/source/Core/ModuleList.cpp
index ff25f1901f0..5046f4a4397 100644
--- a/lldb/source/Core/ModuleList.cpp
+++ b/lldb/source/Core/ModuleList.cpp
@@ -585,7 +585,7 @@ ModuleList::ResolveSymbolContextForAddress (const Address& so_addr, uint32_t res
{
// The address is already section offset so it has a module
uint32_t resolved_flags = 0;
- Module *module = so_addr.GetModule();
+ Module *module = so_addr.GetModulePtr();
if (module)
{
resolved_flags = module->ResolveSymbolContextForAddress (so_addr,
diff --git a/lldb/source/Core/SearchFilter.cpp b/lldb/source/Core/SearchFilter.cpp
index d31ed8b5818..342e988c147 100644
--- a/lldb/source/Core/SearchFilter.cpp
+++ b/lldb/source/Core/SearchFilter.cpp
@@ -318,7 +318,7 @@ SearchFilter::DoFunctionIteration (Function *function, const SymbolContext &cont
// SearchFilterByModule constructors
//----------------------------------------------------------------------
-SearchFilterByModule::SearchFilterByModule (lldb::TargetSP &target_sp, const FileSpec &module) :
+SearchFilterByModule::SearchFilterByModule (const lldb::TargetSP &target_sp, const FileSpec &module) :
SearchFilter (target_sp),
m_module_spec (module)
{
@@ -430,7 +430,7 @@ SearchFilterByModule::Search (Searcher &searcher)
Module* module = m_target_sp->GetImages().GetModulePointerAtIndex(i);
if (FileSpec::Compare (m_module_spec, module->GetFileSpec(), false) == 0)
{
- SymbolContext matchingContext(m_target_sp, ModuleSP(module));
+ SymbolContext matchingContext(m_target_sp, module->shared_from_this());
Searcher::CallbackReturn shouldContinue;
shouldContinue = DoModuleIteration(matchingContext, searcher);
@@ -476,7 +476,7 @@ SearchFilterByModule::Dump (Stream *s) const
// SearchFilterByModuleList constructors
//----------------------------------------------------------------------
-SearchFilterByModuleList::SearchFilterByModuleList (lldb::TargetSP &target_sp, const FileSpecList &module_list) :
+SearchFilterByModuleList::SearchFilterByModuleList (const lldb::TargetSP &target_sp, const FileSpecList &module_list) :
SearchFilter (target_sp),
m_module_spec_list (module_list)
{
@@ -594,7 +594,7 @@ SearchFilterByModuleList::Search (Searcher &searcher)
Module* module = m_target_sp->GetImages().GetModulePointerAtIndex(i);
if (m_module_spec_list.FindFileIndex(0, module->GetFileSpec(), false) != UINT32_MAX)
{
- SymbolContext matchingContext(m_target_sp, ModuleSP(module));
+ SymbolContext matchingContext(m_target_sp, module->shared_from_this());
Searcher::CallbackReturn shouldContinue;
shouldContinue = DoModuleIteration(matchingContext, searcher);
@@ -664,7 +664,7 @@ SearchFilterByModuleList::Dump (Stream *s) const
// SearchFilterByModuleListAndCU constructors
//----------------------------------------------------------------------
-SearchFilterByModuleListAndCU::SearchFilterByModuleListAndCU (lldb::TargetSP &target_sp,
+SearchFilterByModuleListAndCU::SearchFilterByModuleListAndCU (const lldb::TargetSP &target_sp,
const FileSpecList &module_list,
const FileSpecList &cu_list) :
SearchFilterByModuleList (target_sp, module_list),
diff --git a/lldb/source/Core/ValueObject.cpp b/lldb/source/Core/ValueObject.cpp
index cfc5dcd3fd2..dbf5bc6ae9b 100644
--- a/lldb/source/Core/ValueObject.cpp
+++ b/lldb/source/Core/ValueObject.cpp
@@ -3490,7 +3490,7 @@ ValueObject::EvaluationPoint::EvaluationPoint (ExecutionContextScope *exe_scope,
Target *target = exe_ctx.GetTargetPtr();
if (target != NULL)
{
- m_target_sp = target;
+ m_target_sp = target->shared_from_this();
m_process_sp = exe_ctx.GetProcessSP();
if (!m_process_sp)
m_process_sp = target->GetProcessSP();
diff --git a/lldb/source/Core/ValueObjectMemory.cpp b/lldb/source/Core/ValueObjectMemory.cpp
index bd7a791b9b1..5d9406e02f2 100644
--- a/lldb/source/Core/ValueObjectMemory.cpp
+++ b/lldb/source/Core/ValueObjectMemory.cpp
@@ -272,7 +272,7 @@ ValueObjectMemory::IsInScope ()
Module *
ValueObjectMemory::GetModule()
{
- return m_address.GetModule();
+ return m_address.GetModulePtr();
}
diff --git a/lldb/source/Expression/ClangASTSource.cpp b/lldb/source/Expression/ClangASTSource.cpp
index d7a19264b88..162dfab2ef4 100644
--- a/lldb/source/Expression/ClangASTSource.cpp
+++ b/lldb/source/Expression/ClangASTSource.cpp
@@ -946,7 +946,7 @@ ClangASTSource::CompleteNamespaceMap (ClangASTImporter::NamespaceMapSP &namespac
NamespaceDecl *
ClangASTSource::AddNamespace (NameSearchContext &context, ClangASTImporter::NamespaceMapSP &namespace_decls)
{
- if (namespace_decls.empty())
+ if (!namespace_decls)
return NULL;
lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
diff --git a/lldb/source/Expression/ClangFunction.cpp b/lldb/source/Expression/ClangFunction.cpp
index c583da90d3e..22447692749 100644
--- a/lldb/source/Expression/ClangFunction.cpp
+++ b/lldb/source/Expression/ClangFunction.cpp
@@ -70,7 +70,7 @@ ClangFunction::ClangFunction
// Can't make a ClangFunction without a process.
assert (process != NULL);
- m_jit_process_sp = process->GetSP();
+ m_jit_process_sp = process->shared_from_this();
}
ClangFunction::ClangFunction
@@ -95,7 +95,7 @@ ClangFunction::ClangFunction
// Can't make a ClangFunction without a process.
assert (process != NULL);
- m_jit_process_sp = process->GetSP();
+ m_jit_process_sp = process->shared_from_this();
m_function_addr = m_function_ptr->GetAddressRange().GetBaseAddress();
m_function_return_qual_type = m_function_ptr->GetReturnClangType();
@@ -266,7 +266,7 @@ ClangFunction::WriteFunctionWrapper (ExecutionContext &exe_ctx, Stream &errors)
if (!jit_error.Success())
return false;
if (process && m_jit_alloc != LLDB_INVALID_ADDRESS)
- m_jit_process_sp = process->GetSP();
+ m_jit_process_sp = process->shared_from_this();
return true;
}
diff --git a/lldb/source/Expression/ClangUserExpression.cpp b/lldb/source/Expression/ClangUserExpression.cpp
index 7719f081518..0bcae47c519 100644
--- a/lldb/source/Expression/ClangUserExpression.cpp
+++ b/lldb/source/Expression/ClangUserExpression.cpp
@@ -357,7 +357,7 @@ ClangUserExpression::Parse (Stream &error_stream,
if (jit_error.Success())
{
if (process && m_jit_alloc != LLDB_INVALID_ADDRESS)
- m_jit_process_sp = process->GetSP();
+ m_jit_process_sp = process->shared_from_this();
return true;
}
else
diff --git a/lldb/source/Expression/ClangUtilityFunction.cpp b/lldb/source/Expression/ClangUtilityFunction.cpp
index 7220be8ae6b..78c3c16e306 100644
--- a/lldb/source/Expression/ClangUtilityFunction.cpp
+++ b/lldb/source/Expression/ClangUtilityFunction.cpp
@@ -148,7 +148,7 @@ ClangUtilityFunction::Install (Stream &error_stream,
}
if (m_jit_start_addr != LLDB_INVALID_ADDRESS)
- m_jit_process_sp = process->GetSP();
+ m_jit_process_sp = process->shared_from_this();
#if 0
// jingham: look here
diff --git a/lldb/source/Expression/IRInterpreter.cpp b/lldb/source/Expression/IRInterpreter.cpp
index 3cbe9f3bd8f..a7ca4c86581 100644
--- a/lldb/source/Expression/IRInterpreter.cpp
+++ b/lldb/source/Expression/IRInterpreter.cpp
@@ -69,8 +69,8 @@ PrintType(const Type *type, bool truncate = false)
return s;
}
-typedef lldb::SharedPtr <lldb_private::DataEncoder>::Type DataEncoderSP;
-typedef lldb::SharedPtr <lldb_private::DataExtractor>::Type DataExtractorSP;
+typedef SHARED_PTR(lldb_private::DataEncoder) DataEncoderSP;
+typedef SHARED_PTR(lldb_private::DataExtractor) DataExtractorSP;
class Memory
{
@@ -127,7 +127,7 @@ public:
}
};
- typedef lldb::SharedPtr <Allocation>::Type AllocationSP;
+ typedef SHARED_PTR(Allocation) AllocationSP;
struct Region
{
diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp
index 77cab233b7a..9d6ac257ee8 100644
--- a/lldb/source/Interpreter/CommandInterpreter.cpp
+++ b/lldb/source/Interpreter/CommandInterpreter.cpp
@@ -2559,7 +2559,7 @@ CommandInterpreter::UpdateExecutionContext (ExecutionContext *override_context)
m_exe_ctx.SetProcessSP (process_sp);
if (process_sp && process_sp->IsAlive() && !process_sp->IsRunning())
{
- ThreadSP thread_sp (process_sp->GetThreadList().GetSelectedThread().get());
+ ThreadSP thread_sp (process_sp->GetThreadList().GetSelectedThread());
if (thread_sp)
{
m_exe_ctx.SetThreadSP (thread_sp);
diff --git a/lldb/source/Interpreter/ScriptInterpreterPython.cpp b/lldb/source/Interpreter/ScriptInterpreterPython.cpp
index 691e0d5ae31..58cb329a95c 100644
--- a/lldb/source/Interpreter/ScriptInterpreterPython.cpp
+++ b/lldb/source/Interpreter/ScriptInterpreterPython.cpp
@@ -1727,7 +1727,7 @@ ScriptInterpreterPython::LoadScriptingModule (const char* pathname,
return false;
}
- lldb::DebuggerSP debugger_sp = m_interpreter.GetDebugger().GetSP();
+ lldb::DebuggerSP debugger_sp = m_interpreter.GetDebugger().shared_from_this();
{
Locker py_lock(this);
@@ -1837,7 +1837,7 @@ ScriptInterpreterPython::RunScriptBasedCommand(const char* impl_function,
return false;
}
- lldb::DebuggerSP debugger_sp = m_interpreter.GetDebugger().GetSP();
+ lldb::DebuggerSP debugger_sp = m_interpreter.GetDebugger().shared_from_this();
if (!debugger_sp.get())
{
diff --git a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
index e395cccfad8..0d1e74b2513 100644
--- a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
+++ b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
@@ -122,7 +122,7 @@ AddSymbolicInfo (ExecutionContextScope *exe_scope,
}
else
{
- Module *module = inst_addr.GetModule();
+ Module *module = inst_addr.GetModulePtr();
if (module)
{
if (module->ResolveFileAddress(operand_value, so_addr))
diff --git a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
index d74bdf1eafb..4f915a93552 100644
--- a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
+++ b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
@@ -1255,12 +1255,12 @@ DynamicLoaderMacOSXDYLD::AlwaysRelyOnEHUnwindInfo (SymbolContext &sym_ctx)
AddressRange *ar = sym_ctx.symbol->GetAddressRangePtr();
if (ar)
{
- module_sp = ar->GetBaseAddress().GetModule();
+ module_sp = ar->GetBaseAddress().GetModuleSP();
}
}
if (module_sp.get() == NULL && sym_ctx.function)
{
- module_sp = sym_ctx.function->GetAddressRange().GetBaseAddress().GetModule();
+ module_sp = sym_ctx.function->GetAddressRange().GetBaseAddress().GetModuleSP();
}
if (module_sp.get() == NULL)
return false;
@@ -1522,7 +1522,7 @@ DynamicLoaderMacOSXDYLD::GetStepThroughTrampolinePlan (Thread &thread, bool stop
Module* module_to_add = sc.symbol->CalculateSymbolContextModule();
if (module_to_add)
- modules_to_search.AppendIfNeeded(static_cast<ModuleSP>(module_to_add));
+ modules_to_search.AppendIfNeeded(module_to_add->shared_from_this());
}
// If the original stub symbol is a resolver, then we don't want to break on the symbol with the
diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp
index 7df812c84e8..c6e08197044 100644
--- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp
+++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp
@@ -220,7 +220,7 @@ AppleObjCRuntime::ReadObjCLibrary (const ModuleSP &module_sp)
{
// Maybe check here and if we have a handler already, and the UUID of this module is the same as the one in the
// current module, then we don't have to reread it?
- m_objc_trampoline_handler_ap.reset(new AppleObjCTrampolineHandler (m_process->GetSP(), module_sp));
+ m_objc_trampoline_handler_ap.reset(new AppleObjCTrampolineHandler (m_process->shared_from_this(), module_sp));
if (m_objc_trampoline_handler_ap.get() != NULL)
{
m_read_objc_library = true;
diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCSymbolVendor.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCSymbolVendor.cpp
index b7c7a1d1ad0..13dc7d70e8b 100644
--- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCSymbolVendor.cpp
+++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCSymbolVendor.cpp
@@ -19,7 +19,7 @@ using namespace lldb_private;
AppleObjCSymbolVendor::AppleObjCSymbolVendor(Process *process) :
SymbolVendor(NULL),
- m_process(process->GetSP()),
+ m_process(process->shared_from_this()),
m_ast_ctx(process->GetTarget().GetArchitecture().GetTriple().getTriple().c_str())
{
}
diff --git a/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h b/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h
index def3f731fff..6501c5ad976 100644
--- a/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h
+++ b/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h
@@ -118,7 +118,7 @@ protected:
class Archive
{
public:
- typedef lldb::SharedPtr<Archive>::Type shared_ptr;
+ typedef SHARED_PTR(Archive) shared_ptr;
typedef std::multimap<lldb_private::FileSpec, shared_ptr> Map;
static Map &
diff --git a/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDPLog.cpp b/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDPLog.cpp
index 199b55c6a86..6e230fb1917 100644
--- a/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDPLog.cpp
+++ b/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDPLog.cpp
@@ -104,7 +104,7 @@ ProcessKDPLog::EnableLog (StreamSP &log_stream_sp, uint32_t log_options, Args &a
// Now make a new log with this stream if one was provided
if (log_stream_sp)
{
- log = make_shared<Log>(log_stream_sp);
+ log.reset (new Log(log_stream_sp));
GetLog () = log;
}
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
index 3dc21027be8..3ae19f9f511 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
@@ -126,7 +126,7 @@ RegisterContextLLDB::InitializeZerothFrame()
{
m_current_offset = frame_sp->GetFrameCodeAddress().GetOffset() - m_start_pc.GetOffset();
}
- else if (frame_sp->GetFrameCodeAddress().GetModule() == m_start_pc.GetModule())
+ else if (frame_sp->GetFrameCodeAddress().GetModulePtr() == m_start_pc.GetModulePtr())
{
// This means that whatever symbol we kicked up isn't really correct
// as no should cross section boundaries... We really should NULL out
@@ -284,7 +284,7 @@ RegisterContextLLDB::InitializeNonZerothFrame()
// If we don't have a Module for some reason, we're not going to find symbol/function information - just
// stick in some reasonable defaults and hope we can unwind past this frame.
- if (!m_current_pc.IsValid() || m_current_pc.GetModule() == NULL)
+ if (!m_current_pc.IsValid() || m_current_pc.GetModulePtr() == NULL)
{
if (log)
{
@@ -397,7 +397,7 @@ RegisterContextLLDB::InitializeNonZerothFrame()
}
// We require that eSymbolContextSymbol be successfully filled in or this context is of no use to us.
- if ((m_current_pc.GetModule()->ResolveSymbolContextForAddress (m_current_pc, eSymbolContextFunction| eSymbolContextSymbol, m_sym_ctx) & eSymbolContextSymbol) == eSymbolContextSymbol)
+ if ((m_current_pc.GetModulePtr()->ResolveSymbolContextForAddress (m_current_pc, eSymbolContextFunction| eSymbolContextSymbol, m_sym_ctx) & eSymbolContextSymbol) == eSymbolContextSymbol)
{
m_sym_ctx_valid = true;
}
@@ -436,7 +436,7 @@ RegisterContextLLDB::InitializeNonZerothFrame()
temporary_pc.SetOffset(m_current_pc.GetOffset() - 1);
m_sym_ctx.Clear();
m_sym_ctx_valid = false;
- if ((m_current_pc.GetModule()->ResolveSymbolContextForAddress (temporary_pc, eSymbolContextFunction| eSymbolContextSymbol, m_sym_ctx) & eSymbolContextSymbol) == eSymbolContextSymbol)
+ if ((m_current_pc.GetModulePtr()->ResolveSymbolContextForAddress (temporary_pc, eSymbolContextFunction| eSymbolContextSymbol, m_sym_ctx) & eSymbolContextSymbol) == eSymbolContextSymbol)
{
m_sym_ctx_valid = true;
}
@@ -619,13 +619,13 @@ UnwindPlanSP
RegisterContextLLDB::GetFastUnwindPlanForFrame ()
{
UnwindPlanSP unwind_plan_sp;
- if (!m_current_pc.IsValid() || m_current_pc.GetModule() == NULL || m_current_pc.GetModule()->GetObjectFile() == NULL)
+ if (!m_current_pc.IsValid() || m_current_pc.GetModulePtr() == NULL || m_current_pc.GetModulePtr()->GetObjectFile() == NULL)
return unwind_plan_sp;
if (IsFrameZero ())
return unwind_plan_sp;
- FuncUnwindersSP func_unwinders_sp (m_current_pc.GetModule()->GetObjectFile()->GetUnwindTable().GetFuncUnwindersContainingAddress (m_current_pc, m_sym_ctx));
+ FuncUnwindersSP func_unwinders_sp (m_current_pc.GetModulePtr()->GetObjectFile()->GetUnwindTable().GetFuncUnwindersContainingAddress (m_current_pc, m_sym_ctx));
if (!func_unwinders_sp)
return unwind_plan_sp;
@@ -712,7 +712,7 @@ RegisterContextLLDB::GetFullUnwindPlanForFrame ()
}
// No Module for the current pc, try using the architecture default unwind.
- if (!m_current_pc.IsValid() || m_current_pc.GetModule() == NULL || m_current_pc.GetModule()->GetObjectFile() == NULL)
+ if (!m_current_pc.IsValid() || m_current_pc.GetModulePtr() == NULL || m_current_pc.GetModulePtr()->GetObjectFile() == NULL)
{
m_frame_type = eNormalFrame;
return arch_default_unwind_plan_sp;
@@ -721,7 +721,7 @@ RegisterContextLLDB::GetFullUnwindPlanForFrame ()
FuncUnwindersSP func_unwinders_sp;
if (m_sym_ctx_valid)
{
- func_unwinders_sp = m_current_pc.GetModule()->GetObjectFile()->GetUnwindTable().GetFuncUnwindersContainingAddress (m_current_pc, m_sym_ctx);
+ func_unwinders_sp = m_current_pc.GetModulePtr()->GetObjectFile()->GetUnwindTable().GetFuncUnwindersContainingAddress (m_current_pc, m_sym_ctx);
}
// No FuncUnwinders available for this pc, try using architectural default unwind.
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h
index a578fd779fe..cdb0ccbc325 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.h
@@ -25,7 +25,7 @@ class UnwindLLDB;
class RegisterContextLLDB : public lldb_private::RegisterContext
{
public:
- typedef lldb::SharedPtr<RegisterContextLLDB>::Type SharedPtr;
+ typedef SHARED_PTR(RegisterContextLLDB) SharedPtr;
RegisterContextLLDB (lldb_private::Thread &thread,
const SharedPtr& next_frame,
diff --git a/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp b/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp
index 954ad8b3283..bf71b008bd5 100644
--- a/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp
+++ b/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp
@@ -69,10 +69,10 @@ UnwindLLDB::AddFirstFrame ()
{
// First, set up the 0th (initial) frame
CursorSP first_cursor_sp(new Cursor ());
- RegisterContextLLDBSharedPtr reg_ctx_sp (new RegisterContextLLDB (m_thread,
- RegisterContextLLDBSharedPtr(),
- first_cursor_sp->sctx,
- 0, *this));
+ RegisterContextLLDBSP reg_ctx_sp (new RegisterContextLLDB (m_thread,
+ RegisterContextLLDBSP(),
+ first_cursor_sp->sctx,
+ 0, *this));
if (reg_ctx_sp.get() == NULL)
return false;
@@ -87,7 +87,7 @@ UnwindLLDB::AddFirstFrame ()
// Everything checks out, so release the auto pointer value and let the
// cursor own it in its shared pointer
- first_cursor_sp->reg_ctx = reg_ctx_sp;
+ first_cursor_sp->reg_ctx_lldb_sp = reg_ctx_sp;
m_frames.push_back (first_cursor_sp);
return true;
}
@@ -104,10 +104,11 @@ UnwindLLDB::AddOneMoreFrame (ABI *abi)
return false;
uint32_t cur_idx = m_frames.size ();
- RegisterContextLLDBSharedPtr reg_ctx_sp(new RegisterContextLLDB (m_thread,
- m_frames[cur_idx - 1]->reg_ctx,
- cursor_sp->sctx,
- cur_idx, *this));
+ RegisterContextLLDBSP reg_ctx_sp(new RegisterContextLLDB (m_thread,
+ m_frames[cur_idx - 1]->reg_ctx_lldb_sp,
+ cursor_sp->sctx,
+ cur_idx,
+ *this));
if (reg_ctx_sp.get() == NULL)
return false;
@@ -171,7 +172,7 @@ UnwindLLDB::AddOneMoreFrame (ABI *abi)
}
}
}
- cursor_sp->reg_ctx = reg_ctx_sp;
+ cursor_sp->reg_ctx_lldb_sp = reg_ctx_sp;
m_frames.push_back (cursor_sp);
return true;
}
@@ -218,21 +219,27 @@ UnwindLLDB::DoCreateRegisterContextForFrame (StackFrame *frame)
ABI *abi = m_thread.GetProcess().GetABI().get();
- while (idx >= m_frames.size() && AddOneMoreFrame (abi))
- ;
+ while (idx >= m_frames.size())
+ {
+ if (!AddOneMoreFrame (abi))
+ break;
+ }
- if (idx < m_frames.size ())
- reg_ctx_sp = m_frames[idx]->reg_ctx;
+ const uint32_t num_frames = m_frames.size();
+ if (idx < num_frames)
+ {
+ Cursor *frame_cursor = m_frames[idx].get();
+ reg_ctx_sp = frame_cursor->reg_ctx_lldb_sp->shared_from_this();
+ }
return reg_ctx_sp;
}
-UnwindLLDB::RegisterContextLLDBSharedPtr
+UnwindLLDB::RegisterContextLLDBSP
UnwindLLDB::GetRegisterContextForFrameNum (uint32_t frame_num)
{
- RegisterContextLLDBSharedPtr reg_ctx_sp;
- if (frame_num >= m_frames.size())
- return reg_ctx_sp;
- reg_ctx_sp = m_frames[frame_num]->reg_ctx;
+ RegisterContextLLDBSP reg_ctx_sp;
+ if (frame_num < m_frames.size())
+ reg_ctx_sp = m_frames[frame_num]->reg_ctx_lldb_sp;
return reg_ctx_sp;
}
@@ -244,7 +251,7 @@ UnwindLLDB::SearchForSavedLocationForRegister (uint32_t lldb_regnum, lldb_privat
return false;
while (frame_num >= 0)
{
- if (m_frames[frame_num]->reg_ctx->SavedLocationForRegister (lldb_regnum, regloc, false))
+ if (m_frames[frame_num]->reg_ctx_lldb_sp->SavedLocationForRegister (lldb_regnum, regloc, false))
return true;
frame_num--;
}
diff --git a/lldb/source/Plugins/Process/Utility/UnwindLLDB.h b/lldb/source/Plugins/Process/Utility/UnwindLLDB.h
index ec9271ba8da..b9352b61b8b 100644
--- a/lldb/source/Plugins/Process/Utility/UnwindLLDB.h
+++ b/lldb/source/Plugins/Process/Utility/UnwindLLDB.h
@@ -69,11 +69,11 @@ protected:
lldb::RegisterContextSP
DoCreateRegisterContextForFrame (lldb_private::StackFrame *frame);
- typedef lldb::SharedPtr<lldb_private::RegisterContextLLDB>::Type RegisterContextLLDBSharedPtr;
+ typedef SHARED_PTR(RegisterContextLLDB) RegisterContextLLDBSP;
// Needed to retrieve the "next" frame (e.g. frame 2 needs to retrieve frame 1's RegisterContextLLDB)
// The RegisterContext for frame_num must already exist or this returns an empty shared pointer.
- RegisterContextLLDBSharedPtr
+ RegisterContextLLDBSP
GetRegisterContextForFrameNum (uint32_t frame_num);
// Iterate over the RegisterContextLLDB's in our m_frames vector, look for the first one that
@@ -89,14 +89,14 @@ private:
lldb::addr_t start_pc; // The start address of the function/symbol for this frame - current pc if unknown
lldb::addr_t cfa; // The canonical frame address for this stack frame
lldb_private::SymbolContext sctx; // A symbol context we'll contribute to & provide to the StackFrame creation
- RegisterContextLLDBSharedPtr reg_ctx; // These are all RegisterContextLLDB's
+ RegisterContextLLDBSP reg_ctx_lldb_sp; // These are all RegisterContextLLDB's
- Cursor () : start_pc (LLDB_INVALID_ADDRESS), cfa (LLDB_INVALID_ADDRESS), sctx(), reg_ctx() { }
+ Cursor () : start_pc (LLDB_INVALID_ADDRESS), cfa (LLDB_INVALID_ADDRESS), sctx(), reg_ctx_lldb_sp() { }
private:
DISALLOW_COPY_AND_ASSIGN (Cursor);
};
- typedef lldb::SharedPtr<Cursor>::Type CursorSP;
+ typedef SHARED_PTR(Cursor) CursorSP;
std::vector<CursorSP> m_frames;
bool AddOneMoreFrame (ABI *abi);
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp
index a605221d157..7fd58026c28 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp
@@ -104,7 +104,7 @@ ProcessGDBRemoteLog::EnableLog (StreamSP &log_stream_sp, uint32_t log_options, A
// Now make a new log with this stream if one was provided
if (log_stream_sp)
{
- log = make_shared<Log>(log_stream_sp);
+ log.reset (new Log(log_stream_sp));
GetLog () = log;
}
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h
index e71d31963da..f4ee96b7c7d 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h
@@ -21,7 +21,7 @@ typedef std::multimap<const char*, dw_offset_t, CStringCompareFunctionObject> CS
typedef CStringToDIEMap::iterator CStringToDIEMapIter;
typedef CStringToDIEMap::const_iterator CStringToDIEMapConstIter;
-typedef lldb::SharedPtr<DWARFCompileUnit>::Type DWARFCompileUnitSP;
+typedef SHARED_PTR(DWARFCompileUnit) DWARFCompileUnitSP;
class DWARFDebugInfo
{
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.h
index 51e00628848..843d0812bef 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.h
@@ -68,7 +68,7 @@ public:
{
}
- typedef lldb::SharedPtr<Prologue>::Type shared_ptr;
+ typedef SHARED_PTR(Prologue) shared_ptr;
uint32_t total_length; // The size in bytes of the statement information for this compilation unit (not including the total_length field itself).
uint16_t version; // Version identifier for the statement information format.
@@ -135,7 +135,7 @@ public:
//------------------------------------------------------------------
struct LineTable
{
- typedef lldb::SharedPtr<LineTable>::Type shared_ptr;
+ typedef SHARED_PTR(LineTable) shared_ptr;
LineTable() :
prologue(),
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index 816cd647de2..5e963508231 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -2031,7 +2031,7 @@ SymbolFileDWARF::GetFunction (DWARFCompileUnit* curr_cu, const DWARFDebugInfoEnt
if (sc.function)
{
- sc.module_sp = sc.function->CalculateSymbolContextModule();
+ sc.module_sp = sc.function->CalculateSymbolContextModule()->shared_from_this();
return true;
}
@@ -2449,7 +2449,7 @@ SymbolFileDWARF::FindGlobalVariables (const ConstString &name, const lldb_privat
if (num_matches)
{
SymbolContext sc;
- sc.module_sp = m_obj_file->GetModule();
+ sc.module_sp = m_obj_file->GetModule()->shared_from_this();
assert (sc.module_sp);
DWARFDebugInfo* debug_info = DebugInfo();
@@ -2535,7 +2535,7 @@ SymbolFileDWARF::FindGlobalVariables(const RegularExpression& regex, bool append
}
SymbolContext sc;
- sc.module_sp = m_obj_file->GetModule();
+ sc.module_sp = m_obj_file->GetModule()->shared_from_this();
assert (sc.module_sp);
DWARFCompileUnit* dwarf_cu = NULL;
@@ -3149,7 +3149,7 @@ SymbolFileDWARF::FindTypes (const SymbolContext& sc,
if (matching_type)
{
// We found a type pointer, now find the shared pointer form our type list
- types.InsertUnique (TypeSP (matching_type));
+ types.InsertUnique (matching_type->shared_from_this());
if (types.GetSize() >= max_matches)
break;
}
@@ -3267,7 +3267,7 @@ SymbolFileDWARF::FindTypes(std::vector<dw_offset_t> die_offsets, uint32_t max_ma
if (matching_type)
{
// We found a type pointer, now find the shared pointer form our type list
- types.InsertUnique (TypeSP (matching_type));
+ types.InsertUnique (matching_type->shared_from_this());
++num_matches;
if (num_matches >= max_matches)
break;
@@ -3282,7 +3282,6 @@ SymbolFileDWARF::FindTypes(std::vector<dw_offset_t> die_offsets, uint32_t max_ma
size_t
SymbolFileDWARF::ParseChildParameters (const SymbolContext& sc,
clang::DeclContext *containing_decl_ctx,
- TypeSP& type_sp,
DWARFCompileUnit* dwarf_cu,
const DWARFDebugInfoEntry *parent_die,
bool skip_artificial,
@@ -3676,7 +3675,7 @@ SymbolFileDWARF::GetTypeForDIE (DWARFCompileUnit *curr_cu, const DWARFDebugInfoE
else if (type_ptr != DIE_IS_BEING_PARSED)
{
// Grab the existing type from the master types lists
- type_sp = type_ptr;
+ type_sp = type_ptr->shared_from_this();
}
}
@@ -4026,7 +4025,7 @@ SymbolFileDWARF::FindCompleteObjCDefinitionTypeForDIE (const DWARFDebugInfoEntry
if (die)
m_die_to_type[die] = resolved_type;
- type_sp = resolved_type;
+ type_sp = resolved_type->shared_from_this();
break;
}
}
@@ -4148,7 +4147,7 @@ SymbolFileDWARF::FindDefinitionTypeForDIE (DWARFCompileUnit* cu,
MakeUserID(type_cu->GetOffset()));
m_die_to_type[die] = resolved_type;
- type_sp = resolved_type;
+ type_sp = resolved_type->shared_from_this();
break;
}
}
@@ -4934,7 +4933,6 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu,
bool skip_artificial = true;
ParseChildParameters (sc,
containing_decl_ctx,
- type_sp,
dwarf_cu,
die,
skip_artificial,
@@ -5120,7 +5118,7 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu,
type_ptr = m_die_to_type[die];
if (type_ptr)
{
- type_sp = type_ptr;
+ type_sp = type_ptr->shared_from_this();
break;
}
}
@@ -5343,7 +5341,7 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu,
}
else if (type_ptr != DIE_IS_BEING_PARSED)
{
- type_sp = type_ptr;
+ type_sp = type_ptr->shared_from_this();
}
}
return type_sp;
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
index 7f4b16e015a..72ac34656fa 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
@@ -347,7 +347,6 @@ protected:
size_t ParseChildParameters(
const lldb_private::SymbolContext& sc,
clang::DeclContext *containing_decl_ctx,
- lldb::TypeSP& type_sp,
DWARFCompileUnit* dwarf_cu,
const DWARFDebugInfoEntry *parent_die,
bool skip_artificial,
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
index 5c4fba29b49..2fa5a934dd1 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
@@ -172,10 +172,10 @@ SymbolFileDWARFDebugMap::GetModuleByCompUnitInfo (CompileUnitInfo *comp_unit_inf
// use the debug map, to add new sections to each .o file and
// even though a .o file might not have changed, the sections
// that get added to the .o file can change.
- comp_unit_info->oso_module_sp = new Module (oso_file_spec,
- m_obj_file->GetModule()->GetArchitecture(),
- NULL,
- 0);
+ comp_unit_info->oso_module_sp.reset (new Module (oso_file_spec,
+ m_obj_file->GetModule()->GetArchitecture(),
+ NULL,
+ 0));
}
}
return comp_unit_info->oso_module_sp.get();
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
index 6d80d77d044..8dca2c5cd93 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
@@ -141,7 +141,7 @@ protected:
lldb_private::SymbolVendor *oso_symbol_vendor;
std::vector<uint32_t> function_indexes;
std::vector<uint32_t> static_indexes;
- lldb::SharedPtr<lldb_private::SectionList>::Type debug_map_sections_sp;
+ SHARED_PTR(lldb_private::SectionList) debug_map_sections_sp;
CompileUnitInfo() :
so_file (),
diff --git a/lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp b/lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp
index d560bc3a838..6fc5968d9dd 100644
--- a/lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp
+++ b/lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp
@@ -411,7 +411,7 @@ SymbolFileSymtab::FindTypes (const lldb_private::SymbolContext& sc,
Declaration decl;
- lldb::TypeSP type(new Type (iter->second,
+ lldb::TypeSP type(new Type (match->value,
this,
name,
0, // byte_size - don't change this from 0, we currently use that to identify these "synthetic" ObjC class types.
diff --git a/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp b/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
index 12243676aed..fce609b82eb 100644
--- a/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
+++ b/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
@@ -162,7 +162,7 @@ SymbolVendorMacOSX::CreateInstance(Module* module)
// Just create our symbol vendor using the current objfile as this is either
// an executable with no dSYM (that we could locate), an executable with
// a dSYM that has a UUID that doesn't match.
- symbol_vendor->AddSymbolFileRepresentation(obj_file->GetSP());
+ symbol_vendor->AddSymbolFileRepresentation(obj_file->shared_from_this());
}
}
return symbol_vendor;
diff --git a/lldb/source/Symbol/ObjectFile.cpp b/lldb/source/Symbol/ObjectFile.cpp
index 075e48fbc52..02f176ab691 100644
--- a/lldb/source/Symbol/ObjectFile.cpp
+++ b/lldb/source/Symbol/ObjectFile.cpp
@@ -276,14 +276,6 @@ ObjectFile::GetAddressClass (addr_t file_addr)
return eAddressClassUnknown;
}
-ObjectFileSP
-ObjectFile::GetSP ()
-{
- // This object contains an instrusive ref count base class so we can
- // easily make a shared pointer to this object
- return ObjectFileSP (this);
-}
-
size_t
ObjectFile::GetData (off_t offset, size_t length, DataExtractor &data) const
{
diff --git a/lldb/source/Symbol/Symbol.cpp b/lldb/source/Symbol/Symbol.cpp
index 016ac972a24..0f1b7ce2a16 100644
--- a/lldb/source/Symbol/Symbol.cpp
+++ b/lldb/source/Symbol/Symbol.cpp
@@ -267,7 +267,7 @@ Symbol::GetPrologueByteSize ()
if (!m_type_data_resolved)
{
m_type_data_resolved = true;
- Module *module = m_addr_range.GetBaseAddress().GetModule();
+ Module *module = m_addr_range.GetBaseAddress().GetModulePtr();
SymbolContext sc;
if (module && module->ResolveSymbolContextForAddress (m_addr_range.GetBaseAddress(),
eSymbolContextLineEntry,
@@ -350,15 +350,9 @@ Symbol::CalculateSymbolContext (SymbolContext *sc)
sc->symbol = this;
const AddressRange *range = GetAddressRangePtr();
if (range)
- {
- Module *module = range->GetBaseAddress().GetModule ();
- if (module)
- {
- sc->module_sp = module;
- return;
- }
- }
- sc->module_sp.reset();
+ sc->module_sp = range->GetBaseAddress().GetModuleSP ();
+ else
+ sc->module_sp.reset();
}
Module *
@@ -366,7 +360,7 @@ Symbol::CalculateSymbolContextModule ()
{
const AddressRange *range = GetAddressRangePtr();
if (range)
- return range->GetBaseAddress().GetModule ();
+ return range->GetBaseAddress().GetModulePtr ();
return NULL;
}
@@ -384,7 +378,7 @@ Symbol::DumpSymbolContext (Stream *s)
const AddressRange *range = GetAddressRangePtr();
if (range)
{
- Module *module = range->GetBaseAddress().GetModule ();
+ Module *module = range->GetBaseAddress().GetModulePtr ();
if (module)
{
dumped_module = true;
diff --git a/lldb/source/Symbol/SymbolVendor.cpp b/lldb/source/Symbol/SymbolVendor.cpp
index 3a4875641d0..631135d9e67 100644
--- a/lldb/source/Symbol/SymbolVendor.cpp
+++ b/lldb/source/Symbol/SymbolVendor.cpp
@@ -58,7 +58,7 @@ SymbolVendor::FindPlugin (Module* module)
{
ObjectFile *objfile = module->GetObjectFile();
if (objfile)
- instance_ap->AddSymbolFileRepresentation(objfile->GetSP());
+ instance_ap->AddSymbolFileRepresentation(objfile->shared_from_this());
}
return instance_ap.release();
}
diff --git a/lldb/source/Symbol/Type.cpp b/lldb/source/Symbol/Type.cpp
index 985174b770c..66a13e2f38a 100644
--- a/lldb/source/Symbol/Type.cpp
+++ b/lldb/source/Symbol/Type.cpp
@@ -34,7 +34,7 @@ Type *
SymbolFileType::GetType ()
{
if (!m_type_sp)
- m_type_sp = m_symbol_file.ResolveTypeUID (GetID());
+ m_type_sp = m_symbol_file.ResolveTypeUID (GetID())->shared_from_this();
return m_type_sp.get();
}
diff --git a/lldb/source/Symbol/Variable.cpp b/lldb/source/Symbol/Variable.cpp
index cb3f86eb97f..a868e5f5cbb 100644
--- a/lldb/source/Symbol/Variable.cpp
+++ b/lldb/source/Symbol/Variable.cpp
@@ -243,7 +243,7 @@ Variable::LocationIsValidForAddress (const Address &address)
{
SymbolContext sc;
CalculateSymbolContext(&sc);
- if (sc.module_sp.get() == address.GetModule())
+ if (sc.module_sp.get() == address.GetModulePtr())
{
// Is the variable is described by a single location?
if (!m_location.IsLocationList())
@@ -480,7 +480,7 @@ Variable::DumpLocationForAddress (Stream *s, const Address &address)
{
SymbolContext sc;
CalculateSymbolContext(&sc);
- if (sc.module_sp.get() == address.GetModule())
+ if (sc.module_sp.get() == address.GetModulePtr())
{
ABI *abi = NULL;
if (m_owner_scope)
diff --git a/lldb/source/Target/ExecutionContext.cpp b/lldb/source/Target/ExecutionContext.cpp
index 41cf04d0dbe..8360d1addcf 100644
--- a/lldb/source/Target/ExecutionContext.cpp
+++ b/lldb/source/Target/ExecutionContext.cpp
@@ -46,7 +46,7 @@ ExecutionContext::operator =(const ExecutionContext &rhs)
}
ExecutionContext::ExecutionContext (Target* t, bool fill_current_process_thread_frame) :
- m_target_sp (t),
+ m_target_sp (t->shared_from_this()),
m_process_sp (),
m_thread_sp (),
m_frame_sp ()
@@ -58,17 +58,19 @@ ExecutionContext::ExecutionContext (Target* t, bool fill_current_process_thread_
{
m_thread_sp = m_process_sp->GetThreadList().GetSelectedThread();
if (m_thread_sp)
- m_frame_sp = m_thread_sp->GetSelectedFrame().get();
+ m_frame_sp = m_thread_sp->GetSelectedFrame();
}
}
}
ExecutionContext::ExecutionContext(Process* process, Thread *thread, StackFrame *frame) :
- m_target_sp (process ? &process->GetTarget() : NULL),
- m_process_sp (process),
- m_thread_sp (thread),
- m_frame_sp (frame)
+ m_target_sp (),
+ m_process_sp (process->shared_from_this()),
+ m_thread_sp (thread->shared_from_this()),
+ m_frame_sp (frame->shared_from_this())
{
+ if (process)
+ m_target_sp = process->GetTarget().shared_from_this();
}
ExecutionContext::ExecutionContext (ExecutionContextScope *exe_scope_ptr)
@@ -200,24 +202,36 @@ ExecutionContext::SetFrameSP (const lldb::StackFrameSP &frame_sp)
void
ExecutionContext::SetTargetPtr (Target* target)
{
- m_target_sp = target;
+ if (target)
+ m_target_sp = target->shared_from_this();
+ else
+ m_target_sp.reset();
}
void
ExecutionContext::SetProcessPtr (Process *process)
{
- m_process_sp = process;
+ if (process)
+ m_process_sp = process->shared_from_this();
+ else
+ m_process_sp.reset();
}
void
ExecutionContext::SetThreadPtr (Thread *thread)
{
- m_thread_sp = thread;
+ if (thread)
+ m_thread_sp = thread->shared_from_this();
+ else
+ m_thread_sp.reset();
}
void
ExecutionContext::SetFramePtr (StackFrame *frame)
{
- m_frame_sp = frame;
+ if (frame)
+ m_frame_sp = frame->shared_from_this();
+ else
+ m_frame_sp.reset();
}
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 2eb519ff7c9..e991437366e 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -848,7 +848,7 @@ Process::Finalize()
m_abi_sp.reset();
m_os_ap.reset();
m_dyld_ap.reset();
- m_thread_list.Clear();
+ m_thread_list.Destroy();
std::vector<Notifications> empty_notifications;
m_notifications.swap(empty_notifications);
m_image_tokens.clear();
@@ -1543,7 +1543,7 @@ Process::EnableBreakpointSiteByID (lldb::user_id_t break_id)
}
lldb::break_id_t
-Process::CreateBreakpointSite (BreakpointLocationSP &owner, bool use_hardware)
+Process::CreateBreakpointSite (const BreakpointLocationSP &owner, bool use_hardware)
{
const addr_t load_addr = owner->GetAddress().GetOpcodeLoadAddress (&m_target);
if (load_addr != LLDB_INVALID_ADDRESS)
@@ -3410,12 +3410,6 @@ Process::CalculateExecutionContext (ExecutionContext &exe_ctx)
exe_ctx.SetFramePtr (NULL);
}
-lldb::ProcessSP
-Process::GetSP ()
-{
- return GetTarget().GetProcessSP();
-}
-
//uint32_t
//Process::ListProcessesMatchingName (const char *name, StringList &matches, std::vector<lldb::pid_t> &pids)
//{
@@ -3680,13 +3674,10 @@ void
Process::UpdateInstanceName ()
{
Module *module = GetTarget().GetExecutableModulePointer();
- if (module)
+ if (module && module->GetFileSpec().GetFilename())
{
- StreamString sstr;
- sstr.Printf ("%s", module->GetFileSpec().GetFilename().AsCString());
-
GetSettingsController()->RenameInstanceSettings (GetInstanceName().AsCString(),
- sstr.GetData());
+ module->GetFileSpec().GetFilename().AsCString());
}
}
diff --git a/lldb/source/Target/StackFrame.cpp b/lldb/source/Target/StackFrame.cpp
index 666bc1d94c3..2ce69f8c04e 100644
--- a/lldb/source/Target/StackFrame.cpp
+++ b/lldb/source/Target/StackFrame.cpp
@@ -95,7 +95,7 @@ StackFrame::StackFrame (user_id_t frame_idx,
if (reg_context_sp && !m_sc.target_sp)
{
- m_sc.target_sp = reg_context_sp->GetThread().GetProcess().GetTarget().GetSP();
+ m_sc.target_sp = reg_context_sp->GetThread().GetProcess().GetTarget().shared_from_this();
m_flags.Set (eSymbolContextTarget);
}
}
@@ -129,16 +129,16 @@ StackFrame::StackFrame (user_id_t frame_idx,
if (m_sc.target_sp.get() == NULL && reg_context_sp)
{
- m_sc.target_sp = reg_context_sp->GetThread().GetProcess().GetTarget().GetSP();
+ m_sc.target_sp = reg_context_sp->GetThread().GetProcess().GetTarget().shared_from_this();
m_flags.Set (eSymbolContextTarget);
}
- Module *pc_module = pc_addr.GetModule();
+ Module *pc_module = pc_addr.GetModulePtr();
if (m_sc.module_sp.get() == NULL || m_sc.module_sp.get() != pc_module)
{
if (pc_module)
{
- m_sc.module_sp = pc_module;
+ m_sc.module_sp = pc_module->shared_from_this();
m_flags.Set (eSymbolContextModule);
}
else
@@ -218,7 +218,7 @@ StackFrame::GetFrameCodeAddress()
Module *module = section->GetModule();
if (module)
{
- m_sc.module_sp = module;
+ m_sc.module_sp = module->shared_from_this();
if (m_sc.module_sp)
m_flags.Set(eSymbolContextModule);
}
@@ -417,7 +417,7 @@ StackFrame::GetSymbolContext (uint32_t resolve_scope)
// If the target was requested add that:
if (m_sc.target_sp.get() == NULL)
{
- m_sc.target_sp = CalculateProcess()->GetTarget().GetSP();
+ m_sc.target_sp = CalculateProcess()->GetTarget().shared_from_this();
if (m_sc.target_sp)
resolved |= eSymbolContextTarget;
}
@@ -1245,16 +1245,6 @@ StackFrame::HasCachedData () const
return false;
}
-StackFrameSP
-StackFrame::GetSP ()
-{
- // This object contains an instrusive ref count base class so we can
- // easily make a shared pointer to this object
- return StackFrameSP (this);
-}
-
-
-
bool
StackFrame::GetStatus (Stream& strm,
bool show_frame_info,
diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp
index 46ce1d32caf..f4159de5cd9 100644
--- a/lldb/source/Target/Target.cpp
+++ b/lldb/source/Target/Target.cpp
@@ -149,14 +149,6 @@ Target::GetProcessSP () const
return m_process_sp;
}
-lldb::TargetSP
-Target::GetSP()
-{
- // This object contains an instrusive ref count base class so we can
- // easily make a shared pointer to this object
- return TargetSP(this);
-}
-
void
Target::Destroy()
{
@@ -256,8 +248,7 @@ Target::CreateBreakpoint (lldb::addr_t addr, bool internal)
BreakpointSP
Target::CreateBreakpoint (Address &addr, bool internal)
{
- TargetSP target_sp = this->GetSP();
- SearchFilterSP filter_sp(new SearchFilterForNonModuleSpecificSearches (target_sp));
+ SearchFilterSP filter_sp(new SearchFilterForNonModuleSpecificSearches (shared_from_this()));
BreakpointResolverSP resolver_sp (new BreakpointResolverAddress (NULL, addr));
return CreateBreakpoint (filter_sp, resolver_sp, internal);
}
@@ -290,17 +281,16 @@ SearchFilterSP
Target::GetSearchFilterForModule (const FileSpec *containingModule)
{
SearchFilterSP filter_sp;
- lldb::TargetSP target_sp = this->GetSP();
if (containingModule != NULL)
{
// TODO: We should look into sharing module based search filters
// across many breakpoints like we do for the simple target based one
- filter_sp.reset (new SearchFilterByModule (target_sp, *containingModule));
+ filter_sp.reset (new SearchFilterByModule (shared_from_this(), *containingModule));
}
else
{
if (m_search_filter_sp.get() == NULL)
- m_search_filter_sp.reset (new SearchFilterForNonModuleSpecificSearches (target_sp));
+ m_search_filter_sp.reset (new SearchFilterForNonModuleSpecificSearches (shared_from_this()));
filter_sp = m_search_filter_sp;
}
return filter_sp;
@@ -310,17 +300,16 @@ SearchFilterSP
Target::GetSearchFilterForModuleList (const FileSpecList *containingModules)
{
SearchFilterSP filter_sp;
- lldb::TargetSP target_sp = this->GetSP();
if (containingModules && containingModules->GetSize() != 0)
{
// TODO: We should look into sharing module based search filters
// across many breakpoints like we do for the simple target based one
- filter_sp.reset (new SearchFilterByModuleList (target_sp, *containingModules));
+ filter_sp.reset (new SearchFilterByModuleList (shared_from_this(), *containingModules));
}
else
{
if (m_search_filter_sp.get() == NULL)
- m_search_filter_sp.reset (new SearchFilterForNonModuleSpecificSearches (target_sp));
+ m_search_filter_sp.reset (new SearchFilterForNonModuleSpecificSearches (shared_from_this()));
filter_sp = m_search_filter_sp;
}
return filter_sp;
@@ -333,17 +322,16 @@ Target::GetSearchFilterForModuleAndCUList (const FileSpecList *containingModules
return GetSearchFilterForModuleList(containingModules);
SearchFilterSP filter_sp;
- lldb::TargetSP target_sp = this->GetSP();
if (containingModules == NULL)
{
// We could make a special "CU List only SearchFilter". Better yet was if these could be composable,
// but that will take a little reworking.
- filter_sp.reset (new SearchFilterByModuleListAndCU (target_sp, FileSpecList(), *containingSourceFiles));
+ filter_sp.reset (new SearchFilterByModuleListAndCU (shared_from_this(), FileSpecList(), *containingSourceFiles));
}
else
{
- filter_sp.reset (new SearchFilterByModuleListAndCU (target_sp, *containingModules, *containingSourceFiles));
+ filter_sp.reset (new SearchFilterByModuleListAndCU (shared_from_this(), *containingModules, *containingSourceFiles));
}
return filter_sp;
}
@@ -1073,11 +1061,12 @@ Target::ReadMemory (const Address& addr,
if (load_addr == LLDB_INVALID_ADDRESS)
{
- if (resolved_addr.GetModule() && resolved_addr.GetModule()->GetFileSpec())
+ Module *addr_module = resolved_addr.GetModulePtr();
+ if (addr_module && addr_module->GetFileSpec())
error.SetErrorStringWithFormat("%s[0x%llx] can't be resolved, %s in not currently loaded",
- resolved_addr.GetModule()->GetFileSpec().GetFilename().AsCString(),
+ addr_module->GetFileSpec().GetFilename().AsCString(),
resolved_addr.GetFileAddress(),
- resolved_addr.GetModule()->GetFileSpec().GetFilename().AsCString());
+ addr_module->GetFileSpec().GetFilename().AsCString());
else
error.SetErrorStringWithFormat("0x%llx can't be resolved", resolved_addr.GetFileAddress());
}
@@ -1339,7 +1328,7 @@ Target::GetScratchClangASTContext(bool create_on_demand)
if (m_scratch_ast_context_ap.get() == NULL && m_arch.IsValid() && create_on_demand)
{
m_scratch_ast_context_ap.reset (new ClangASTContext(m_arch.GetTriple().str().c_str()));
- m_scratch_ast_source_ap.reset (new ClangASTSource(GetSP()));
+ m_scratch_ast_source_ap.reset (new ClangASTSource(shared_from_this()));
m_scratch_ast_source_ap->InstallASTContext(m_scratch_ast_context_ap->getASTContext());
llvm::OwningPtr<clang::ExternalASTSource> proxy_ast_source(m_scratch_ast_source_ap->CreateProxy());
m_scratch_ast_context_ap->SetExternalSource(proxy_ast_source);
@@ -1678,7 +1667,7 @@ lldb::user_id_t
Target::AddStopHook (Target::StopHookSP &new_hook_sp)
{
lldb::user_id_t new_uid = ++m_stop_hook_next_id;
- new_hook_sp.reset (new StopHook(GetSP(), new_uid));
+ new_hook_sp.reset (new StopHook(shared_from_this(), new_uid));
m_stop_hooks[new_uid] = new_hook_sp;
return new_uid;
}
diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp
index ae083c770e3..5d7c9056263 100644
--- a/lldb/source/Target/Thread.cpp
+++ b/lldb/source/Target/Thread.cpp
@@ -1030,15 +1030,6 @@ Thread::DumpUsingSettingsFormat (Stream &strm, uint32_t frame_idx)
&end);
}
-lldb::ThreadSP
-Thread::GetSP ()
-{
- // This object contains an instrusive ref count base class so we can
- // easily make a shared pointer to this object
- return ThreadSP(this);
-}
-
-
void
Thread::SettingsInitialize ()
{
diff --git a/lldb/source/Target/ThreadList.cpp b/lldb/source/Target/ThreadList.cpp
index f4d75f5502f..62eb1defde3 100644
--- a/lldb/source/Target/ThreadList.cpp
+++ b/lldb/source/Target/ThreadList.cpp
@@ -355,6 +355,17 @@ ThreadList::Clear()
}
void
+ThreadList::Destroy()
+{
+ Mutex::Locker locker(m_threads_mutex);
+ const uint32_t num_threads = m_threads.size();
+ for (uint32_t idx = 0; idx < num_threads; ++idx)
+ {
+ m_threads[idx]->DestroyThread();
+ }
+}
+
+void
ThreadList::RefreshStateAfterStop ()
{
Mutex::Locker locker(m_threads_mutex);
@@ -603,6 +614,32 @@ ThreadList::Update (ThreadList &rhs)
m_stop_id = rhs.m_stop_id;
m_threads.swap(rhs.m_threads);
m_selected_tid = rhs.m_selected_tid;
+
+
+ // Now we look for threads that we are done with and
+ // make sure to clear them up as much as possible so
+ // anyone with a shared pointer will still have a reference,
+ // but the thread won't be of much use. Using std::weak_ptr
+ // for all backward references (such as a thread to a process)
+ // will eventually solve this issue for us, but for now, we
+ // need to work around the issue
+ collection::iterator rhs_pos, rhs_end = rhs.m_threads.end();
+ for (rhs_pos = rhs.m_threads.begin(); rhs_pos != rhs_end; ++rhs_pos)
+ {
+ const lldb::tid_t tid = (*rhs_pos)->GetID();
+ bool thread_is_alive = false;
+ const uint32_t num_threads = m_threads.size();
+ for (uint32_t idx = 0; idx < num_threads; ++idx)
+ {
+ if (m_threads[idx]->GetID() == tid)
+ {
+ thread_is_alive = true;
+ break;
+ }
+ }
+ if (!thread_is_alive)
+ (*rhs_pos)->DestroyThread();
+ }
}
}
diff --git a/lldb/source/Target/ThreadPlanTestCondition.cpp b/lldb/source/Target/ThreadPlanTestCondition.cpp
index 42aa01cf8b7..b9f8a27268c 100644
--- a/lldb/source/Target/ThreadPlanTestCondition.cpp
+++ b/lldb/source/Target/ThreadPlanTestCondition.cpp
@@ -119,7 +119,7 @@ ThreadPlanTestCondition::ShouldStop (Event *event_ptr)
else
{
// Now we have to change the event to a breakpoint event and mark it up appropriately:
- Process::ProcessEventData *new_data = new Process::ProcessEventData (m_thread.GetProcess().GetSP(), eStateStopped);
+ Process::ProcessEventData *new_data = new Process::ProcessEventData (m_thread.GetProcess().shared_from_this(), eStateStopped);
event_ptr->SetData(new_data);
event_ptr->SetType(Process::eBroadcastBitStateChanged);
SetStopInfo(StopInfo::CreateStopReasonWithBreakpointSiteID (m_thread,
diff --git a/lldb/source/lldb-log.cpp b/lldb/source/lldb-log.cpp
index 6dc32f0d378..b02dd25d5f1 100644
--- a/lldb/source/lldb-log.cpp
+++ b/lldb/source/lldb-log.cpp
@@ -169,7 +169,7 @@ lldb_private::EnableLog (StreamSP &log_stream_sp, uint32_t log_options, Args &ar
// Now make a new log with this stream if one was provided
if (log_stream_sp)
{
- log = make_shared<Log>(log_stream_sp);
+ log.reset (new Log(log_stream_sp));
GetLog () = log;
}
OpenPOWER on IntegriCloud