Since we use C++11, we should switch over to using std::unique_ptr when C++11 is being used. To do this, we follow what we have done for shared pointers and we define a STD_UNIQUE_PTR macro that can be used and it will "do the right thing". Due to some API differences in std::unique_ptr and due to the fact that we need to be able to compile without C++11, we can't use move semantics so some code needed to change so that it can compile with either C++.

Anyone wanting to use a unique_ptr or auto_ptr should now use the "STD_UNIQUE_PTR(TYPE)" macro.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179779 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/lldb/API/SBAddress.h b/include/lldb/API/SBAddress.h
index 48626c7..a89ab8d 100644
--- a/include/lldb/API/SBAddress.h
+++ b/include/lldb/API/SBAddress.h
@@ -141,7 +141,7 @@
 
 private:
 
-    std::auto_ptr<lldb_private::Address> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::Address) m_opaque_ap;
 };
 
 
diff --git a/include/lldb/API/SBCommandReturnObject.h b/include/lldb/API/SBCommandReturnObject.h
index 70ff272..9071a44 100644
--- a/include/lldb/API/SBCommandReturnObject.h
+++ b/include/lldb/API/SBCommandReturnObject.h
@@ -118,7 +118,7 @@
     SetLLDBObjectPtr (lldb_private::CommandReturnObject *ptr);
 
  private:
-    std::auto_ptr<lldb_private::CommandReturnObject> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::CommandReturnObject) m_opaque_ap;
 };
 
 } // namespace lldb
diff --git a/include/lldb/API/SBDeclaration.h b/include/lldb/API/SBDeclaration.h
index e00e707..36a1cc0 100644
--- a/include/lldb/API/SBDeclaration.h
+++ b/include/lldb/API/SBDeclaration.h
@@ -80,7 +80,7 @@
         void
         SetDeclaration (const lldb_private::Declaration &lldb_object_ref);
         
-        std::auto_ptr<lldb_private::Declaration> m_opaque_ap;
+        STD_UNIQUE_PTR(lldb_private::Declaration) m_opaque_ap;
     };
     
     
diff --git a/include/lldb/API/SBError.h b/include/lldb/API/SBError.h
index 89617c4..6fd160d 100644
--- a/include/lldb/API/SBError.h
+++ b/include/lldb/API/SBError.h
@@ -93,7 +93,7 @@
     SetError (const lldb_private::Error &lldb_error);
 
 private:
-    std::auto_ptr<lldb_private::Error> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::Error) m_opaque_ap;
 
     void
     CreateIfNeeded ();
diff --git a/include/lldb/API/SBExpressionOptions.h b/include/lldb/API/SBExpressionOptions.h
index c2909e5..b6a90c6 100644
--- a/include/lldb/API/SBExpressionOptions.h
+++ b/include/lldb/API/SBExpressionOptions.h
@@ -12,7 +12,6 @@
 
 #include "lldb/API/SBDefines.h"
 
-#include <memory>
 #include <vector>
 
 namespace lldb {
@@ -82,7 +81,7 @@
 
 private:
     // This auto_pointer is made in the constructor and is always valid.
-    mutable std::auto_ptr<lldb_private::EvaluateExpressionOptions> m_opaque_ap;
+    mutable STD_UNIQUE_PTR(lldb_private::EvaluateExpressionOptions) m_opaque_ap;
 };
 
 } // namespace lldb
diff --git a/include/lldb/API/SBFileSpec.h b/include/lldb/API/SBFileSpec.h
index ead2728..1bcc93c 100644
--- a/include/lldb/API/SBFileSpec.h
+++ b/include/lldb/API/SBFileSpec.h
@@ -84,7 +84,7 @@
     const lldb_private::FileSpec &
     ref() const;
 
-    std::auto_ptr <lldb_private::FileSpec> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::FileSpec) m_opaque_ap;
 };
 
 
diff --git a/include/lldb/API/SBFileSpecList.h b/include/lldb/API/SBFileSpecList.h
index 08635bc..d763073 100644
--- a/include/lldb/API/SBFileSpecList.h
+++ b/include/lldb/API/SBFileSpecList.h
@@ -63,7 +63,7 @@
     const lldb_private::FileSpecList &
     ref() const;
 
-    std::auto_ptr <lldb_private::FileSpecList> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::FileSpecList) m_opaque_ap;
 };
 
 
diff --git a/include/lldb/API/SBLineEntry.h b/include/lldb/API/SBLineEntry.h
index 58dada0..2b6a66b 100644
--- a/include/lldb/API/SBLineEntry.h
+++ b/include/lldb/API/SBLineEntry.h
@@ -90,7 +90,7 @@
     void
     SetLineEntry (const lldb_private::LineEntry &lldb_object_ref);
 
-    std::auto_ptr<lldb_private::LineEntry> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::LineEntry) m_opaque_ap;
 };
 
 
diff --git a/include/lldb/API/SBSourceManager.h b/include/lldb/API/SBSourceManager.h
index b353b71..3221b6a 100644
--- a/include/lldb/API/SBSourceManager.h
+++ b/include/lldb/API/SBSourceManager.h
@@ -45,7 +45,7 @@
 
 private:
 
-    std::auto_ptr<lldb_private::SourceManagerImpl> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::SourceManagerImpl) m_opaque_ap;
 };
 
 } // namespace lldb
diff --git a/include/lldb/API/SBStream.h b/include/lldb/API/SBStream.h
index 23155c5..9c21ade 100644
--- a/include/lldb/API/SBStream.h
+++ b/include/lldb/API/SBStream.h
@@ -100,7 +100,7 @@
 private:
 
     DISALLOW_COPY_AND_ASSIGN (SBStream);
-    std::auto_ptr<lldb_private::Stream> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::Stream) m_opaque_ap;
     bool m_is_file;
 };
 
diff --git a/include/lldb/API/SBStringList.h b/include/lldb/API/SBStringList.h
index a1f0db3..4b8696a 100644
--- a/include/lldb/API/SBStringList.h
+++ b/include/lldb/API/SBStringList.h
@@ -62,7 +62,7 @@
 
 private:
 
-    std::auto_ptr<lldb_private::StringList> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::StringList) m_opaque_ap;
 
 };
 
diff --git a/include/lldb/API/SBSymbolContext.h b/include/lldb/API/SBSymbolContext.h
index 4ffd0ff..640d4ae 100644
--- a/include/lldb/API/SBSymbolContext.h
+++ b/include/lldb/API/SBSymbolContext.h
@@ -85,7 +85,7 @@
     SetSymbolContext (const lldb_private::SymbolContext *sc_ptr);
 
 private:
-    std::auto_ptr<lldb_private::SymbolContext> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::SymbolContext) m_opaque_ap;
 };
 
 
diff --git a/include/lldb/API/SBSymbolContextList.h b/include/lldb/API/SBSymbolContextList.h
index 352522d..f2241e0 100644
--- a/include/lldb/API/SBSymbolContextList.h
+++ b/include/lldb/API/SBSymbolContextList.h
@@ -60,7 +60,7 @@
     operator*() const;
 
 private:
-    std::auto_ptr<lldb_private::SymbolContextList> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::SymbolContextList) m_opaque_ap;
 };
 
 
diff --git a/include/lldb/API/SBType.h b/include/lldb/API/SBType.h
index 9775c9a..a96dec2 100644
--- a/include/lldb/API/SBType.h
+++ b/include/lldb/API/SBType.h
@@ -65,7 +65,7 @@
     const lldb_private::TypeMemberImpl &
     ref () const;
 
-    std::auto_ptr<lldb_private::TypeMemberImpl> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::TypeMemberImpl) m_opaque_ap;
 };
 
 class SBType
@@ -234,7 +234,7 @@
     
     
 private:
-    std::auto_ptr<lldb_private::TypeListImpl> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::TypeListImpl) m_opaque_ap;
 };
     
 
diff --git a/include/lldb/Breakpoint/BreakpointLocation.h b/include/lldb/Breakpoint/BreakpointLocation.h
index e9b912d..7aa5b39 100644
--- a/include/lldb/Breakpoint/BreakpointLocation.h
+++ b/include/lldb/Breakpoint/BreakpointLocation.h
@@ -14,7 +14,6 @@
 
 // C++ Includes
 #include <list>
-#include <memory>
 
 // Other libraries and framework includes
 
@@ -380,7 +379,7 @@
     bool m_being_created;
     Address m_address; ///< The address defining this location.
     Breakpoint &m_owner; ///< The breakpoint that produced this object.
-    std::auto_ptr<BreakpointOptions> m_options_ap; ///< Breakpoint options pointer, NULL if we're using our breakpoint's options.
+    STD_UNIQUE_PTR(BreakpointOptions) m_options_ap; ///< Breakpoint options pointer, NULL if we're using our breakpoint's options.
     lldb::BreakpointSiteSP m_bp_site_sp; ///< Our breakpoint site (it may be shared by more than one location.)
 
     void
diff --git a/include/lldb/Breakpoint/BreakpointOptions.h b/include/lldb/Breakpoint/BreakpointOptions.h
index b4ccfac..ac862e6 100644
--- a/include/lldb/Breakpoint/BreakpointOptions.h
+++ b/include/lldb/Breakpoint/BreakpointOptions.h
@@ -12,7 +12,6 @@
 
 // C Includes
 // C++ Includes
-#include <memory>
 // Other libraries and framework includes
 // Project includes
 #include "lldb/lldb-private.h"
@@ -349,8 +348,8 @@
     bool m_enabled;
     bool m_one_shot;
     uint32_t m_ignore_count; // Number of times to ignore this breakpoint
-    std::auto_ptr<ThreadSpec> m_thread_spec_ap; // Thread for which this breakpoint will take
-    std::auto_ptr<ClangUserExpression> m_condition_ap;  // The condition to test.
+    STD_UNIQUE_PTR(ThreadSpec) m_thread_spec_ap; // Thread for which this breakpoint will take
+    STD_UNIQUE_PTR(ClangUserExpression) m_condition_ap;  // The condition to test.
 
 };
 
diff --git a/include/lldb/Breakpoint/Watchpoint.h b/include/lldb/Breakpoint/Watchpoint.h
index a5dbf05..c9cc5b6 100644
--- a/include/lldb/Breakpoint/Watchpoint.h
+++ b/include/lldb/Breakpoint/Watchpoint.h
@@ -234,7 +234,7 @@
                                        // the callback machinery.
     bool        m_being_created;
 
-    std::auto_ptr<ClangUserExpression> m_condition_ap;  // The condition to test.
+    STD_UNIQUE_PTR(ClangUserExpression) m_condition_ap;  // The condition to test.
 
     void SetID(lldb::watch_id_t id) { m_loc_id = id; }
     
diff --git a/include/lldb/Breakpoint/WatchpointOptions.h b/include/lldb/Breakpoint/WatchpointOptions.h
index c533f61..2e6fcd1 100644
--- a/include/lldb/Breakpoint/WatchpointOptions.h
+++ b/include/lldb/Breakpoint/WatchpointOptions.h
@@ -12,7 +12,6 @@
 
 // C Includes
 // C++ Includes
-#include <memory>
 // Other libraries and framework includes
 // Project includes
 #include "lldb/lldb-private.h"
@@ -248,7 +247,7 @@
     WatchpointHitCallback m_callback; // This is the callback function pointer
     lldb::BatonSP m_callback_baton_sp; // This is the client data for the callback
     bool m_callback_is_synchronous;
-    std::auto_ptr<ThreadSpec> m_thread_spec_ap; // Thread for which this watchpoint will take
+    STD_UNIQUE_PTR(ThreadSpec) m_thread_spec_ap; // Thread for which this watchpoint will take
 };
 
 } // namespace lldb_private
diff --git a/include/lldb/Core/Debugger.h b/include/lldb/Core/Debugger.h
index cd977bc..823474b 100644
--- a/include/lldb/Core/Debugger.h
+++ b/include/lldb/Core/Debugger.h
@@ -359,10 +359,10 @@
     TargetList m_target_list;
     PlatformList m_platform_list;
     Listener m_listener;
-    std::auto_ptr<SourceManager> m_source_manager_ap;    // This is a scratch source manager that we return if we have no targets.
+    STD_UNIQUE_PTR(SourceManager) m_source_manager_ap;    // This is a scratch source manager that we return if we have no targets.
     SourceManager::SourceFileCache m_source_file_cache; // All the source managers for targets created in this debugger used this shared
                                                         // source file cache.
-    std::auto_ptr<CommandInterpreter> m_command_interpreter_ap;
+    STD_UNIQUE_PTR(CommandInterpreter) m_command_interpreter_ap;
 
     InputReaderStack m_input_reader_stack;
     std::string m_input_reader_data;
diff --git a/include/lldb/Core/Event.h b/include/lldb/Core/Event.h
index 0fb6c67..4f945de 100644
--- a/include/lldb/Core/Event.h
+++ b/include/lldb/Core/Event.h
@@ -205,7 +205,7 @@
 
     Broadcaster *   m_broadcaster;  // The broadcaster that sent this event
     uint32_t        m_type;         // The bit describing this event
-    std::auto_ptr<EventData> m_data_ap;         // User specific data for this event
+    STD_UNIQUE_PTR(EventData) m_data_ap;         // User specific data for this event
 
 
     DISALLOW_COPY_AND_ASSIGN (Event);
diff --git a/include/lldb/Core/Module.h b/include/lldb/Core/Module.h
index 3759b28..34b9f6c 100644
--- a/include/lldb/Core/Module.h
+++ b/include/lldb/Core/Module.h
@@ -526,12 +526,7 @@
     }
     
     void
-    SetSymbolFileFileSpec (const FileSpec &file)
-    {
-        m_symfile_spec = file;
-        m_symfile_ap.reset();
-        m_did_load_symbol_vendor = false;
-    }
+    SetSymbolFileFileSpec (const FileSpec &file);
 
     const TimeValue &
     GetModificationTime () const;
@@ -946,7 +941,7 @@
     ConstString                 m_object_name;  ///< The name an object within this module that is selected, or empty of the module is represented by \a m_file.
     uint64_t                    m_object_offset;
     lldb::ObjectFileSP          m_objfile_sp;   ///< A shared pointer to the object file parser for this module as it may or may not be shared with the SymbolFile
-    std::auto_ptr<SymbolVendor> m_symfile_ap;   ///< A pointer to the symbol vendor for this module.
+    STD_UNIQUE_PTR(SymbolVendor) m_symfile_ap;   ///< A pointer to the symbol vendor for this module.
     ClangASTContext             m_ast;          ///< The AST context for this module.
     PathMappingList             m_source_mappings; ///< Module specific source remappings for when you have debug info for a module that doesn't match where the sources currently are
 
diff --git a/include/lldb/Core/Timer.h b/include/lldb/Core/Timer.h
index 8bc68cf..e354d91 100644
--- a/include/lldb/Core/Timer.h
+++ b/include/lldb/Core/Timer.h
@@ -13,7 +13,6 @@
 
 #include <stdarg.h>
 #include <stdio.h>
-#include <memory>
 #include <string>
 #include "lldb/lldb-private.h"
 #include "lldb/Host/TimeValue.h"
diff --git a/include/lldb/Core/ValueObjectSyntheticFilter.h b/include/lldb/Core/ValueObjectSyntheticFilter.h
index 20dde07..67486a2 100644
--- a/include/lldb/Core/ValueObjectSyntheticFilter.h
+++ b/include/lldb/Core/ValueObjectSyntheticFilter.h
@@ -151,7 +151,7 @@
 
     // we need to hold on to the SyntheticChildren because someone might delete the type binding while we are alive
     lldb::SyntheticChildrenSP m_synth_sp;
-    std::auto_ptr<SyntheticChildrenFrontEnd> m_synth_filter_ap;
+    STD_UNIQUE_PTR(SyntheticChildrenFrontEnd) m_synth_filter_ap;
     
     typedef std::map<uint32_t, ValueObject*> ByIndexMap;
     typedef std::map<const char*, uint32_t> NameToIndexMap;
diff --git a/include/lldb/DataFormatters/TypeSynthetic.h b/include/lldb/DataFormatters/TypeSynthetic.h
index 3c6a87b..ede4847 100644
--- a/include/lldb/DataFormatters/TypeSynthetic.h
+++ b/include/lldb/DataFormatters/TypeSynthetic.h
@@ -69,7 +69,7 @@
         MightHaveChildren () = 0;
         
         typedef STD_SHARED_PTR(SyntheticChildrenFrontEnd) SharedPointer;
-        typedef std::auto_ptr<SyntheticChildrenFrontEnd> AutoPointer;
+        typedef STD_UNIQUE_PTR(SyntheticChildrenFrontEnd) AutoPointer;
         
     private:
         DISALLOW_COPY_AND_ASSIGN(SyntheticChildrenFrontEnd);
diff --git a/include/lldb/Expression/ClangExpression.h b/include/lldb/Expression/ClangExpression.h
index bf5ed23..6e831e4 100644
--- a/include/lldb/Expression/ClangExpression.h
+++ b/include/lldb/Expression/ClangExpression.h
@@ -14,7 +14,6 @@
 // C++ Includes
 #include <string>
 #include <map>
-#include <memory>
 #include <vector>
 
 // Other libraries and framework includes
diff --git a/include/lldb/Expression/ClangExpressionDeclMap.h b/include/lldb/Expression/ClangExpressionDeclMap.h
index 023447f..f01f27c 100644
--- a/include/lldb/Expression/ClangExpressionDeclMap.h
+++ b/include/lldb/Expression/ClangExpressionDeclMap.h
@@ -714,7 +714,7 @@
         DISALLOW_COPY_AND_ASSIGN (ParserVars);
     };
     
-    std::auto_ptr<ParserVars> m_parser_vars;
+    STD_UNIQUE_PTR(ParserVars) m_parser_vars;
     
     //----------------------------------------------------------------------
     /// Activate parser-specific variables
@@ -756,7 +756,7 @@
         TypeFromUser                m_object_pointer_type;      ///< The type of the "this" variable, if one exists
     };
     
-    std::auto_ptr<StructVars> m_struct_vars;
+    STD_UNIQUE_PTR(StructVars) m_struct_vars;
     
     //----------------------------------------------------------------------
     /// Activate struct variables
@@ -795,7 +795,7 @@
         lldb::addr_t                m_materialized_location;    ///< The address at which the struct is placed.  Falls inside the allocated area.
     };
     
-    std::auto_ptr<MaterialVars> m_material_vars;
+    STD_UNIQUE_PTR(MaterialVars) m_material_vars;
     
     //----------------------------------------------------------------------
     /// Activate materialization-specific variables
diff --git a/include/lldb/Expression/ClangExpressionParser.h b/include/lldb/Expression/ClangExpressionParser.h
index 57a7205..d462015 100644
--- a/include/lldb/Expression/ClangExpressionParser.h
+++ b/include/lldb/Expression/ClangExpressionParser.h
@@ -86,7 +86,7 @@
     ///
     /// @param[in] execution_unit_ap
     ///     After parsing, ownership of the execution unit for
-    ///     for the expression is handed to this auto_ptr.
+    ///     for the expression is handed to this unique pointer.
     ///
     /// @param[in] exe_ctx
     ///     The execution context to write the function into.
@@ -112,7 +112,7 @@
     Error
     PrepareForExecution (lldb::addr_t &func_addr,
                          lldb::addr_t &func_end,
-                         std::auto_ptr<IRExecutionUnit> &execution_unit_ap,
+                         STD_UNIQUE_PTR(IRExecutionUnit) &execution_unit_ap,
                          ExecutionContext &exe_ctx,
                          bool &evaluated_statically,
                          lldb::ClangExpressionVariableSP &const_result,
@@ -136,16 +136,15 @@
                          ExecutionContext &exe_ctx);
     
 private:
-    ClangExpression                            &m_expr;                 ///< The expression to be parsed
-    
-    std::auto_ptr<llvm::LLVMContext>            m_llvm_context;         ///< The LLVM context to generate IR into
-    std::auto_ptr<clang::FileManager>           m_file_manager;         ///< The Clang file manager object used by the compiler
-    std::auto_ptr<clang::CompilerInstance>      m_compiler;             ///< The Clang compiler used to parse expressions into IR
-    std::auto_ptr<clang::Builtin::Context>      m_builtin_context;      ///< Context for Clang built-ins
-    std::auto_ptr<clang::SelectorTable>         m_selector_table;       ///< Selector table for Objective-C methods
-    std::auto_ptr<clang::ASTContext>            m_ast_context;          ///< The AST context used to hold types and names for the parser
-    std::auto_ptr<clang::CodeGenerator>         m_code_generator;       ///< The Clang object that generates IR
-    std::auto_ptr<IRExecutionUnit>              m_execution_unit;       ///< The container for the finished Module
+    ClangExpression &                       m_expr;                 ///< The expression to be parsed
+    STD_UNIQUE_PTR(llvm::LLVMContext)       m_llvm_context;         ///< The LLVM context to generate IR into
+    STD_UNIQUE_PTR(clang::FileManager)      m_file_manager;         ///< The Clang file manager object used by the compiler
+    STD_UNIQUE_PTR(clang::CompilerInstance) m_compiler;             ///< The Clang compiler used to parse expressions into IR
+    STD_UNIQUE_PTR(clang::Builtin::Context) m_builtin_context;      ///< Context for Clang built-ins
+    STD_UNIQUE_PTR(clang::SelectorTable)    m_selector_table;       ///< Selector table for Objective-C methods
+    STD_UNIQUE_PTR(clang::ASTContext)       m_ast_context;          ///< The AST context used to hold types and names for the parser
+    STD_UNIQUE_PTR(clang::CodeGenerator)    m_code_generator;       ///< The Clang object that generates IR
+    STD_UNIQUE_PTR(IRExecutionUnit)         m_execution_unit;       ///< The container for the finished Module
 };
     
 }
diff --git a/include/lldb/Expression/ClangFunction.h b/include/lldb/Expression/ClangFunction.h
index b8663dd..9404f0d 100644
--- a/include/lldb/Expression/ClangFunction.h
+++ b/include/lldb/Expression/ClangFunction.h
@@ -619,8 +619,8 @@
 	// For ClangFunction only
 	//------------------------------------------------------------------
 
-    std::auto_ptr<ClangExpressionParser>    m_parser;               ///< The parser responsible for compiling the function.
-    std::auto_ptr<IRExecutionUnit>          m_execution_unit_ap;
+    STD_UNIQUE_PTR(ClangExpressionParser) m_parser;                 ///< The parser responsible for compiling the function.
+    STD_UNIQUE_PTR(IRExecutionUnit) m_execution_unit_ap;
     
     Function                       *m_function_ptr;                 ///< The function we're going to call.  May be NULL if we don't have debug info for the function.
     Address                         m_function_addr;                ///< If we don't have the FunctionSP, we at least need the address & return type.
diff --git a/include/lldb/Expression/ClangUserExpression.h b/include/lldb/Expression/ClangUserExpression.h
index 8d87fa8..553722c 100644
--- a/include/lldb/Expression/ClangUserExpression.h
+++ b/include/lldb/Expression/ClangUserExpression.h
@@ -14,7 +14,6 @@
 // C++ Includes
 #include <string>
 #include <map>
-#include <memory>
 #include <vector>
 
 // Other libraries and framework includes
@@ -420,12 +419,10 @@
     std::string                                 m_transformed_text;     ///< The text of the expression, as send to the parser
     ResultType                                  m_desired_type;         ///< The type to coerce the expression's result to.  If eResultTypeAny, inferred from the expression.
     
-    std::auto_ptr<ClangExpressionDeclMap>       m_expr_decl_map;        ///< The map to use when parsing the expression.
-    
-    std::auto_ptr<IRExecutionUnit>              m_execution_unit_ap;    ///< The execution unit the expression is stored in.
-    std::auto_ptr<Materializer>                 m_materializer_ap;      ///< The materializer to use when running the expression.
-    
-    std::auto_ptr<ASTResultSynthesizer>         m_result_synthesizer;   ///< The result synthesizer, if one is needed.
+    STD_UNIQUE_PTR(ClangExpressionDeclMap)      m_expr_decl_map;        ///< The map to use when parsing the expression.
+    STD_UNIQUE_PTR(IRExecutionUnit)             m_execution_unit_ap;    ///< The execution unit the expression is stored in.
+    STD_UNIQUE_PTR(Materializer)                m_materializer_ap;      ///< The materializer to use when running the expression.
+    STD_UNIQUE_PTR(ASTResultSynthesizer)        m_result_synthesizer;   ///< The result synthesizer, if one is needed.
     
     bool                                        m_enforce_valid_object; ///< True if the expression parser should enforce the presence of a valid class pointer in order to generate the expression as a method.
     bool                                        m_cplusplus;            ///< True if the expression is compiled as a C++ member function (true if it was parsed when exe_ctx was in a C++ method).
diff --git a/include/lldb/Expression/ClangUtilityFunction.h b/include/lldb/Expression/ClangUtilityFunction.h
index b89f390..b1ed4b6 100644
--- a/include/lldb/Expression/ClangUtilityFunction.h
+++ b/include/lldb/Expression/ClangUtilityFunction.h
@@ -14,7 +14,6 @@
 // C++ Includes
 #include <string>
 #include <map>
-#include <memory>
 #include <vector>
 
 // Other libraries and framework includes
@@ -168,8 +167,8 @@
     }
     
 private:
-    std::auto_ptr<ClangExpressionDeclMap>   m_expr_decl_map;    ///< The map to use when parsing and materializing the expression.
-    std::auto_ptr<IRExecutionUnit>          m_execution_unit_ap;
+    STD_UNIQUE_PTR(ClangExpressionDeclMap)  m_expr_decl_map;    ///< The map to use when parsing and materializing the expression.
+    STD_UNIQUE_PTR(IRExecutionUnit)         m_execution_unit_ap;
     
     std::string                             m_function_text;    ///< The text of the function.  Must be a well-formed translation unit.
     std::string                             m_function_name;    ///< The name of the function.
diff --git a/include/lldb/Expression/IRDynamicChecks.h b/include/lldb/Expression/IRDynamicChecks.h
index 5a3b05f..761d1c0 100644
--- a/include/lldb/Expression/IRDynamicChecks.h
+++ b/include/lldb/Expression/IRDynamicChecks.h
@@ -77,8 +77,8 @@
     
     bool DoCheckersExplainStop (lldb::addr_t addr, Stream &message);
     
-    std::auto_ptr<ClangUtilityFunction> m_valid_pointer_check;
-    std::auto_ptr<ClangUtilityFunction> m_objc_object_check;
+    STD_UNIQUE_PTR(ClangUtilityFunction) m_valid_pointer_check;
+    STD_UNIQUE_PTR(ClangUtilityFunction) m_objc_object_check;
 };
 
 //----------------------------------------------------------------------
diff --git a/include/lldb/Expression/IRExecutionUnit.h b/include/lldb/Expression/IRExecutionUnit.h
index f9cd4bb..37012e7 100644
--- a/include/lldb/Expression/IRExecutionUnit.h
+++ b/include/lldb/Expression/IRExecutionUnit.h
@@ -66,8 +66,8 @@
     //------------------------------------------------------------------
     /// Constructor
     //------------------------------------------------------------------
-    IRExecutionUnit (std::auto_ptr<llvm::LLVMContext> &context_ap,
-                     std::auto_ptr<llvm::Module> &module_ap,
+    IRExecutionUnit (STD_UNIQUE_PTR(llvm::LLVMContext) &context_ap,
+                     STD_UNIQUE_PTR(llvm::Module) &module_ap,
                      ConstString &name,
                      const lldb::TargetSP &target_sp,
                      std::vector<std::string> &cpu_features);
@@ -422,7 +422,7 @@
             return m_default_mm_ap->getPointerToNamedFunction(Name, AbortOnFailure);
         }
     private:
-        std::auto_ptr<JITMemoryManager>     m_default_mm_ap;    ///< The memory allocator to use in actually creating space.  All calls are passed through to it.
+        STD_UNIQUE_PTR(JITMemoryManager)    m_default_mm_ap;    ///< The memory allocator to use in actually creating space.  All calls are passed through to it.
         IRExecutionUnit                    &m_parent;           ///< The execution unit this is a proxy for.
     };
     
@@ -502,9 +502,9 @@
     typedef std::vector<AllocationRecord>   RecordVector;
     RecordVector                            m_records;
 
-    std::auto_ptr<llvm::LLVMContext>        m_context_ap;
-    std::auto_ptr<llvm::ExecutionEngine>    m_execution_engine_ap;
-    std::auto_ptr<llvm::Module>             m_module_ap;            ///< Holder for the module until it's been handed off
+    STD_UNIQUE_PTR(llvm::LLVMContext)       m_context_ap;
+    STD_UNIQUE_PTR(llvm::ExecutionEngine)   m_execution_engine_ap;
+    STD_UNIQUE_PTR(llvm::Module)            m_module_ap;            ///< Holder for the module until it's been handed off
     llvm::Module                           *m_module;               ///< Owned by the execution engine
     std::vector<std::string>                m_cpu_features;
     llvm::SmallVector<JittedFunction, 1>    m_jitted_functions;     ///< A vector of all functions that have been JITted into machine code
diff --git a/include/lldb/Expression/IRForTarget.h b/include/lldb/Expression/IRForTarget.h
index 2a3fbf6..49a1cb5 100644
--- a/include/lldb/Expression/IRForTarget.h
+++ b/include/lldb/Expression/IRForTarget.h
@@ -670,7 +670,7 @@
     lldb_private::ConstString               m_result_name;              ///< The name of the result variable ($0, $1, ...)
     lldb_private::TypeFromParser            m_result_type;              ///< The type of the result variable.
     llvm::Module                           *m_module;                   ///< The module being processed, or NULL if that has not been determined yet.
-    std::auto_ptr<llvm::DataLayout>         m_target_data;              ///< The target data for the module being processed, or NULL if there is no module.
+    STD_UNIQUE_PTR(llvm::DataLayout)        m_target_data;              ///< The target data for the module being processed, or NULL if there is no module.
     lldb_private::ClangExpressionDeclMap   *m_decl_map;                 ///< The DeclMap containing the Decls 
     StaticDataAllocator                     m_data_allocator;           ///< The allocator to use for constant strings
     lldb_private::IRMemoryMap              &m_memory_map;               ///< The memory map to pass to the IR interpreter
diff --git a/include/lldb/Host/Terminal.h b/include/lldb/Host/Terminal.h
index 201f07a..d0208f5 100644
--- a/include/lldb/Host/Terminal.h
+++ b/include/lldb/Host/Terminal.h
@@ -173,7 +173,7 @@
     //------------------------------------------------------------------
     Terminal        m_tty;          ///< A terminal
     int             m_tflags;       ///< Cached tflags information.
-    std::auto_ptr<struct termios> m_termios_ap; ///< Cached terminal state information.
+    STD_UNIQUE_PTR(struct termios) m_termios_ap; ///< Cached terminal state information.
     lldb::pid_t     m_process_group;///< Cached process group information.
 
 };
diff --git a/include/lldb/Interpreter/CommandInterpreter.h b/include/lldb/Interpreter/CommandInterpreter.h
index 1a95c9f..ebcd60a 100644
--- a/include/lldb/Interpreter/CommandInterpreter.h
+++ b/include/lldb/Interpreter/CommandInterpreter.h
@@ -463,7 +463,7 @@
     OptionArgMap m_alias_options;               // Stores any options (with or without arguments) that go with any alias.
     std::vector<std::string> m_command_history;
     std::string m_repeat_command;               // Stores the command that will be executed for an empty command string.
-    std::auto_ptr<ScriptInterpreter> m_script_interpreter_ap;
+    STD_UNIQUE_PTR(ScriptInterpreter) m_script_interpreter_ap;
     char m_comment_char;
     char m_repeat_char;
     bool m_batch_command_mode;
diff --git a/include/lldb/Interpreter/ScriptInterpreter.h b/include/lldb/Interpreter/ScriptInterpreter.h
index 417c79f..b2e8570 100644
--- a/include/lldb/Interpreter/ScriptInterpreter.h
+++ b/include/lldb/Interpreter/ScriptInterpreter.h
@@ -425,7 +425,7 @@
         return lldb::ScriptInterpreterObjectSP(new ScriptInterpreterObject(object));
     }
     
-    virtual std::auto_ptr<ScriptInterpreterLocker>
+    virtual STD_UNIQUE_PTR(ScriptInterpreterLocker)
     AcquireInterpreterLock ();
     
     const char *
diff --git a/include/lldb/Interpreter/ScriptInterpreterPython.h b/include/lldb/Interpreter/ScriptInterpreterPython.h
index 31e9583..c2073e5 100644
--- a/include/lldb/Interpreter/ScriptInterpreterPython.h
+++ b/include/lldb/Interpreter/ScriptInterpreterPython.h
@@ -181,7 +181,7 @@
     virtual lldb::ScriptInterpreterObjectSP
     MakeScriptObject (void* object);
     
-    virtual std::auto_ptr<ScriptInterpreterLocker>
+    virtual STD_UNIQUE_PTR(ScriptInterpreterLocker)
     AcquireInterpreterLock ();
     
     void
diff --git a/include/lldb/Symbol/ClangASTContext.h b/include/lldb/Symbol/ClangASTContext.h
index 4df93f4..10d45a5 100644
--- a/include/lldb/Symbol/ClangASTContext.h
+++ b/include/lldb/Symbol/ClangASTContext.h
@@ -11,11 +11,11 @@
 #define liblldb_ClangASTContext_h_
 
 // C Includes
+#include <stdint.h>
+
 // C++ Includes
 #include <string>
 #include <vector>
-#include <memory>
-#include <stdint.h>
 
 // Other libraries and framework includes
 #include "llvm/ADT/OwningPtr.h"
@@ -1013,22 +1013,22 @@
     //------------------------------------------------------------------
     // Classes that inherit from ClangASTContext can see and modify these
     //------------------------------------------------------------------
-    std::string                             m_target_triple;
-    std::auto_ptr<clang::ASTContext>        m_ast_ap;
-    std::auto_ptr<clang::LangOptions>       m_language_options_ap;
-    std::auto_ptr<clang::FileManager>       m_file_manager_ap;
-    std::auto_ptr<clang::FileSystemOptions> m_file_system_options_ap;
-    std::auto_ptr<clang::SourceManager>     m_source_manager_ap;
-    std::auto_ptr<clang::DiagnosticsEngine>  m_diagnostics_engine_ap;
-    std::auto_ptr<clang::DiagnosticConsumer> m_diagnostic_consumer_ap;
+    std::string                                     m_target_triple;
+    STD_UNIQUE_PTR(clang::ASTContext)               m_ast_ap;
+    STD_UNIQUE_PTR(clang::LangOptions)              m_language_options_ap;
+    STD_UNIQUE_PTR(clang::FileManager)              m_file_manager_ap;
+    STD_UNIQUE_PTR(clang::FileSystemOptions)        m_file_system_options_ap;
+    STD_UNIQUE_PTR(clang::SourceManager)            m_source_manager_ap;
+    STD_UNIQUE_PTR(clang::DiagnosticsEngine)        m_diagnostics_engine_ap;
+    STD_UNIQUE_PTR(clang::DiagnosticConsumer)       m_diagnostic_consumer_ap;
     llvm::IntrusiveRefCntPtr<clang::TargetOptions>  m_target_options_rp;
-    std::auto_ptr<clang::TargetInfo>        m_target_info_ap;
-    std::auto_ptr<clang::IdentifierTable>   m_identifier_table_ap;
-    std::auto_ptr<clang::SelectorTable>     m_selector_table_ap;
-    std::auto_ptr<clang::Builtin::Context>  m_builtins_ap;
-    CompleteTagDeclCallback                 m_callback_tag_decl;
-    CompleteObjCInterfaceDeclCallback       m_callback_objc_decl;
-    void *                                  m_callback_baton;
+    STD_UNIQUE_PTR(clang::TargetInfo)               m_target_info_ap;
+    STD_UNIQUE_PTR(clang::IdentifierTable)          m_identifier_table_ap;
+    STD_UNIQUE_PTR(clang::SelectorTable)            m_selector_table_ap;
+    STD_UNIQUE_PTR(clang::Builtin::Context)         m_builtins_ap;
+    CompleteTagDeclCallback                         m_callback_tag_decl;
+    CompleteObjCInterfaceDeclCallback               m_callback_objc_decl;
+    void *                                          m_callback_baton;
 private:
     //------------------------------------------------------------------
     // For ClangASTContext only
diff --git a/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h b/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
index 5fc4b0b..0c81211 100644
--- a/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
+++ b/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
@@ -14,7 +14,6 @@
 // C++ Includes
 #include <string>
 #include <vector>
-#include <memory>
 #include <stdint.h>
 
 // Other libraries and framework includes
diff --git a/include/lldb/Symbol/CompileUnit.h b/include/lldb/Symbol/CompileUnit.h
index 2f209dd..8468187 100644
--- a/include/lldb/Symbol/CompileUnit.h
+++ b/include/lldb/Symbol/CompileUnit.h
@@ -401,7 +401,7 @@
     std::vector<lldb::FunctionSP> m_functions; ///< The sparsely populated list of shared pointers to functions
                                          ///< that gets populated as functions get partially parsed.
     FileSpecList m_support_files; ///< Files associated with this compile unit's line table and declarations.
-    std::auto_ptr<LineTable> m_line_table_ap; ///< Line table that will get parsed on demand.
+    STD_UNIQUE_PTR(LineTable) m_line_table_ap; ///< Line table that will get parsed on demand.
     lldb::VariableListSP m_variables; ///< Global and static variable list that will get parsed on demand.
 
 private:
diff --git a/include/lldb/Symbol/FuncUnwinders.h b/include/lldb/Symbol/FuncUnwinders.h
index 6c4acb1..fa48dc2 100644
--- a/include/lldb/Symbol/FuncUnwinders.h
+++ b/include/lldb/Symbol/FuncUnwinders.h
@@ -1,9 +1,6 @@
 #ifndef liblldb_FuncUnwinders_h
 #define liblldb_FuncUnwinders_h
 
-
-#include <memory>
-
 #include "lldb/Core/AddressRange.h"
 #include "lldb/Core/ArchSpec.h"
 #include "lldb/Core/AddressRange.h"
diff --git a/include/lldb/Symbol/ObjectFile.h b/include/lldb/Symbol/ObjectFile.h
index fb6799b..fe8d462 100644
--- a/include/lldb/Symbol/ObjectFile.h
+++ b/include/lldb/Symbol/ObjectFile.h
@@ -621,8 +621,8 @@
     lldb_private::UnwindTable m_unwind_table; /// < Table of FuncUnwinders objects created for this ObjectFile's functions
     lldb::ProcessWP m_process_wp;
     const lldb::addr_t m_memory_addr;
-    std::auto_ptr<lldb_private::SectionList> m_sections_ap;
-    std::auto_ptr<lldb_private::Symtab> m_symtab_ap;
+    STD_UNIQUE_PTR(lldb_private::SectionList) m_sections_ap;
+    STD_UNIQUE_PTR(lldb_private::Symtab) m_symtab_ap;
     
     //------------------------------------------------------------------
     /// Sets the architecture for a module.  At present the architecture
diff --git a/include/lldb/Symbol/SymbolContext.h b/include/lldb/Symbol/SymbolContext.h
index c1086af..e7fe974 100644
--- a/include/lldb/Symbol/SymbolContext.h
+++ b/include/lldb/Symbol/SymbolContext.h
@@ -367,12 +367,12 @@
     lldb::TargetSP                 m_target_sp;
     std::string                    m_module_spec;
     lldb::ModuleSP                 m_module_sp;
-    std::auto_ptr<FileSpec>        m_file_spec_ap;
+    STD_UNIQUE_PTR(FileSpec)       m_file_spec_ap;
     size_t                         m_start_line;
     size_t                         m_end_line;
     std::string                    m_function_spec;
     std::string                    m_class_name;
-    std::auto_ptr<AddressRange>    m_address_range_ap;
+    STD_UNIQUE_PTR(AddressRange)   m_address_range_ap;
     uint32_t                       m_type; // Or'ed bits from SpecificationType
 
 };
diff --git a/include/lldb/Symbol/SymbolVendor.h b/include/lldb/Symbol/SymbolVendor.h
index d466e1d..f08012f 100644
--- a/include/lldb/Symbol/SymbolVendor.h
+++ b/include/lldb/Symbol/SymbolVendor.h
@@ -191,7 +191,7 @@
     TypeList m_type_list; // Uniqued types for all parsers owned by this module
     CompileUnits m_compile_units; // The current compile units
     lldb::ObjectFileSP m_objfile_sp;    // Keep a reference to the object file in case it isn't the same as the module object file (debug symbols in a separate file)
-    std::auto_ptr<SymbolFile> m_sym_file_ap; // A single symbol file. Suclasses can add more of these if needed.
+    STD_UNIQUE_PTR(SymbolFile) m_sym_file_ap; // A single symbol file. Suclasses can add more of these if needed.
 
 private:
     //------------------------------------------------------------------
diff --git a/include/lldb/Target/Process.h b/include/lldb/Target/Process.h
index 1634385..41a03e5 100644
--- a/include/lldb/Target/Process.h
+++ b/include/lldb/Target/Process.h
@@ -3588,9 +3588,9 @@
     std::vector<lldb::addr_t>   m_image_tokens;
     Listener                    &m_listener;
     BreakpointSiteList          m_breakpoint_site_list; ///< This is the list of breakpoint locations we intend to insert in the target.
-    std::auto_ptr<DynamicLoader> m_dyld_ap;
-    std::auto_ptr<DynamicCheckerFunctions> m_dynamic_checkers_ap; ///< The functions used by the expression parser to validate data that expressions use.
-    std::auto_ptr<OperatingSystem> m_os_ap;
+    STD_UNIQUE_PTR(DynamicLoader) m_dyld_ap;
+    STD_UNIQUE_PTR(DynamicCheckerFunctions) m_dynamic_checkers_ap; ///< The functions used by the expression parser to validate data that expressions use.
+    STD_UNIQUE_PTR(OperatingSystem) m_os_ap;
     UnixSignals                 m_unix_signals;         /// This is the current signal set for this process.
     lldb::ABISP                 m_abi_sp;
     lldb::InputReaderSP         m_process_input_reader;
@@ -3604,7 +3604,7 @@
     AllocatedMemoryCache        m_allocated_memory_cache;
     bool                        m_should_detach;   /// Should we detach if the process object goes away with an explicit call to Kill or Detach?
     LanguageRuntimeCollection   m_language_runtimes;
-    std::auto_ptr<NextEventAction> m_next_event_action_ap;
+    STD_UNIQUE_PTR(NextEventAction) m_next_event_action_ap;
     std::vector<PreResumeCallbackAndBaton> m_pre_resume_actions;
     ReadWriteLock               m_public_run_lock;
 #if defined(__APPLE__)
diff --git a/include/lldb/Target/StackFrameList.h b/include/lldb/Target/StackFrameList.h
index 2b2ade9..03c9308 100644
--- a/include/lldb/Target/StackFrameList.h
+++ b/include/lldb/Target/StackFrameList.h
@@ -98,7 +98,7 @@
     SetFrameAtIndex (uint32_t idx, lldb::StackFrameSP &frame_sp);
 
     static void
-    Merge (std::auto_ptr<StackFrameList>& curr_ap, 
+    Merge (STD_UNIQUE_PTR(StackFrameList)& curr_ap,
            lldb::StackFrameListSP& prev_sp);
 
     void
diff --git a/include/lldb/Target/Target.h b/include/lldb/Target/Target.h
index ae782c3..d50d5fa 100644
--- a/include/lldb/Target/Target.h
+++ b/include/lldb/Target/Target.h
@@ -1023,7 +1023,7 @@
         lldb::TargetSP m_target_sp;
         StringList   m_commands;
         lldb::SymbolContextSpecifierSP m_specifier_sp;
-        std::auto_ptr<ThreadSpec> m_thread_spec_ap;
+        STD_UNIQUE_PTR(ThreadSpec) m_thread_spec_ap;
         bool m_active;
         
         // Use AddStopHook to make a new empty stop hook.  The GetCommandPointer and fill it with commands,
@@ -1159,12 +1159,12 @@
     bool m_valid;
     lldb::SearchFilterSP  m_search_filter_sp;
     PathMappingList m_image_search_paths;
-    std::auto_ptr<ClangASTContext> m_scratch_ast_context_ap;
-    std::auto_ptr<ClangASTSource> m_scratch_ast_source_ap;
-    std::auto_ptr<ClangASTImporter> m_ast_importer_ap;
+    STD_UNIQUE_PTR(ClangASTContext) m_scratch_ast_context_ap;
+    STD_UNIQUE_PTR(ClangASTSource) m_scratch_ast_source_ap;
+    STD_UNIQUE_PTR(ClangASTImporter) m_ast_importer_ap;
     ClangPersistentVariables m_persistent_variables;      ///< These are the persistent variables associated with this process for the expression parser.
 
-    std::auto_ptr<SourceManager> m_source_manager_ap;
+    STD_UNIQUE_PTR(SourceManager) m_source_manager_ap;
 
     typedef std::map<lldb::user_id_t, StopHookSP> StopHookCollection;
     StopHookCollection      m_stop_hooks;
diff --git a/include/lldb/Target/Thread.h b/include/lldb/Target/Thread.h
index 631a999..ebd4958 100644
--- a/include/lldb/Target/Thread.h
+++ b/include/lldb/Target/Thread.h
@@ -966,7 +966,7 @@
     lldb::StateType     m_resume_state;         ///< This state is used to force a thread to be suspended from outside the ThreadPlan logic.
     lldb::StateType     m_temporary_resume_state; ///< This state records what the thread was told to do by the thread plan logic for the current resume.
                                                   /// It gets set in Thread::WillResume.
-    std::auto_ptr<lldb_private::Unwind> m_unwinder_ap;
+    STD_UNIQUE_PTR(lldb_private::Unwind) m_unwinder_ap;
     bool                m_destroy_called;       // This is used internally to make sure derived Thread classes call DestroyThread.
     uint32_t m_thread_stop_reason_stop_id;      // This is the stop id for which the StopInfo is valid.  Can use this so you know that
                                                 // the thread's m_actual_stop_info_sp is current and you don't have to fetch it again
diff --git a/include/lldb/Target/ThreadPlanStepInRange.h b/include/lldb/Target/ThreadPlanStepInRange.h
index 1c5574e..97a59bd 100644
--- a/include/lldb/Target/ThreadPlanStepInRange.h
+++ b/include/lldb/Target/ThreadPlanStepInRange.h
@@ -93,7 +93,7 @@
     // from step in.
 
     static uint32_t s_default_flag_values;
-    std::auto_ptr<RegularExpression> m_avoid_regexp_ap;
+    STD_UNIQUE_PTR(RegularExpression) m_avoid_regexp_ap;
     bool m_step_past_prologue;  // FIXME: For now hard-coded to true, we could put a switch in for this if there's
                                 // demand for that.
     bool m_virtual_step;        // true if we've just done a "virtual step", i.e. just moved the inline stack depth.
diff --git a/include/lldb/Utility/PythonPointer.h b/include/lldb/Utility/PythonPointer.h
index 0585211..f782f7f 100644
--- a/include/lldb/Utility/PythonPointer.h
+++ b/include/lldb/Utility/PythonPointer.h
@@ -11,7 +11,6 @@
 #define utility_PythonPointer_h_
 
 #include <algorithm>
-#include <memory>
 
 #if defined (__APPLE__)
 #include <Python/Python.h>
diff --git a/include/lldb/lldb-forward.h b/include/lldb/lldb-forward.h
index 0baf3aa..4701c69 100644
--- a/include/lldb/lldb-forward.h
+++ b/include/lldb/lldb-forward.h
@@ -18,12 +18,14 @@
 #include <memory>
 #define STD_SHARED_PTR(T) std::shared_ptr<T>
 #define STD_WEAK_PTR(T) std::weak_ptr<T>
+#define STD_UNIQUE_PTR(T) std::unique_ptr<T>
 #define STD_ENABLE_SHARED_FROM_THIS(T) std::enable_shared_from_this<T>
 #define STD_STATIC_POINTER_CAST(T,V) std::static_pointer_cast<T>(V)
 #else
 #include <tr1/memory>
 #define STD_SHARED_PTR(T) std::tr1::shared_ptr<T>
 #define STD_WEAK_PTR(T) std::tr1::weak_ptr<T>
+#define STD_UNIQUE_PTR(T) std::auto_ptr<T>
 #define STD_ENABLE_SHARED_FROM_THIS(T) std::tr1::enable_shared_from_this<T>
 #define STD_STATIC_POINTER_CAST(T,V) std::tr1::static_pointer_cast<T>(V)
 #endif
diff --git a/scripts/Python/interface/SBExpressionOptions.i b/scripts/Python/interface/SBExpressionOptions.i
index 1f11862..881903d 100644
--- a/scripts/Python/interface/SBExpressionOptions.i
+++ b/scripts/Python/interface/SBExpressionOptions.i
@@ -83,7 +83,7 @@
 
 private:
     // This auto_pointer is made in the constructor and is always valid.
-    mutable std::auto_ptr<lldb_private::EvaluateExpressionOptions> m_opaque_ap;
+    mutable STD_UNIQUE_PTR(lldb_private::EvaluateExpressionOptions) m_opaque_ap;
 };
 
 } // namespace lldb
diff --git a/scripts/Python/interface/SBSection.i b/scripts/Python/interface/SBSection.i
index 1ea362b..e4966ac 100644
--- a/scripts/Python/interface/SBSection.i
+++ b/scripts/Python/interface/SBSection.i
@@ -122,7 +122,7 @@
 
 private:
 
-    std::auto_ptr<lldb_private::SectionImpl> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::SectionImpl) m_opaque_ap;
 };
 
 } // namespace lldb
diff --git a/scripts/Python/interface/SBType.i b/scripts/Python/interface/SBType.i
index 99a7159..bf1baab 100644
--- a/scripts/Python/interface/SBType.i
+++ b/scripts/Python/interface/SBType.i
@@ -65,7 +65,7 @@
     %}
 
 protected:
-    std::auto_ptr<lldb_private::TypeMemberImpl> m_opaque_ap;
+    STD_UNIQUE_PTR(lldb_private::TypeMemberImpl) m_opaque_ap;
 };
 
 %feature("docstring",
diff --git a/scripts/Python/python-wrapper.swig b/scripts/Python/python-wrapper.swig
index 2189193..9834f0f 100644
--- a/scripts/Python/python-wrapper.swig
+++ b/scripts/Python/python-wrapper.swig
@@ -652,11 +652,11 @@
     return sb_ptr;
 }
 
-// Currently, SBCommandReturnObjectReleaser wraps an std::auto_ptr to an
+// Currently, SBCommandReturnObjectReleaser wraps a unique pointer to an
 // lldb_private::CommandReturnObject. This means that the destructor for the
 // SB object will deallocate its contained CommandReturnObject. Because that
 // object is used as the real return object for Python-based commands, we want
-// it to stay around. Thus, we release the auto_ptr before returning from
+// it to stay around. Thus, we release the unique pointer before returning from
 // LLDBSwigPythonCallCommand, and to guarantee that the release will occur no
 // matter how we exit from the function, we have a releaser object whose
 // destructor does the right thing for us
diff --git a/source/Breakpoint/BreakpointOptions.cpp b/source/Breakpoint/BreakpointOptions.cpp
index 60679c9..11335fb 100644
--- a/source/Breakpoint/BreakpointOptions.cpp
+++ b/source/Breakpoint/BreakpointOptions.cpp
@@ -41,7 +41,7 @@
     m_enabled (true),
     m_one_shot (false),
     m_ignore_count (0),
-    m_thread_spec_ap (NULL),
+    m_thread_spec_ap (),
     m_condition_ap()
 {
 }
@@ -56,8 +56,8 @@
     m_enabled (rhs.m_enabled),
     m_one_shot (rhs.m_one_shot),
     m_ignore_count (rhs.m_ignore_count),
-    m_thread_spec_ap (NULL),
-    m_condition_ap (NULL)
+    m_thread_spec_ap (),
+    m_condition_ap ()
 {
     if (rhs.m_thread_spec_ap.get() != NULL)
         m_thread_spec_ap.reset (new ThreadSpec(*rhs.m_thread_spec_ap.get()));
diff --git a/source/Breakpoint/WatchpointOptions.cpp b/source/Breakpoint/WatchpointOptions.cpp
index 86ea411..c2c9696 100644
--- a/source/Breakpoint/WatchpointOptions.cpp
+++ b/source/Breakpoint/WatchpointOptions.cpp
@@ -38,7 +38,7 @@
     m_callback (WatchpointOptions::NullCallback),
     m_callback_baton_sp (),
     m_callback_is_synchronous (false),
-    m_thread_spec_ap (NULL)
+    m_thread_spec_ap ()
 {
 }
 
@@ -49,7 +49,7 @@
     m_callback (rhs.m_callback),
     m_callback_baton_sp (rhs.m_callback_baton_sp),
     m_callback_is_synchronous (rhs.m_callback_is_synchronous),
-    m_thread_spec_ap (NULL)
+    m_thread_spec_ap ()
 {
     if (rhs.m_thread_spec_ap.get() != NULL)
         m_thread_spec_ap.reset (new ThreadSpec(*rhs.m_thread_spec_ap.get()));
diff --git a/source/Commands/CommandObjectBreakpointCommand.cpp b/source/Commands/CommandObjectBreakpointCommand.cpp
index b1402c8..da73ec6 100644
--- a/source/Commands/CommandObjectBreakpointCommand.cpp
+++ b/source/Commands/CommandObjectBreakpointCommand.cpp
@@ -206,7 +206,7 @@
                                              CommandReturnObject &result)
     {
         InputReaderSP reader_sp (new InputReader(m_interpreter.GetDebugger()));
-        std::auto_ptr<BreakpointOptions::CommandData> data_ap(new BreakpointOptions::CommandData());
+        STD_UNIQUE_PTR(BreakpointOptions::CommandData) data_ap(new BreakpointOptions::CommandData());
         if (reader_sp && data_ap.get())
         {
             BatonSP baton_sp (new BreakpointOptions::CommandBaton (data_ap.release()));
@@ -242,7 +242,7 @@
     SetBreakpointCommandCallback (BreakpointOptions *bp_options,
                                   const char *oneliner)
     {
-        std::auto_ptr<BreakpointOptions::CommandData> data_ap(new BreakpointOptions::CommandData());
+        STD_UNIQUE_PTR(BreakpointOptions::CommandData) data_ap(new BreakpointOptions::CommandData());
 
         // It's necessary to set both user_source and script_source to the oneliner.
         // The former is used to generate callback description (as in breakpoint command list)
diff --git a/source/Commands/CommandObjectCommands.cpp b/source/Commands/CommandObjectCommands.cpp
index 7448a87..d322d8c 100644
--- a/source/Commands/CommandObjectCommands.cpp
+++ b/source/Commands/CommandObjectCommands.cpp
@@ -1066,7 +1066,7 @@
     }
 
 private:
-    std::auto_ptr<CommandObjectRegexCommand> m_regex_cmd_ap;    
+    STD_UNIQUE_PTR(CommandObjectRegexCommand) m_regex_cmd_ap;
 
      class CommandOptions : public Options
      {
diff --git a/source/Commands/CommandObjectTarget.cpp b/source/Commands/CommandObjectTarget.cpp
index 19b7882..ff0b04e 100644
--- a/source/Commands/CommandObjectTarget.cpp
+++ b/source/Commands/CommandObjectTarget.cpp
@@ -4882,7 +4882,7 @@
             target->AddStopHook (new_hook_sp);
 
             //  First step, make the specifier.
-            std::auto_ptr<SymbolContextSpecifier> specifier_ap;
+            STD_UNIQUE_PTR(SymbolContextSpecifier) specifier_ap;
             if (m_options.m_sym_ctx_specified)
             {
                 specifier_ap.reset(new SymbolContextSpecifier(m_interpreter.GetDebugger().GetSelectedTarget()));
diff --git a/source/Commands/CommandObjectWatchpointCommand.cpp b/source/Commands/CommandObjectWatchpointCommand.cpp
index 18c3161..86bab6b 100644
--- a/source/Commands/CommandObjectWatchpointCommand.cpp
+++ b/source/Commands/CommandObjectWatchpointCommand.cpp
@@ -190,7 +190,7 @@
                                              CommandReturnObject &result)
     {
         InputReaderSP reader_sp (new InputReader(m_interpreter.GetDebugger()));
-        std::auto_ptr<WatchpointOptions::CommandData> data_ap(new WatchpointOptions::CommandData());
+        STD_UNIQUE_PTR(WatchpointOptions::CommandData) data_ap(new WatchpointOptions::CommandData());
         if (reader_sp && data_ap.get())
         {
             BatonSP baton_sp (new WatchpointOptions::CommandBaton (data_ap.release()));
@@ -226,7 +226,7 @@
     SetWatchpointCommandCallback (WatchpointOptions *wp_options,
                                   const char *oneliner)
     {
-        std::auto_ptr<WatchpointOptions::CommandData> data_ap(new WatchpointOptions::CommandData());
+        STD_UNIQUE_PTR(WatchpointOptions::CommandData) data_ap(new WatchpointOptions::CommandData());
 
         // It's necessary to set both user_source and script_source to the oneliner.
         // The former is used to generate callback description (as in watchpoint command list)
diff --git a/source/Core/Communication.cpp b/source/Core/Communication.cpp
index 51bf4c3..6e1c545 100644
--- a/source/Core/Communication.cpp
+++ b/source/Core/Communication.cpp
@@ -108,7 +108,7 @@
         // don't want to pay for the overhead it might cause if every time we
         // access the connection we have to take a lock.
         //
-        // This auto_ptr will cleanup after itself when this object goes away,
+        // This unique pointer will cleanup after itself when this object goes away,
         // so there is no need to currently have it destroy itself immediately
         // upon disconnnect.
         //connection_sp.reset();
diff --git a/source/Core/Disassembler.cpp b/source/Core/Disassembler.cpp
index 2a67f1d..f2782bc 100644
--- a/source/Core/Disassembler.cpp
+++ b/source/Core/Disassembler.cpp
@@ -638,7 +638,7 @@
 bool
 Instruction::DumpEmulation (const ArchSpec &arch)
 {
-	std::auto_ptr<EmulateInstruction> insn_emulator_ap (EmulateInstruction::FindPlugin (arch, eInstructionTypeAny, NULL));
+	STD_UNIQUE_PTR(EmulateInstruction) insn_emulator_ap (EmulateInstruction::FindPlugin (arch, eInstructionTypeAny, NULL));
 	if (insn_emulator_ap.get())
 	{
         insn_emulator_ap->SetInstruction (GetOpcode(), GetAddress(), NULL);
@@ -904,7 +904,7 @@
     arch.SetTriple (llvm::Triple (value_sp->GetStringValue()));
 
     bool success = false;
-    std::auto_ptr<EmulateInstruction> insn_emulator_ap (EmulateInstruction::FindPlugin (arch, eInstructionTypeAny, NULL));
+    STD_UNIQUE_PTR(EmulateInstruction) insn_emulator_ap (EmulateInstruction::FindPlugin (arch, eInstructionTypeAny, NULL));
     if (insn_emulator_ap.get())
         success = insn_emulator_ap->TestEmulation (out_stream, arch, data_dictionary);
 
@@ -925,7 +925,7 @@
                       EmulateInstruction::ReadRegisterCallback read_reg_callback,
                       EmulateInstruction::WriteRegisterCallback write_reg_callback)
 {
-	std::auto_ptr<EmulateInstruction> insn_emulator_ap (EmulateInstruction::FindPlugin (arch, eInstructionTypeAny, NULL));
+	STD_UNIQUE_PTR(EmulateInstruction) insn_emulator_ap (EmulateInstruction::FindPlugin (arch, eInstructionTypeAny, NULL));
 	if (insn_emulator_ap.get())
 	{
 		insn_emulator_ap->SetBaton (baton);
diff --git a/source/Core/DynamicLoader.cpp b/source/Core/DynamicLoader.cpp
index 17a796f..1e52acc 100644
--- a/source/Core/DynamicLoader.cpp
+++ b/source/Core/DynamicLoader.cpp
@@ -24,7 +24,7 @@
         create_callback  = PluginManager::GetDynamicLoaderCreateCallbackForPluginName (plugin_name);
         if (create_callback)
         {
-            std::auto_ptr<DynamicLoader> instance_ap(create_callback(process, true));
+            STD_UNIQUE_PTR(DynamicLoader) instance_ap(create_callback(process, true));
             if (instance_ap.get())
                 return instance_ap.release();
         }
@@ -33,7 +33,7 @@
     {
         for (uint32_t idx = 0; (create_callback = PluginManager::GetDynamicLoaderCreateCallbackAtIndex(idx)) != NULL; ++idx)
         {
-            std::auto_ptr<DynamicLoader> instance_ap(create_callback(process, false));
+            STD_UNIQUE_PTR(DynamicLoader) instance_ap(create_callback(process, false));
             if (instance_ap.get())
                 return instance_ap.release();
         }
diff --git a/source/Core/Module.cpp b/source/Core/Module.cpp
index 151e611..3c1dfbf 100644
--- a/source/Core/Module.cpp
+++ b/source/Core/Module.cpp
@@ -254,7 +254,7 @@
         if (process_sp)
         {
             m_did_load_objfile = true;
-            std::auto_ptr<DataBufferHeap> data_ap (new DataBufferHeap (512, 0));
+            STD_UNIQUE_PTR(DataBufferHeap) data_ap (new DataBufferHeap (512, 0));
             Error readmem_error;
             const size_t bytes_read = process_sp->ReadMemory (header_addr, 
                                                               data_ap->GetBytes(), 
@@ -1185,6 +1185,15 @@
     return m_mod_time;
 }
 
+void
+Module::SetSymbolFileFileSpec (const FileSpec &file)
+{
+    m_symfile_spec = file;
+    m_symfile_ap.reset();
+    m_did_load_symbol_vendor = false;
+}
+
+
 bool
 Module::IsExecutable ()
 {
diff --git a/source/Core/StreamAsynchronousIO.cpp b/source/Core/StreamAsynchronousIO.cpp
index d6ab0d8..5e14d13 100644
--- a/source/Core/StreamAsynchronousIO.cpp
+++ b/source/Core/StreamAsynchronousIO.cpp
@@ -35,7 +35,7 @@
 {
     if (m_accumulated_data.GetSize() > 0)
     {
-        std::auto_ptr<EventDataBytes> data_bytes_ap (new EventDataBytes);
+        STD_UNIQUE_PTR(EventDataBytes) data_bytes_ap (new EventDataBytes);
         // Let's swap the bytes to avoid LARGE string copies.
         data_bytes_ap->SwapBytes (m_accumulated_data.GetString());
         EventSP new_event_sp (new Event (m_broadcast_event_type, data_bytes_ap.release()));
diff --git a/source/Expression/ClangExpressionDeclMap.cpp b/source/Expression/ClangExpressionDeclMap.cpp
index f72feb4..ec2dbf6 100644
--- a/source/Expression/ClangExpressionDeclMap.cpp
+++ b/source/Expression/ClangExpressionDeclMap.cpp
@@ -1117,7 +1117,7 @@
 
         if (parser_vars->m_lldb_var)
         {
-            std::auto_ptr<Value> value(GetVariableValue(parser_vars->m_lldb_var, NULL));
+            STD_UNIQUE_PTR(Value) value(GetVariableValue(parser_vars->m_lldb_var, NULL));
             
             if (is_reference && value.get() && value->GetValueType() == Value::eValueTypeLoadAddress)
             {
@@ -1252,7 +1252,7 @@
         !var->LocationIsValidForFrame (frame))
         return Value();
     
-    std::auto_ptr<Value> value(GetVariableValue(var, NULL));
+    STD_UNIQUE_PTR(Value) value(GetVariableValue(var, NULL));
     
     if (value.get() && value->GetValueType() == Value::eValueTypeLoadAddress)
     {
@@ -1347,7 +1347,7 @@
         return false;
     }
     
-    std::auto_ptr<lldb_private::Value> location_value(GetVariableValue(object_ptr_var,
+    STD_UNIQUE_PTR(lldb_private::Value) location_value(GetVariableValue(object_ptr_var,
                                                                        NULL));
     
     if (!location_value.get())
@@ -2534,7 +2534,7 @@
     
     DWARFExpression &var_location_expr = var->LocationExpression();
     
-    std::auto_ptr<Value> var_location(new Value);
+    STD_UNIQUE_PTR(Value) var_location(new Value);
     
     lldb::addr_t loclist_base_load_addr = LLDB_INVALID_ADDRESS;
     
@@ -2756,7 +2756,7 @@
                                                                       m_parser_vars->m_target_info.address_byte_size));
     assert (entity.get());
     
-    std::auto_ptr<Value> symbol_location(new Value);
+    STD_UNIQUE_PTR(Value) symbol_location(new Value);
     
     const Address &symbol_address = symbol.GetAddress();
     lldb::addr_t symbol_load_addr = symbol_address.GetLoadAddress(target);
@@ -2900,7 +2900,7 @@
     Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
     
     NamedDecl *fun_decl = NULL;
-    std::auto_ptr<Value> fun_location(new Value);
+    STD_UNIQUE_PTR(Value) fun_location(new Value);
     const Address *fun_address = NULL;
     
     // only valid for Functions, not for Symbols
diff --git a/source/Expression/ClangExpressionParser.cpp b/source/Expression/ClangExpressionParser.cpp
index 59b00bf..2922898 100644
--- a/source/Expression/ClangExpressionParser.cpp
+++ b/source/Expression/ClangExpressionParser.cpp
@@ -188,7 +188,7 @@
                                               ClangExpression &expr) :
     m_expr (expr),
     m_compiler (),
-    m_code_generator (NULL)
+    m_code_generator ()
 {
     // Initialize targets first, so that --version shows registered targets.
     static struct InitializeLLVM {
@@ -351,13 +351,13 @@
     m_selector_table.reset(new SelectorTable());
     m_builtin_context.reset(new Builtin::Context());
     
-    std::auto_ptr<clang::ASTContext> ast_context(new ASTContext(m_compiler->getLangOpts(),
-                                                                m_compiler->getSourceManager(),
-                                                                &m_compiler->getTarget(),
-                                                                m_compiler->getPreprocessor().getIdentifierTable(),
-                                                                *m_selector_table.get(),
-                                                                *m_builtin_context.get(),
-                                                                0));
+    STD_UNIQUE_PTR(clang::ASTContext) ast_context(new ASTContext(m_compiler->getLangOpts(),
+                                                                 m_compiler->getSourceManager(),
+                                                                 &m_compiler->getTarget(),
+                                                                 m_compiler->getPreprocessor().getIdentifierTable(),
+                                                                 *m_selector_table.get(),
+                                                                 *m_builtin_context.get(),
+                                                                 0));
     
     ClangExpressionDeclMap *decl_map = m_expr.DeclMap();
     
@@ -462,7 +462,7 @@
 Error
 ClangExpressionParser::PrepareForExecution (lldb::addr_t &func_addr, 
                                             lldb::addr_t &func_end,
-                                            std::auto_ptr<IRExecutionUnit> &execution_unit_ap,
+                                            STD_UNIQUE_PTR(IRExecutionUnit) &execution_unit_ap,
                                             ExecutionContext &exe_ctx,
                                             bool &evaluated_statically,
                                             lldb::ClangExpressionVariableSP &const_result,
@@ -472,11 +472,11 @@
 	func_end = LLDB_INVALID_ADDRESS;
     Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
 
-    std::auto_ptr<llvm::ExecutionEngine> execution_engine_ap;
+    STD_UNIQUE_PTR(llvm::ExecutionEngine) execution_engine_ap;
     
     Error err;
     
-    std::auto_ptr<llvm::Module> module_ap (m_code_generator->ReleaseModule());
+    STD_UNIQUE_PTR(llvm::Module) module_ap (m_code_generator->ReleaseModule());
 
     if (!module_ap.get())
     {
@@ -596,7 +596,7 @@
     
     m_execution_unit->GetRunnableInfo(err, func_addr, func_end);
     
-    execution_unit_ap = m_execution_unit;
+    execution_unit_ap.reset (m_execution_unit.release());
         
     return err;
 }
diff --git a/source/Expression/ClangFunction.cpp b/source/Expression/ClangFunction.cpp
index 74fb0c0..c0131b0 100644
--- a/source/Expression/ClangFunction.cpp
+++ b/source/Expression/ClangFunction.cpp
@@ -25,6 +25,7 @@
 #include "lldb/Expression/ASTStructExtractor.h"
 #include "lldb/Expression/ClangExpressionParser.h"
 #include "lldb/Expression/ClangFunction.h"
+#include "lldb/Expression/IRExecutionUnit.h"
 #include "lldb/Symbol/Type.h"
 #include "lldb/Core/DataExtractor.h"
 #include "lldb/Core/State.h"
diff --git a/source/Expression/ClangUserExpression.cpp b/source/Expression/ClangUserExpression.cpp
index 1a11b97..6f65b11 100644
--- a/source/Expression/ClangUserExpression.cpp
+++ b/source/Expression/ClangUserExpression.cpp
@@ -396,7 +396,7 @@
     ApplyObjcCastHack(m_expr_text);
     //ApplyUnicharHack(m_expr_text);
 
-    std::auto_ptr <ExpressionSourceCode> source_code (ExpressionSourceCode::CreateWrapped(m_expr_prefix.c_str(), m_expr_text.c_str()));
+    STD_UNIQUE_PTR(ExpressionSourceCode) source_code (ExpressionSourceCode::CreateWrapped(m_expr_prefix.c_str(), m_expr_text.c_str()));
     
     lldb::LanguageType lang_type;
     
diff --git a/source/Expression/ClangUtilityFunction.cpp b/source/Expression/ClangUtilityFunction.cpp
index 3fcc249..aed0e24 100644
--- a/source/Expression/ClangUtilityFunction.cpp
+++ b/source/Expression/ClangUtilityFunction.cpp
@@ -23,6 +23,7 @@
 #include "lldb/Expression/ClangExpressionParser.h"
 #include "lldb/Expression/ClangUtilityFunction.h"
 #include "lldb/Expression/ExpressionSourceCode.h"
+#include "lldb/Expression/IRExecutionUnit.h"
 #include "lldb/Host/Host.h"
 #include "lldb/Target/ExecutionContext.h"
 #include "lldb/Target/Target.h"
diff --git a/source/Expression/DWARFExpression.cpp b/source/Expression/DWARFExpression.cpp
index c9e0351..c3451a4 100644
--- a/source/Expression/DWARFExpression.cpp
+++ b/source/Expression/DWARFExpression.cpp
@@ -1062,8 +1062,8 @@
             // we then replace the data for this expression
             
             // So first we copy the data into a heap buffer
-            std::auto_ptr<DataBufferHeap> head_data_ap (new DataBufferHeap (m_data.GetDataStart(), 
-                                                                            m_data.GetByteSize()));
+            STD_UNIQUE_PTR(DataBufferHeap) head_data_ap (new DataBufferHeap (m_data.GetDataStart(),
+                                                                             m_data.GetByteSize()));
             
             // Make en encoder so we can write the address into the buffer using
             // the correct byte order (endianness)
diff --git a/source/Expression/IRExecutionUnit.cpp b/source/Expression/IRExecutionUnit.cpp
index 206a6a3..d6dfe94 100644
--- a/source/Expression/IRExecutionUnit.cpp
+++ b/source/Expression/IRExecutionUnit.cpp
@@ -25,14 +25,14 @@
 
 using namespace lldb_private;
 
-IRExecutionUnit::IRExecutionUnit (std::auto_ptr<llvm::LLVMContext> &context_ap,
-                                  std::auto_ptr<llvm::Module> &module_ap,
+IRExecutionUnit::IRExecutionUnit (STD_UNIQUE_PTR(llvm::LLVMContext) &context_ap,
+                                  STD_UNIQUE_PTR(llvm::Module) &module_ap,
                                   ConstString &name,
                                   const lldb::TargetSP &target_sp,
                                   std::vector<std::string> &cpu_features) :
     IRMemoryMap(target_sp),
-    m_context_ap(context_ap),
-    m_module_ap(module_ap),
+    m_context_ap(context_ap.release()),
+    m_module_ap(module_ap.release()),
     m_module(m_module_ap.get()),
     m_cpu_features(cpu_features),
     m_name(name),
diff --git a/source/Expression/IRInterpreter.cpp b/source/Expression/IRInterpreter.cpp
index 419165c..6221563 100644
--- a/source/Expression/IRInterpreter.cpp
+++ b/source/Expression/IRInterpreter.cpp
@@ -817,7 +817,7 @@
 }
 
 static const char *unsupported_opcode_error         = "Interpreter doesn't handle one of the expression's opcodes";
-static const char *interpreter_initialization_error = "Interpreter couldn't be initialized";
+//static const char *interpreter_initialization_error = "Interpreter couldn't be initialized";
 static const char *interpreter_internal_error       = "Interpreter encountered an internal error";
 static const char *bad_value_error                  = "Interpreter couldn't resolve a value during execution";
 static const char *memory_allocation_error          = "Interpreter couldn't allocate memory";
diff --git a/source/Host/common/File.cpp b/source/Host/common/File.cpp
index ae0bf88..f818123 100644
--- a/source/Host/common/File.cpp
+++ b/source/Host/common/File.cpp
@@ -556,7 +556,7 @@
                     if (num_bytes > bytes_left)
                         num_bytes = bytes_left;
                         
-                    std::auto_ptr<DataBufferHeap> data_heap_ap;
+                    STD_UNIQUE_PTR(DataBufferHeap) data_heap_ap;
                     data_heap_ap.reset(new DataBufferHeap(num_bytes + (null_terminate ? 1 : 0), '\0'));
                         
                     if (data_heap_ap.get())
diff --git a/source/Host/common/FileSpec.cpp b/source/Host/common/FileSpec.cpp
index c8cb96c..fab7ea1 100644
--- a/source/Host/common/FileSpec.cpp
+++ b/source/Host/common/FileSpec.cpp
@@ -35,7 +35,6 @@
 
 using namespace lldb;
 using namespace lldb_private;
-using namespace std;
 
 static bool
 GetFileStats (const FileSpec *file_spec, struct stat *stats_ptr)
@@ -745,7 +744,7 @@
 FileSpec::MemoryMapFileContents(off_t file_offset, size_t file_size) const
 {
     DataBufferSP data_sp;
-    auto_ptr<DataBufferMemoryMap> mmap_data(new DataBufferMemoryMap());
+    STD_UNIQUE_PTR(DataBufferMemoryMap) mmap_data(new DataBufferMemoryMap());
     if (mmap_data.get())
     {
         if (mmap_data->MemoryMapFromFileSpec (this, file_offset, file_size) >= file_size)
@@ -863,7 +862,7 @@
     char path[PATH_MAX];
     if (GetPath(path, sizeof(path)))
     {
-        ifstream file_stream (path);
+        std::ifstream file_stream (path);
 
         if (file_stream)
         {
diff --git a/source/Host/common/Host.cpp b/source/Host/common/Host.cpp
index 61386b5..90de94c 100644
--- a/source/Host/common/Host.cpp
+++ b/source/Host/common/Host.cpp
@@ -1313,7 +1313,7 @@
     }
     
     // The process monitor callback will delete the 'shell_info_ptr' below...
-    std::auto_ptr<ShellInfo> shell_info_ap (new ShellInfo());
+    STD_UNIQUE_PTR(ShellInfo) shell_info_ap (new ShellInfo());
     
     const bool monitor_signals = false;
     launch_info.SetMonitorProcessCallback(MonitorShellCommand, shell_info_ap.get(), monitor_signals);
@@ -1324,7 +1324,7 @@
     {
         // The process successfully launched, so we can defer ownership of
         // "shell_info" to the MonitorShellCommand callback function that will
-        // get called when the process dies. We release the std::auto_ptr as it
+        // get called when the process dies. We release the unique pointer as it
         // doesn't need to delete the ShellInfo anymore.
         ShellInfo *shell_info = shell_info_ap.release();
         TimeValue timeout_time(TimeValue::Now());
diff --git a/source/Host/freebsd/Host.cpp b/source/Host/freebsd/Host.cpp
index 3e787cf..453bcf5 100644
--- a/source/Host/freebsd/Host.cpp
+++ b/source/Host/freebsd/Host.cpp
@@ -294,7 +294,7 @@
    struct ps_strings ps_strings;
    struct ptrace_io_desc pid;
    DataBufferSP buf_sp;
-   std::auto_ptr<DataBufferHeap> buf_ap(new DataBufferHeap(1024, 0));
+   STD_UNIQUE_PTR(DataBufferHeap) buf_ap(new DataBufferHeap(1024, 0));
 
    if (::sysctl(mib, 2, &ps_strings_addr, &ps_strings_size, NULL, 0) == 0) {
            pid.piod_op = PIOD_READ_D;
diff --git a/source/Host/linux/Host.cpp b/source/Host/linux/Host.cpp
index a418f38..f90345e 100644
--- a/source/Host/linux/Host.cpp
+++ b/source/Host/linux/Host.cpp
@@ -72,7 +72,7 @@
         return buf_sp;
 
     size_t bytes_read = 0;
-    std::auto_ptr<DataBufferHeap> buf_ap(new DataBufferHeap(1024, 0));
+    STD_UNIQUE_PTR(DataBufferHeap) buf_ap(new DataBufferHeap(1024, 0));
     for (;;) 
     {
         size_t avail = buf_ap->GetByteSize() - bytes_read;
diff --git a/source/Interpreter/CommandInterpreter.cpp b/source/Interpreter/CommandInterpreter.cpp
index 72a9df9..661512c 100644
--- a/source/Interpreter/CommandInterpreter.cpp
+++ b/source/Interpreter/CommandInterpreter.cpp
@@ -391,7 +391,7 @@
     
     size_t num_regexes = sizeof break_regexes/sizeof(char *[2]);
         
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     break_regex_cmd_ap(new CommandObjectRegexCommand (*this,
                                                       "_regexp-break",
                                                       "Set a breakpoint using a regular expression to specify the location, where <linenum> is in decimal and <address> is in hex.",
@@ -418,7 +418,7 @@
         }
     }
 
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     tbreak_regex_cmd_ap(new CommandObjectRegexCommand (*this,
                                                       "_regexp-tbreak",
                                                       "Set a one shot breakpoint using a regular expression to specify the location, where <linenum> is in decimal and <address> is in hex.",
@@ -449,7 +449,7 @@
         }
     }
 
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     attach_regex_cmd_ap(new CommandObjectRegexCommand (*this,
                                                        "_regexp-attach",
                                                        "Attach to a process id if in decimal, otherwise treat the argument as a process name to attach to.",
@@ -467,7 +467,7 @@
         }
     }
     
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     down_regex_cmd_ap(new CommandObjectRegexCommand (*this,
                                                      "_regexp-down",
                                                      "Go down \"n\" frames in the stack (1 frame by default).",
@@ -482,7 +482,7 @@
         }
     }
     
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     up_regex_cmd_ap(new CommandObjectRegexCommand (*this,
                                                    "_regexp-up",
                                                    "Go up \"n\" frames in the stack (1 frame by default).",
@@ -497,7 +497,7 @@
         }
     }
 
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     display_regex_cmd_ap(new CommandObjectRegexCommand (*this,
                                                         "_regexp-display",
                                                         "Add an expression evaluation stop-hook.",
@@ -511,7 +511,7 @@
         }
     }
 
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     undisplay_regex_cmd_ap(new CommandObjectRegexCommand (*this,
                                                           "_regexp-undisplay",
                                                           "Remove an expression evaluation stop-hook.",
@@ -525,7 +525,7 @@
         }
     }
 
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     connect_gdb_remote_cmd_ap(new CommandObjectRegexCommand (*this,
                                                              "gdb-remote",
                                                              "Connect to a remote GDB server.  If no hostname is provided, localhost is assumed.",
@@ -540,7 +540,7 @@
         }
     }
 
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     connect_kdp_remote_cmd_ap(new CommandObjectRegexCommand (*this,
                                                              "kdp-remote",
                                                              "Connect to a remote KDP server.  udp port 41139 is the default port number.",
@@ -555,7 +555,7 @@
         }
     }
 
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     bt_regex_cmd_ap(new CommandObjectRegexCommand (*this,
                                                      "_regexp-bt",
                                                      "Show a backtrace.  An optional argument is accepted; if that argument is a number, it specifies the number of frames to display.  If that argument is 'all', full backtraces of all threads are displayed.",
@@ -575,7 +575,7 @@
         }
     }
 
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     list_regex_cmd_ap(new CommandObjectRegexCommand (*this,
                                                      "_regexp-list",
                                                      "Implements the GDB 'list' command in all of its forms except FILE:FUNCTION and maps them to the appropriate 'source list' commands.",
@@ -597,7 +597,7 @@
         }
     }
 
-    std::auto_ptr<CommandObjectRegexCommand>
+    STD_UNIQUE_PTR(CommandObjectRegexCommand)
     env_regex_cmd_ap(new CommandObjectRegexCommand (*this,
                                                     "_regexp-env",
                                                     "Implements a shortcut to viewing and setting environment variables.",
diff --git a/source/Interpreter/Options.cpp b/source/Interpreter/Options.cpp
index 6b509d4..9b4211b 100644
--- a/source/Interpreter/Options.cpp
+++ b/source/Interpreter/Options.cpp
@@ -901,7 +901,7 @@
 )
 {
     const OptionDefinition *opt_defs = GetDefinitions();
-    std::auto_ptr<SearchFilter> filter_ap;
+    STD_UNIQUE_PTR(SearchFilter) filter_ap;
 
     int opt_arg_pos = opt_element_vector[opt_element_index].opt_arg_pos;
     int opt_defs_index = opt_element_vector[opt_element_index].opt_defs_index;
diff --git a/source/Interpreter/ScriptInterpreter.cpp b/source/Interpreter/ScriptInterpreter.cpp
index 0e85902..0609cf9 100644
--- a/source/Interpreter/ScriptInterpreter.cpp
+++ b/source/Interpreter/ScriptInterpreter.cpp
@@ -81,10 +81,10 @@
     return return_value;
 }
 
-std::auto_ptr<ScriptInterpreterLocker>
+STD_UNIQUE_PTR(ScriptInterpreterLocker)
 ScriptInterpreter::AcquireInterpreterLock ()
 {
-    return std::auto_ptr<ScriptInterpreterLocker>(new ScriptInterpreterLocker());
+    return STD_UNIQUE_PTR(ScriptInterpreterLocker)(new ScriptInterpreterLocker());
 }
 
 void
diff --git a/source/Interpreter/ScriptInterpreterPython.cpp b/source/Interpreter/ScriptInterpreterPython.cpp
index d56f21e..260a6c3 100644
--- a/source/Interpreter/ScriptInterpreterPython.cpp
+++ b/source/Interpreter/ScriptInterpreterPython.cpp
@@ -1321,7 +1321,7 @@
     case eInputReaderDone:
         {
             BreakpointOptions *bp_options = (BreakpointOptions *)baton;
-            std::auto_ptr<BreakpointOptions::CommandData> data_ap(new BreakpointOptions::CommandData());
+            STD_UNIQUE_PTR(BreakpointOptions::CommandData) data_ap(new BreakpointOptions::CommandData());
             data_ap->user_source.AppendList (commands_in_progress);
             if (data_ap.get())
             {
@@ -1427,7 +1427,7 @@
     case eInputReaderDone:
         {
             WatchpointOptions *wp_options = (WatchpointOptions *)baton;
-            std::auto_ptr<WatchpointOptions::CommandData> data_ap(new WatchpointOptions::CommandData());
+            STD_UNIQUE_PTR(WatchpointOptions::CommandData) data_ap(new WatchpointOptions::CommandData());
             data_ap->user_source.AppendList (commands_in_progress);
             if (data_ap.get())
             {
@@ -1534,7 +1534,7 @@
 ScriptInterpreterPython::SetBreakpointCommandCallback (BreakpointOptions *bp_options,
                                                        const char *oneliner)
 {
-    std::auto_ptr<BreakpointOptions::CommandData> data_ap(new BreakpointOptions::CommandData());
+    STD_UNIQUE_PTR(BreakpointOptions::CommandData) data_ap(new BreakpointOptions::CommandData());
 
     // It's necessary to set both user_source and script_source to the oneliner.
     // The former is used to generate callback description (as in breakpoint command list)
@@ -1557,7 +1557,7 @@
 ScriptInterpreterPython::SetWatchpointCommandCallback (WatchpointOptions *wp_options,
                                                        const char *oneliner)
 {
-    std::auto_ptr<WatchpointOptions::CommandData> data_ap(new WatchpointOptions::CommandData());
+    STD_UNIQUE_PTR(WatchpointOptions::CommandData) data_ap(new WatchpointOptions::CommandData());
 
     // It's necessary to set both user_source and script_source to the oneliner.
     // The former is used to generate callback description (as in watchpoint command list)
@@ -2807,10 +2807,10 @@
     }
 }
 
-std::auto_ptr<ScriptInterpreterLocker>
+STD_UNIQUE_PTR(ScriptInterpreterLocker)
 ScriptInterpreterPython::AcquireInterpreterLock ()
 {
-    std::auto_ptr<ScriptInterpreterLocker> py_lock(new Locker(this,
+    STD_UNIQUE_PTR(ScriptInterpreterLocker) py_lock(new Locker(this,
                                                               Locker::AcquireLock | Locker::InitSession,
                                                               Locker::FreeLock | Locker::TearDownSession));
     return py_lock;
diff --git a/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp b/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
index 9eb22fd..b9f7936 100644
--- a/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
+++ b/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
@@ -472,6 +472,10 @@
         m_is_valid = false;
 }
 
+DisassemblerLLVMC::LLVMCDisassembler::~LLVMCDisassembler()
+{
+}
+
 namespace {
     // This is the memory object we use in GetInstruction.
     class LLDBDisasmMemoryObject : public llvm::MemoryObject {
@@ -563,7 +567,7 @@
 {
     if (arch.GetTriple().getArch() != llvm::Triple::UnknownArch)
     {
-        std::auto_ptr<DisassemblerLLVMC> disasm_ap (new DisassemblerLLVMC(arch, flavor));
+        STD_UNIQUE_PTR(DisassemblerLLVMC) disasm_ap (new DisassemblerLLVMC(arch, flavor));
     
         if (disasm_ap.get() && disasm_ap->IsValid())
             return disasm_ap.release();
diff --git a/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.h b/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.h
index 7428b6b..4b9cee2 100644
--- a/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.h
+++ b/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.h
@@ -43,7 +43,7 @@
     public:
         LLVMCDisassembler (const char *triple, unsigned flavor, DisassemblerLLVMC &owner);
         
-        ~LLVMCDisassembler() {};
+        ~LLVMCDisassembler();
         
         uint64_t GetMCInst (const uint8_t *opcode_data, size_t opcode_data_len, lldb::addr_t pc, llvm::MCInst &mc_inst);
         uint64_t PrintMCInst (llvm::MCInst &mc_inst, char *output_buffer, size_t out_buffer_len);
@@ -54,14 +54,14 @@
         }
         
     private:
-        bool                                 m_is_valid;
-        std::auto_ptr<llvm::MCContext>       m_context_ap;
-        std::auto_ptr<llvm::MCAsmInfo>       m_asm_info_ap;
-        std::auto_ptr<llvm::MCSubtargetInfo> m_subtarget_info_ap;
-        std::auto_ptr<llvm::MCInstrInfo>     m_instr_info_ap;
-        std::auto_ptr<llvm::MCRegisterInfo>  m_reg_info_ap;
-        std::auto_ptr<llvm::MCInstPrinter>   m_instr_printer_ap;
-        std::auto_ptr<llvm::MCDisassembler>  m_disasm_ap;
+        bool                                    m_is_valid;
+        STD_UNIQUE_PTR(llvm::MCContext)         m_context_ap;
+        STD_UNIQUE_PTR(llvm::MCAsmInfo)         m_asm_info_ap;
+        STD_UNIQUE_PTR(llvm::MCSubtargetInfo)   m_subtarget_info_ap;
+        STD_UNIQUE_PTR(llvm::MCInstrInfo)       m_instr_info_ap;
+        STD_UNIQUE_PTR(llvm::MCRegisterInfo)    m_reg_info_ap;
+        STD_UNIQUE_PTR(llvm::MCInstPrinter)     m_instr_printer_ap;
+        STD_UNIQUE_PTR(llvm::MCDisassembler)    m_disasm_ap;
     };
 
 public:
@@ -164,8 +164,8 @@
     lldb_private::Mutex m_mutex;
     bool m_data_from_file;
     
-    std::auto_ptr<LLVMCDisassembler> m_disasm_ap;
-    std::auto_ptr<LLVMCDisassembler> m_alternate_disasm_ap;
+    STD_UNIQUE_PTR(LLVMCDisassembler) m_disasm_ap;
+    STD_UNIQUE_PTR(LLVMCDisassembler) m_alternate_disasm_ap;
 };
 
 #endif  // liblldb_DisassemblerLLVM_h_
diff --git a/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp b/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp
index 2f3c4e4..8894195 100644
--- a/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp
+++ b/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp
@@ -98,7 +98,7 @@
       m_rendezvous(process),
       m_load_offset(LLDB_INVALID_ADDRESS),
       m_entry_point(LLDB_INVALID_ADDRESS),
-      m_auxv(NULL)
+      m_auxv()
 {
 }
 
diff --git a/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h b/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h
index 4c9cbe5..3402afb 100644
--- a/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h
+++ b/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h
@@ -93,7 +93,7 @@
     lldb::addr_t m_entry_point;
 
     /// Auxiliary vector of the inferior process.
-    std::auto_ptr<AuxVector> m_auxv;
+    STD_UNIQUE_PTR(AuxVector) m_auxv;
 
     /// Enables a breakpoint on a function called by the runtime
     /// linker each time a module is loaded or unloaded.
diff --git a/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp b/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
index 5aadfe3..8bceba6 100644
--- a/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
+++ b/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
@@ -193,14 +193,14 @@
     {
         if (arch.GetTriple().getArch() == llvm::Triple::arm)
         {
-            std::auto_ptr<EmulateInstructionARM> emulate_insn_ap (new EmulateInstructionARM (arch));
+            STD_UNIQUE_PTR(EmulateInstructionARM) emulate_insn_ap (new EmulateInstructionARM (arch));
             
             if (emulate_insn_ap.get())
                 return emulate_insn_ap.release();
         }
         else if (arch.GetTriple().getArch() == llvm::Triple::thumb)
         {
-            std::auto_ptr<EmulateInstructionARM> emulate_insn_ap (new EmulateInstructionARM (arch));
+            STD_UNIQUE_PTR(EmulateInstructionARM) emulate_insn_ap (new EmulateInstructionARM (arch));
             
             if (emulate_insn_ap.get())
                 return emulate_insn_ap.release();
diff --git a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h
index d9dd5a6..7eaf5ac 100644
--- a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h
+++ b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h
@@ -104,17 +104,19 @@
     Address *
     GetPrintForDebuggerAddr();
     
-    std::auto_ptr<Address>  m_PrintForDebugger_addr;
+    STD_UNIQUE_PTR(Address)  m_PrintForDebugger_addr;
     bool m_read_objc_library;
-    std::auto_ptr<lldb_private::AppleObjCTrampolineHandler> m_objc_trampoline_handler_ap;
+    STD_UNIQUE_PTR(lldb_private::AppleObjCTrampolineHandler) m_objc_trampoline_handler_ap;
     lldb::BreakpointSP m_objc_exception_bp_sp;
     lldb::ModuleWP m_objc_module_wp;
 
     AppleObjCRuntime(Process *process) :
         lldb_private::ObjCLanguageRuntime(process),
         m_read_objc_library (false),
-        m_objc_trampoline_handler_ap(NULL)
-     { } // Call CreateInstance instead.
+        m_objc_trampoline_handler_ap ()
+     {
+         // Call CreateInstance instead.
+     }
 };
     
 } // namespace lldb_private
diff --git a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp
index 944cc35..ca239db 100644
--- a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp
+++ b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp
@@ -150,7 +150,7 @@
 ClangUtilityFunction *
 AppleObjCRuntimeV1::CreateObjectChecker(const char *name)
 {
-    std::auto_ptr<BufStruct> buf(new BufStruct);
+    STD_UNIQUE_PTR(BufStruct) buf(new BufStruct);
     
     assert(snprintf(&buf->contents[0], sizeof(buf->contents),
                     "struct __objc_class                                                    \n"
diff --git a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h
index 419bae9..e84f5ff 100644
--- a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h
+++ b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h
@@ -184,7 +184,7 @@
     
     HashTableSignature m_hash_signature;
     lldb::addr_t m_isa_hash_table_ptr;
-    std::auto_ptr<TypeVendor> m_type_vendor_ap;
+    STD_UNIQUE_PTR(TypeVendor) m_type_vendor_ap;
 private:
     AppleObjCRuntimeV1(Process *process);
 };
diff --git a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
index 3191693..7ab38f9 100644
--- a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
+++ b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
@@ -11,7 +11,6 @@
 
 #include <string>
 #include <vector>
-#include <memory>
 #include <stdint.h>
 
 #include "lldb/lldb-enumerations.h"
@@ -309,6 +308,10 @@
     m_has_object_getClass = (objc_module_sp->FindFirstSymbolWithNameAndType(g_gdb_object_getClass, eSymbolTypeCode) != NULL);
 }
 
+AppleObjCRuntimeV2::~AppleObjCRuntimeV2()
+{
+}
+
 bool
 AppleObjCRuntimeV2::GetDynamicTypeAndAddress (ValueObject &in_value, 
                                               DynamicValueType use_dynamic, 
@@ -817,9 +820,9 @@
 
             if (process)
             {
-                std::auto_ptr<objc_class_t> objc_class;
-                std::auto_ptr<class_ro_t> class_ro;
-                std::auto_ptr<class_rw_t> class_rw;
+                STD_UNIQUE_PTR(objc_class_t) objc_class;
+                STD_UNIQUE_PTR(class_ro_t) class_ro;
+                STD_UNIQUE_PTR(class_rw_t) class_rw;
                 
                 if (!Read_objc_class(process, objc_class))
                     return m_name;
@@ -840,7 +843,7 @@
         if (!process)
             return ObjCLanguageRuntime::ClassDescriptorSP();
         
-        std::auto_ptr<objc_class_t> objc_class;
+        STD_UNIQUE_PTR(objc_class_t) objc_class;
 
         if (!Read_objc_class(process, objc_class))
             return ObjCLanguageRuntime::ClassDescriptorSP();
@@ -869,9 +872,9 @@
         
         if (process)
         {
-            std::auto_ptr<objc_class_t> objc_class;
-            std::auto_ptr<class_ro_t> class_ro;
-            std::auto_ptr<class_rw_t> class_rw;
+            STD_UNIQUE_PTR(objc_class_t) objc_class;
+            STD_UNIQUE_PTR(class_ro_t) class_ro;
+            STD_UNIQUE_PTR(class_rw_t) class_rw;
             
             if (!Read_objc_class(process, objc_class))
                 return 0;
@@ -898,9 +901,9 @@
     {
         lldb_private::Process *process = m_runtime.GetProcess();
 
-        std::auto_ptr<objc_class_t> objc_class;
-        std::auto_ptr<class_ro_t> class_ro;
-        std::auto_ptr<class_rw_t> class_rw;
+        STD_UNIQUE_PTR(objc_class_t) objc_class;
+        STD_UNIQUE_PTR(class_ro_t) class_ro;
+        STD_UNIQUE_PTR(class_rw_t) class_rw;
         
         if (!Read_objc_class(process, objc_class))
             return 0;
@@ -914,7 +917,7 @@
         
         if (instance_method_func)
         {
-            std::auto_ptr <method_list_t> base_method_list;
+            STD_UNIQUE_PTR(method_list_t) base_method_list;
             
             base_method_list.reset(new method_list_t);
             if (!base_method_list->Read(process, class_ro->m_baseMethods_ptr))
@@ -923,7 +926,7 @@
             if (base_method_list->m_entsize != method_t::GetSize(process))
                 return false;
             
-            std::auto_ptr <method_t> method;
+            STD_UNIQUE_PTR(method_t) method;
             method.reset(new method_t);
             
             for (uint32_t i = 0, e = base_method_list->m_count; i < e; ++i)
@@ -950,23 +953,20 @@
         
         if (ivar_func)
         {
-            std::auto_ptr <ivar_list_t> ivar_list;
-            
-            ivar_list.reset(new ivar_list_t);
-            if (!ivar_list->Read(process, class_ro->m_ivars_ptr))
+            ivar_list_t ivar_list;
+            if (!ivar_list.Read(process, class_ro->m_ivars_ptr))
                 return false;
             
-            if (ivar_list->m_entsize != ivar_t::GetSize(process))
+            if (ivar_list.m_entsize != ivar_t::GetSize(process))
                 return false;
             
-            std::auto_ptr <ivar_t> ivar;
-            ivar.reset(new ivar_t);
+            ivar_t ivar;
             
-            for (uint32_t i = 0, e = ivar_list->m_count; i < e; ++i)
+            for (uint32_t i = 0, e = ivar_list.m_count; i < e; ++i)
             {
-                ivar->Read(process, ivar_list->m_first_ptr + (i * ivar_list->m_entsize));
+                ivar.Read(process, ivar_list.m_first_ptr + (i * ivar_list.m_entsize));
                 
-                if (ivar_func(ivar->m_name.c_str(), ivar->m_type.c_str(), ivar->m_offset_ptr, ivar->m_size))
+                if (ivar_func(ivar.m_name.c_str(), ivar.m_type.c_str(), ivar.m_offset_ptr, ivar.m_size))
                     break;
             }
         }
@@ -1354,7 +1354,7 @@
         }
     };
     
-    bool Read_objc_class (Process* process, std::auto_ptr<objc_class_t> &objc_class)
+    bool Read_objc_class (Process* process, STD_UNIQUE_PTR(objc_class_t) &objc_class)
     {
         objc_class.reset(new objc_class_t);
         
@@ -1366,7 +1366,7 @@
         return ret;
     }
     
-    bool Read_class_row (Process* process, const objc_class_t &objc_class, std::auto_ptr<class_ro_t> &class_ro, std::auto_ptr<class_rw_t> &class_rw)
+    bool Read_class_row (Process* process, const objc_class_t &objc_class, STD_UNIQUE_PTR(class_ro_t) &class_ro, STD_UNIQUE_PTR(class_rw_t) &class_rw)
     {
         class_ro.reset();
         class_rw.reset();
diff --git a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h
index 8e80124..07a38fe 100644
--- a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h
+++ b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h
@@ -29,7 +29,7 @@
         public AppleObjCRuntime
 {
 public:
-    virtual ~AppleObjCRuntimeV2() { }
+    virtual ~AppleObjCRuntimeV2();
     
     // These are generic runtime functions:
     virtual bool
@@ -150,17 +150,17 @@
     lldb::addr_t
     GetSharedCacheReadOnlyAddress();
     
-    std::auto_ptr<ClangFunction>        m_get_class_info_function;
-    std::auto_ptr<ClangUtilityFunction> m_get_class_info_code;
+    STD_UNIQUE_PTR(ClangFunction)       m_get_class_info_function;
+    STD_UNIQUE_PTR(ClangUtilityFunction) m_get_class_info_code;
     lldb::addr_t                        m_get_class_info_args;
     Mutex                               m_get_class_info_args_mutex;
 
-    std::auto_ptr<ClangFunction>        m_get_shared_cache_class_info_function;
-    std::auto_ptr<ClangUtilityFunction> m_get_shared_cache_class_info_code;
+    STD_UNIQUE_PTR(ClangFunction)        m_get_shared_cache_class_info_function;
+    STD_UNIQUE_PTR(ClangUtilityFunction) m_get_shared_cache_class_info_code;
     lldb::addr_t                        m_get_shared_cache_class_info_args;
     Mutex                               m_get_shared_cache_class_info_args_mutex;
 
-    std::auto_ptr<TypeVendor>           m_type_vendor_ap;
+    STD_UNIQUE_PTR(TypeVendor)           m_type_vendor_ap;
     lldb::addr_t                        m_isa_hash_table_ptr;
     HashTableSignature                  m_hash_signature;
     bool                                m_has_object_getClass;
diff --git a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.h b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.h
index a506514..0ee4d48 100644
--- a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.h
+++ b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.h
@@ -197,14 +197,14 @@
     MsgsendMap m_msgSend_map;
     lldb::ProcessSP m_process_sp;
     lldb::ModuleSP m_objc_module_sp;
-    std::auto_ptr<ClangFunction> m_impl_function;
-    std::auto_ptr<ClangUtilityFunction> m_impl_code;
+    STD_UNIQUE_PTR(ClangFunction) m_impl_function;
+    STD_UNIQUE_PTR(ClangUtilityFunction) m_impl_code;
     Mutex m_impl_function_mutex;
     lldb::addr_t m_impl_fn_addr;
     lldb::addr_t m_impl_stret_fn_addr;
     lldb::addr_t m_msg_forward_addr;
     lldb::addr_t m_msg_forward_stret_addr;
-    std::auto_ptr<AppleObjCVTables> m_vtables_ap;
+    STD_UNIQUE_PTR(AppleObjCVTables) m_vtables_ap;
     
      
 };
diff --git a/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp b/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
index 443eeb9..5c87ec2 100644
--- a/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
+++ b/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
@@ -296,12 +296,12 @@
                 lldb::offset_t archive_data_offset = 0;
 
                 Archive::shared_ptr archive_sp (Archive::FindCachedArchive (*file, module_sp->GetArchitecture(), module_sp->GetModificationTime()));
-                std::auto_ptr<ObjectContainerBSDArchive> container_ap(new ObjectContainerBSDArchive (module_sp,
-                                                                                                     archive_data_sp,
-                                                                                                     archive_data_offset,
-                                                                                                     file,
-                                                                                                     file_offset,
-                                                                                                     length));
+                STD_UNIQUE_PTR(ObjectContainerBSDArchive) container_ap(new ObjectContainerBSDArchive (module_sp,
+                                                                                                      archive_data_sp,
+                                                                                                      archive_data_offset,
+                                                                                                      file,
+                                                                                                      file_offset,
+                                                                                                      length));
 
                 if (container_ap.get())
                 {
@@ -322,7 +322,7 @@
             Archive::shared_ptr archive_sp (Archive::FindCachedArchive (*file, module_sp->GetArchitecture(), module_sp->GetModificationTime()));
             if (archive_sp)
             {
-                std::auto_ptr<ObjectContainerBSDArchive> container_ap(new ObjectContainerBSDArchive (module_sp, data_sp, data_offset, file, file_offset, length));
+                STD_UNIQUE_PTR(ObjectContainerBSDArchive) container_ap(new ObjectContainerBSDArchive (module_sp, data_sp, data_offset, file, file_offset, length));
                 
                 if (container_ap.get())
                 {
diff --git a/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp b/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp
index ad833ff..fbc64a1 100644
--- a/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp
+++ b/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp
@@ -67,7 +67,7 @@
         data.SetData (data_sp, data_offset, length);
         if (ObjectContainerUniversalMachO::MagicBytesMatch(data))
         {
-            std::auto_ptr<ObjectContainerUniversalMachO> container_ap(new ObjectContainerUniversalMachO (module_sp, data_sp, data_offset, file, file_offset, length));
+            STD_UNIQUE_PTR(ObjectContainerUniversalMachO) container_ap(new ObjectContainerUniversalMachO (module_sp, data_sp, data_offset, file, file_offset, length));
             if (container_ap->ParseHeader())
             {
                 return container_ap.release();
diff --git a/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
index 517c8a1..cfe9b87 100644
--- a/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
+++ b/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
@@ -198,7 +198,7 @@
             unsigned address_size = ELFHeader::AddressSizeInBytes(magic);
             if (address_size == 4 || address_size == 8)
             {
-                std::auto_ptr<ObjectFileELF> objfile_ap(new ObjectFileELF(module_sp, data_sp, data_offset, file, file_offset, length));
+                STD_UNIQUE_PTR(ObjectFileELF) objfile_ap(new ObjectFileELF(module_sp, data_sp, data_offset, file, file_offset, length));
                 ArchSpec spec;
                 if (objfile_ap->GetArchitecture(spec) &&
                     objfile_ap->SetModulesArchitecture(spec))
diff --git a/source/Plugins/ObjectFile/ELF/ObjectFileELF.h b/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
index ba4057c..0870d90 100644
--- a/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
+++ b/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
@@ -155,7 +155,7 @@
 
     /// List of file specifications corresponding to the modules (shared
     /// libraries) on which this object file depends.
-    mutable std::auto_ptr<lldb_private::FileSpecList> m_filespec_ap;
+    mutable STD_UNIQUE_PTR(lldb_private::FileSpecList) m_filespec_ap;
 
     /// Data extractor holding the string table used to resolve section names.
     lldb_private::DataExtractor m_shstr_data;
diff --git a/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
index 49441f4..46d63bc 100644
--- a/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+++ b/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
@@ -411,7 +411,7 @@
             data_sp = file->MemoryMapFileContents(file_offset, length);
             data_offset = 0;
         }
-        std::auto_ptr<ObjectFile> objfile_ap(new ObjectFileMachO (module_sp, data_sp, data_offset, file, file_offset, length));
+        STD_UNIQUE_PTR(ObjectFile) objfile_ap(new ObjectFileMachO (module_sp, data_sp, data_offset, file, file_offset, length));
         if (objfile_ap.get() && objfile_ap->ParseHeader())
             return objfile_ap.release();
     }
@@ -426,7 +426,7 @@
 {
     if (ObjectFileMachO::MagicBytesMatch(data_sp, 0, data_sp->GetByteSize()))
     {
-        std::auto_ptr<ObjectFile> objfile_ap(new ObjectFileMachO (module_sp, data_sp, process_sp, header_addr));
+        STD_UNIQUE_PTR(ObjectFile) objfile_ap(new ObjectFileMachO (module_sp, data_sp, process_sp, header_addr));
         if (objfile_ap.get() && objfile_ap->ParseHeader())
             return objfile_ap.release();
     }
diff --git a/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp b/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
index 78af661..5982874 100644
--- a/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
+++ b/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
@@ -163,7 +163,7 @@
         // Update the data to contain the entire file if it doesn't already
         if (data_sp->GetByteSize() < length)
             data_sp = file->MemoryMapFileContents(file_offset, length);
-        std::auto_ptr<ObjectFile> objfile_ap(new ObjectFilePECOFF (module_sp, data_sp, data_offset, file, file_offset, length));
+        STD_UNIQUE_PTR(ObjectFile) objfile_ap(new ObjectFilePECOFF (module_sp, data_sp, data_offset, file, file_offset, length));
         if (objfile_ap.get() && objfile_ap->ParseHeader())
             return objfile_ap.release();
     }
diff --git a/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.h b/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.h
index 8427f56..de781d5 100644
--- a/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.h
+++ b/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.h
@@ -84,7 +84,7 @@
     GetDynamicRegisterInfo ();
 
     lldb::ValueObjectSP m_thread_list_valobj_sp;
-    std::auto_ptr<DynamicRegisterInfo> m_register_info_ap;
+    STD_UNIQUE_PTR(DynamicRegisterInfo) m_register_info_ap;
     
 };
 
diff --git a/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp b/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp
index acacea4..4127506 100644
--- a/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp
+++ b/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp
@@ -60,7 +60,7 @@
     FileSpec python_os_plugin_spec (process->GetPythonOSPluginPath());
     if (python_os_plugin_spec && python_os_plugin_spec.Exists())
     {
-        std::auto_ptr<OperatingSystemPython> os_ap (new OperatingSystemPython (process, python_os_plugin_spec));
+        STD_UNIQUE_PTR(OperatingSystemPython) os_ap (new OperatingSystemPython (process, python_os_plugin_spec));
         if (os_ap.get() && os_ap->IsValid())
             return os_ap.release();
     }
diff --git a/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h b/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h
index bcc90c6..f55cc51 100644
--- a/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h
+++ b/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h
@@ -101,7 +101,7 @@
     GetDynamicRegisterInfo ();
 
     lldb::ValueObjectSP m_thread_list_valobj_sp;
-    std::auto_ptr<DynamicRegisterInfo> m_register_info_ap;
+    STD_UNIQUE_PTR(DynamicRegisterInfo) m_register_info_ap;
     lldb_private::ScriptInterpreter *m_interpreter;
     lldb::ScriptInterpreterObjectSP m_python_object_sp;
     
diff --git a/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp b/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
index bcc8c77..f80e5e0 100644
--- a/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ b/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -691,7 +691,7 @@
       m_client_fd(-1),
       m_server_fd(-1)
 {
-    std::auto_ptr<LaunchArgs> args;
+    STD_UNIQUE_PTR(LaunchArgs) args;
 
     args.reset(new LaunchArgs(this, module, argv, envp,
                               stdin_path, stdout_path, stderr_path, working_dir));
@@ -752,7 +752,7 @@
       m_client_fd(-1),
       m_server_fd(-1)
 {
-    std::auto_ptr<AttachArgs> args;
+    STD_UNIQUE_PTR(AttachArgs) args;
 
     args.reset(new AttachArgs(this, pid));
 
diff --git a/source/Plugins/Process/Linux/ProcessMonitor.cpp b/source/Plugins/Process/Linux/ProcessMonitor.cpp
index 381f4be..269a41e 100644
--- a/source/Plugins/Process/Linux/ProcessMonitor.cpp
+++ b/source/Plugins/Process/Linux/ProcessMonitor.cpp
@@ -924,7 +924,7 @@
       m_client_fd(-1),
       m_server_fd(-1)
 {
-    std::auto_ptr<LaunchArgs> args;
+    STD_UNIQUE_PTR(LaunchArgs) args;
 
     args.reset(new LaunchArgs(this, module, argv, envp,
                               stdin_path, stdout_path, stderr_path, working_dir));
@@ -984,7 +984,7 @@
       m_client_fd(-1),
       m_server_fd(-1)
 {
-    std::auto_ptr<AttachArgs> args;
+    STD_UNIQUE_PTR(AttachArgs) args;
 
     args.reset(new AttachArgs(this, pid));
 
diff --git a/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp b/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp
index 4a57b43..4d4e5f4 100644
--- a/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp
+++ b/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp
@@ -196,7 +196,7 @@
         return error;
     }
 
-    std::auto_ptr<ConnectionFileDescriptor> conn_ap(new ConnectionFileDescriptor());
+    STD_UNIQUE_PTR(ConnectionFileDescriptor) conn_ap(new ConnectionFileDescriptor());
     if (conn_ap.get())
     {
         // Only try once for now.
diff --git a/source/Plugins/Process/POSIX/POSIXThread.h b/source/Plugins/Process/POSIX/POSIXThread.h
index 7aad671..d75146e 100644
--- a/source/Plugins/Process/POSIX/POSIXThread.h
+++ b/source/Plugins/Process/POSIX/POSIXThread.h
@@ -81,7 +81,7 @@
         return (RegisterContextPOSIX *)m_reg_context_sp.get();
     }
     
-    std::auto_ptr<lldb_private::StackFrame> m_frame_ap;
+    STD_UNIQUE_PTR(lldb_private::StackFrame) m_frame_ap;
 
     lldb::BreakpointSiteSP m_breakpoint;
     lldb::StopInfoSP m_stop_info;
diff --git a/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index 0086195..1d1a095 100644
--- a/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -738,7 +738,7 @@
 {
     Error error;
     // Sleep and wait a bit for debugserver to start to listen...
-    std::auto_ptr<ConnectionFileDescriptor> conn_ap(new ConnectionFileDescriptor());
+    STD_UNIQUE_PTR(ConnectionFileDescriptor) conn_ap(new ConnectionFileDescriptor());
     if (conn_ap.get())
     {
         const uint32_t max_retry_count = 50;
diff --git a/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.h b/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.h
index acbbdf1..08fe68c 100644
--- a/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.h
+++ b/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.h
@@ -190,7 +190,7 @@
     const DWARFAbbreviationDeclarationSet *m_abbrevs;
     void *              m_user_data;
     DWARFDebugInfoEntry::collection m_die_array;    // The compile unit debug information entry item
-    std::auto_ptr<DWARFDebugAranges> m_func_aranges_ap;   // A table similar to the .debug_aranges table, but this one points to the exact DW_TAG_subprogram DIEs
+    STD_UNIQUE_PTR(DWARFDebugAranges) m_func_aranges_ap;   // A table similar to the .debug_aranges table, but this one points to the exact DW_TAG_subprogram DIEs
     dw_addr_t           m_base_addr;
     dw_offset_t         m_offset;
     uint32_t            m_length;
diff --git a/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h b/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h
index c716fa4..58c295a 100644
--- a/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h
+++ b/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h
@@ -77,7 +77,7 @@
     SymbolFileDWARF* m_dwarf2Data;
     typedef std::vector<DWARFCompileUnitSP>     CompileUnitColl;
     CompileUnitColl m_compile_units;
-    std::auto_ptr<DWARFDebugAranges> m_cu_aranges_ap; // A quick address to compile unit table
+    STD_UNIQUE_PTR(DWARFDebugAranges) m_cu_aranges_ap; // A quick address to compile unit table
 
 private:
     // All parsing needs to be done partially any managed by this class as accessors are called.
diff --git a/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index 625f62e..778f9e2 100644
--- a/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -880,7 +880,7 @@
                 func_name.SetValue(ConstString(name), false);
 
             FunctionSP func_sp;
-            std::auto_ptr<Declaration> decl_ap;
+            STD_UNIQUE_PTR(Declaration) decl_ap;
             if (decl_file != 0 || decl_line != 0 || decl_column != 0)
                 decl_ap.reset(new Declaration (sc.comp_unit->GetSupportFiles().GetFileSpecAtIndex(decl_file), 
                                                decl_line, 
@@ -995,7 +995,7 @@
 struct ParseDWARFLineTableCallbackInfo
 {
     LineTable* line_table;
-    std::auto_ptr<LineSequence> sequence_ap;
+    STD_UNIQUE_PTR(LineSequence) sequence_ap;
 };
 
 //----------------------------------------------------------------------
@@ -1060,7 +1060,7 @@
             const dw_offset_t cu_line_offset = dwarf_cu_die->GetAttributeValueAsUnsigned(this, dwarf_cu, DW_AT_stmt_list, DW_INVALID_OFFSET);
             if (cu_line_offset != DW_INVALID_OFFSET)
             {
-                std::auto_ptr<LineTable> line_table_ap(new LineTable(sc.comp_unit));
+                STD_UNIQUE_PTR(LineTable) line_table_ap(new LineTable(sc.comp_unit));
                 if (line_table_ap.get())
                 {
                     ParseDWARFLineTableCallbackInfo info;
@@ -1170,12 +1170,12 @@
 
                     if (tag != DW_TAG_subprogram && (name != NULL || mangled_name != NULL))
                     {
-                        std::auto_ptr<Declaration> decl_ap;
+                        STD_UNIQUE_PTR(Declaration) decl_ap;
                         if (decl_file != 0 || decl_line != 0 || decl_column != 0)
                             decl_ap.reset(new Declaration(sc.comp_unit->GetSupportFiles().GetFileSpecAtIndex(decl_file), 
                                                           decl_line, decl_column));
 
-                        std::auto_ptr<Declaration> call_ap;
+                        STD_UNIQUE_PTR(Declaration) call_ap;
                         if (call_file != 0 || call_line != 0 || call_column != 0)
                             call_ap.reset(new Declaration(sc.comp_unit->GetSupportFiles().GetFileSpecAtIndex(call_file), 
                                                           call_line, call_column));
@@ -1435,7 +1435,7 @@
     const char             *m_property_setter_name;
     const char             *m_property_getter_name;
     uint32_t                m_property_attributes;
-    std::auto_ptr<ClangASTMetadata> m_metadata_ap;
+    STD_UNIQUE_PTR(ClangASTMetadata) m_metadata_ap;
 };
 
 struct BitfieldInfo
diff --git a/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h b/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
index b4bbf93..4fd0ba0 100644
--- a/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
+++ b/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
@@ -13,7 +13,6 @@
 // C Includes
 // C++ Includes
 #include <list>
-#include <memory>
 #include <map>
 #include <vector>
 
@@ -567,15 +566,15 @@
     lldb_private::DataExtractor     m_data_apple_namespaces;
     lldb_private::DataExtractor     m_data_apple_objc;
 
-    // The auto_ptr items below are generated on demand if and when someone accesses
+    // The unique pointer items below are generated on demand if and when someone accesses
     // them through a non const version of this class.
-    std::auto_ptr<DWARFDebugAbbrev>     m_abbr;
-    std::auto_ptr<DWARFDebugInfo>       m_info;
-    std::auto_ptr<DWARFDebugLine>       m_line;
-    std::auto_ptr<DWARFMappedHash::MemoryTable> m_apple_names_ap;
-    std::auto_ptr<DWARFMappedHash::MemoryTable> m_apple_types_ap;
-    std::auto_ptr<DWARFMappedHash::MemoryTable> m_apple_namespaces_ap;
-    std::auto_ptr<DWARFMappedHash::MemoryTable> m_apple_objc_ap;
+    STD_UNIQUE_PTR(DWARFDebugAbbrev)     m_abbr;
+    STD_UNIQUE_PTR(DWARFDebugInfo)       m_info;
+    STD_UNIQUE_PTR(DWARFDebugLine)       m_line;
+    STD_UNIQUE_PTR(DWARFMappedHash::MemoryTable) m_apple_names_ap;
+    STD_UNIQUE_PTR(DWARFMappedHash::MemoryTable) m_apple_types_ap;
+    STD_UNIQUE_PTR(DWARFMappedHash::MemoryTable) m_apple_namespaces_ap;
+    STD_UNIQUE_PTR(DWARFMappedHash::MemoryTable) m_apple_objc_ap;
     NameToDIE                           m_function_basename_index;  // All concrete functions
     NameToDIE                           m_function_fullname_index;  // All concrete functions
     NameToDIE                           m_function_method_index;    // All inlined functions
@@ -589,7 +588,7 @@
                                         m_using_apple_tables:1;
     lldb_private::LazyBool              m_supports_DW_AT_APPLE_objc_complete_type;
 
-    std::auto_ptr<DWARFDebugRanges>     m_ranges;
+    STD_UNIQUE_PTR(DWARFDebugRanges)     m_ranges;
     UniqueDWARFASTTypeMap m_unique_ast_type_map;
     typedef llvm::SmallPtrSet<const DWARFDebugInfoEntry *, 4> DIEPointerSet;
     typedef llvm::DenseMap<const DWARFDebugInfoEntry *, clang::DeclContext *> DIEToDeclContextMap;
diff --git a/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.cpp b/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.cpp
index 55eb703..0510b74 100644
--- a/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.cpp
+++ b/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.cpp
@@ -298,7 +298,7 @@
 UnwindAssembly *
 UnwindAssemblyInstEmulation::CreateInstance (const ArchSpec &arch)
 {
-    std::auto_ptr<EmulateInstruction> inst_emulator_ap (EmulateInstruction::FindPlugin (arch, eInstructionTypePrologueEpilogue, NULL));
+    STD_UNIQUE_PTR(EmulateInstruction) inst_emulator_ap (EmulateInstruction::FindPlugin (arch, eInstructionTypePrologueEpilogue, NULL));
     // Make sure that all prologue instructions are handled
     if (inst_emulator_ap.get())
         return new UnwindAssemblyInstEmulation (arch, inst_emulator_ap.release());
diff --git a/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h b/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h
index 2afa6bd..deff8b0 100644
--- a/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h
+++ b/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h
@@ -160,7 +160,7 @@
     GetRegisterValue (const lldb_private::RegisterInfo &reg_info, 
                       lldb_private::RegisterValue &reg_value);
 
-    std::auto_ptr<lldb_private::EmulateInstruction> m_inst_emulator_ap;    
+    STD_UNIQUE_PTR(lldb_private::EmulateInstruction) m_inst_emulator_ap;    
     lldb_private::AddressRange* m_range_ptr; 
     lldb_private::Thread* m_thread_ptr;
     lldb_private::UnwindPlan* m_unwind_plan_ptr;
diff --git a/source/Symbol/FuncUnwinders.cpp b/source/Symbol/FuncUnwinders.cpp
index 07b2144..3de0617 100644
--- a/source/Symbol/FuncUnwinders.cpp
+++ b/source/Symbol/FuncUnwinders.cpp
@@ -102,8 +102,8 @@
     // information. We want to make sure if someone requests an unwind
     // plan, that they get one and don't run into a race condition where one
     // thread has started to create the unwind plan and has put it into 
-    // the auto_ptr member variable, and have another thread enter this function
-    // and return the partially filled pointer contained in the auto_ptr.
+    // the unique pointer member variable, and have another thread enter this function
+    // and return the partially filled pointer contained in the unique pointer.
     // We also want to make sure that we lock out other unwind plans from
     // being accessed until this one is done creating itself in case someone
     // had some code like:
@@ -128,8 +128,8 @@
     // information. We want to make sure if someone requests an unwind
     // plan, that they get one and don't run into a race condition where one
     // thread has started to create the unwind plan and has put it into 
-    // the auto_ptr member variable, and have another thread enter this function
-    // and return the partially filled pointer contained in the auto_ptr.
+    // the unique pointer member variable, and have another thread enter this function
+    // and return the partially filled pointer contained in the unique pointer.
     // We also want to make sure that we lock out other unwind plans from
     // being accessed until this one is done creating itself in case someone
     // had some code like:
@@ -154,8 +154,8 @@
     // information. We want to make sure if someone requests an unwind
     // plan, that they get one and don't run into a race condition where one
     // thread has started to create the unwind plan and has put it into 
-    // the auto_ptr member variable, and have another thread enter this function
-    // and return the partially filled pointer contained in the auto_ptr.
+    // the unique pointer member variable, and have another thread enter this function
+    // and return the partially filled pointer contained in the unique pointer.
     // We also want to make sure that we lock out other unwind plans from
     // being accessed until this one is done creating itself in case someone
     // had some code like:
@@ -190,8 +190,8 @@
     // information. We want to make sure if someone requests an unwind
     // plan, that they get one and don't run into a race condition where one
     // thread has started to create the unwind plan and has put it into 
-    // the auto_ptr member variable, and have another thread enter this function
-    // and return the partially filled pointer contained in the auto_ptr.
+    // the unique pointer member variable, and have another thread enter this function
+    // and return the partially filled pointer contained in the unique pointer.
     // We also want to make sure that we lock out other unwind plans from
     // being accessed until this one is done creating itself in case someone
     // had some code like:
diff --git a/source/Symbol/LineTable.cpp b/source/Symbol/LineTable.cpp
index ce9b859..98f7e12 100644
--- a/source/Symbol/LineTable.cpp
+++ b/source/Symbol/LineTable.cpp
@@ -489,7 +489,7 @@
 LineTable *
 LineTable::LinkLineTable (const FileRangeMap &file_range_map)
 {
-    std::auto_ptr<LineTable> line_table_ap (new LineTable (m_comp_unit));
+    STD_UNIQUE_PTR(LineTable) line_table_ap (new LineTable (m_comp_unit));
     LineSequenceImpl sequence;
     const size_t count = m_entries.size();
     LineEntry line_entry;
diff --git a/source/Symbol/ObjectFile.cpp b/source/Symbol/ObjectFile.cpp
index 1187e79..78c6445 100644
--- a/source/Symbol/ObjectFile.cpp
+++ b/source/Symbol/ObjectFile.cpp
@@ -59,7 +59,7 @@
                 {
                     for (uint32_t idx = 0; (create_object_container_callback = PluginManager::GetObjectContainerCreateCallbackAtIndex(idx)) != NULL; ++idx)
                     {
-                        std::auto_ptr<ObjectContainer> object_container_ap(create_object_container_callback(module_sp, data_sp, data_offset, file, file_offset, file_size));
+                        STD_UNIQUE_PTR(ObjectContainer) object_container_ap(create_object_container_callback(module_sp, data_sp, data_offset, file, file_offset, file_size));
                         
                         if (object_container_ap.get())
                             object_file_sp = object_container_ap->GetObjectFile(file);
@@ -101,7 +101,7 @@
                         // (like BSD archives caching the contained objects within an file).
                         for (uint32_t idx = 0; (create_object_container_callback = PluginManager::GetObjectContainerCreateCallbackAtIndex(idx)) != NULL; ++idx)
                         {
-                            std::auto_ptr<ObjectContainer> object_container_ap(create_object_container_callback(module_sp, data_sp, data_offset, file, file_offset, file_size));
+                            STD_UNIQUE_PTR(ObjectContainer) object_container_ap(create_object_container_callback(module_sp, data_sp, data_offset, file, file_offset, file_size));
                             
                             if (object_container_ap.get())
                                 object_file_sp = object_container_ap->GetObjectFile(file);
@@ -133,7 +133,7 @@
                 // an object file from the container.
                 for (uint32_t idx = 0; (create_object_container_callback = PluginManager::GetObjectContainerCreateCallbackAtIndex(idx)) != NULL; ++idx)
                 {
-                    std::auto_ptr<ObjectContainer> object_container_ap(create_object_container_callback(module_sp, data_sp, data_offset, file, file_offset, file_size));
+                    STD_UNIQUE_PTR(ObjectContainer) object_container_ap(create_object_container_callback(module_sp, data_sp, data_offset, file, file_offset, file_size));
 
                     if (object_container_ap.get())
                         object_file_sp = object_container_ap->GetObjectFile(file);
@@ -392,7 +392,7 @@
     DataBufferSP data_sp;
     if (process_sp)
     {
-        std::auto_ptr<DataBufferHeap> data_ap (new DataBufferHeap (byte_size, 0));
+        STD_UNIQUE_PTR(DataBufferHeap) data_ap (new DataBufferHeap (byte_size, 0));
         Error error;
         const size_t bytes_read = process_sp->ReadMemory (addr, 
                                                           data_ap->GetBytes(), 
diff --git a/source/Symbol/SymbolFile.cpp b/source/Symbol/SymbolFile.cpp
index 808830e..a3d2c0e 100644
--- a/source/Symbol/SymbolFile.cpp
+++ b/source/Symbol/SymbolFile.cpp
@@ -21,7 +21,7 @@
 SymbolFile*
 SymbolFile::FindPlugin (ObjectFile* obj_file)
 {
-    std::auto_ptr<SymbolFile> best_symfile_ap;
+    STD_UNIQUE_PTR(SymbolFile) best_symfile_ap;
     if (obj_file != NULL)
     {
         // TODO: Load any plug-ins in the appropriate plug-in search paths and
@@ -32,7 +32,7 @@
         SymbolFileCreateInstance create_callback;
         for (uint32_t idx = 0; (create_callback = PluginManager::GetSymbolFileCreateCallbackAtIndex(idx)) != NULL; ++idx)
         {
-            std::auto_ptr<SymbolFile> curr_symfile_ap(create_callback(obj_file));
+            STD_UNIQUE_PTR(SymbolFile) curr_symfile_ap(create_callback(obj_file));
 
             if (curr_symfile_ap.get())
             {
@@ -40,7 +40,7 @@
                 if (sym_file_abilities > best_symfile_abilities)
                 {
                     best_symfile_abilities = sym_file_abilities;
-                    best_symfile_ap = curr_symfile_ap;
+                    best_symfile_ap.reset (curr_symfile_ap.release());
                     // If any symbol file parser has all of the abilities, then
                     // we should just stop looking.
                     if ((kAllAbilities & sym_file_abilities) == kAllAbilities)
diff --git a/source/Symbol/SymbolVendor.cpp b/source/Symbol/SymbolVendor.cpp
index 343a4b1..e3a2ca3 100644
--- a/source/Symbol/SymbolVendor.cpp
+++ b/source/Symbol/SymbolVendor.cpp
@@ -34,7 +34,7 @@
 SymbolVendor*
 SymbolVendor::FindPlugin (const lldb::ModuleSP &module_sp, lldb_private::Stream *feedback_strm)
 {
-    std::auto_ptr<SymbolVendor> instance_ap;
+    STD_UNIQUE_PTR(SymbolVendor) instance_ap;
     //----------------------------------------------------------------------
     // We currently only have one debug symbol parser...
     //----------------------------------------------------------------------
diff --git a/source/Target/LanguageRuntime.cpp b/source/Target/LanguageRuntime.cpp
index 7a6bfbe..d3d3fe1 100644
--- a/source/Target/LanguageRuntime.cpp
+++ b/source/Target/LanguageRuntime.cpp
@@ -228,7 +228,7 @@
 LanguageRuntime*
 LanguageRuntime::FindPlugin (Process *process, lldb::LanguageType language)
 {
-    std::auto_ptr<LanguageRuntime> language_runtime_ap;
+    STD_UNIQUE_PTR(LanguageRuntime) language_runtime_ap;
     LanguageRuntimeCreateInstance create_callback;
 
     for (uint32_t idx = 0;
diff --git a/source/Target/Memory.cpp b/source/Target/Memory.cpp
index ae8d034..f9aaca1 100644
--- a/source/Target/Memory.cpp
+++ b/source/Target/Memory.cpp
@@ -178,7 +178,7 @@
             if (bytes_left > 0)
             {
                 assert ((curr_addr % cache_line_byte_size) == 0);
-                std::auto_ptr<DataBufferHeap> data_buffer_heap_ap(new DataBufferHeap (cache_line_byte_size, 0));
+                STD_UNIQUE_PTR(DataBufferHeap) data_buffer_heap_ap(new DataBufferHeap (cache_line_byte_size, 0));
                 size_t process_bytes_read = m_process.ReadMemoryFromInferior (curr_addr, 
                                                                               data_buffer_heap_ap->GetBytes(), 
                                                                               data_buffer_heap_ap->GetByteSize(), 
diff --git a/source/Target/OperatingSystem.cpp b/source/Target/OperatingSystem.cpp
index 2c725d3..5434885 100644
--- a/source/Target/OperatingSystem.cpp
+++ b/source/Target/OperatingSystem.cpp
@@ -28,7 +28,7 @@
         create_callback  = PluginManager::GetOperatingSystemCreateCallbackForPluginName (plugin_name);
         if (create_callback)
         {
-            std::auto_ptr<OperatingSystem> instance_ap(create_callback(process, true));
+            STD_UNIQUE_PTR(OperatingSystem) instance_ap(create_callback(process, true));
             if (instance_ap.get())
                 return instance_ap.release();
         }
@@ -37,7 +37,7 @@
     {
         for (uint32_t idx = 0; (create_callback = PluginManager::GetOperatingSystemCreateCallbackAtIndex(idx)) != NULL; ++idx)
         {
-            std::auto_ptr<OperatingSystem> instance_ap(create_callback(process, false));
+            STD_UNIQUE_PTR(OperatingSystem) instance_ap(create_callback(process, false));
             if (instance_ap.get())
                 return instance_ap.release();
         }
diff --git a/source/Target/Platform.cpp b/source/Target/Platform.cpp
index bc36560..e58618e 100644
--- a/source/Target/Platform.cpp
+++ b/source/Target/Platform.cpp
@@ -109,7 +109,7 @@
             {
                 arch = process->GetTarget().GetArchitecture();
             }
-            std::auto_ptr<Platform> instance_ap(create_callback(process, &arch));
+            STD_UNIQUE_PTR(Platform) instance_ap(create_callback(process, &arch));
             if (instance_ap.get())
                 return instance_ap.release();
         }
@@ -118,7 +118,7 @@
     {
         for (uint32_t idx = 0; (create_callback = PluginManager::GetPlatformCreateCallbackAtIndex(idx)) != NULL; ++idx)
         {
-            std::auto_ptr<Platform> instance_ap(create_callback(process, false));
+            STD_UNIQUE_PTR(Platform) instance_ap(create_callback(process, false));
             if (instance_ap.get())
                 return instance_ap.release();
         }
diff --git a/source/Target/Process.cpp b/source/Target/Process.cpp
index c65ceb1..9ab9bc3 100644
--- a/source/Target/Process.cpp
+++ b/source/Target/Process.cpp
@@ -4440,7 +4440,7 @@
 {
     // First set up the Read Thread for reading/handling process I/O
     
-    std::auto_ptr<ConnectionFileDescriptor> conn_ap (new ConnectionFileDescriptor (file_descriptor, true));
+    STD_UNIQUE_PTR(ConnectionFileDescriptor) conn_ap (new ConnectionFileDescriptor (file_descriptor, true));
     
     if (conn_ap.get())
     {
diff --git a/source/Target/StackFrameList.cpp b/source/Target/StackFrameList.cpp
index dad67dc..41f5765 100644
--- a/source/Target/StackFrameList.cpp
+++ b/source/Target/StackFrameList.cpp
@@ -717,7 +717,7 @@
 }
 
 void
-StackFrameList::Merge (std::auto_ptr<StackFrameList>& curr_ap, lldb::StackFrameListSP& prev_sp)
+StackFrameList::Merge (STD_UNIQUE_PTR(StackFrameList)& curr_ap, lldb::StackFrameListSP& prev_sp)
 {
     Mutex::Locker curr_locker (curr_ap.get() ? &curr_ap->m_mutex : NULL);
     Mutex::Locker prev_locker (prev_sp.get() ? &prev_sp->m_mutex : NULL);
diff --git a/source/Target/Target.cpp b/source/Target/Target.cpp
index ea97fd7..8d3e19e 100644
--- a/source/Target/Target.cpp
+++ b/source/Target/Target.cpp
@@ -76,9 +76,9 @@
     m_valid (true),
     m_search_filter_sp (),
     m_image_search_paths (ImageSearchPathsChanged, this),
-    m_scratch_ast_context_ap (NULL),
-    m_scratch_ast_source_ap (NULL),
-    m_ast_importer_ap (NULL),
+    m_scratch_ast_context_ap (),
+    m_scratch_ast_source_ap (),
+    m_ast_importer_ap (),
     m_persistent_variables (),
     m_source_manager_ap(),
     m_stop_hooks (),
@@ -2143,7 +2143,7 @@
         m_target_sp (target_sp),
         m_commands (),
         m_specifier_sp (),
-        m_thread_spec_ap(NULL),
+        m_thread_spec_ap(),
         m_active (true)
 {
 }
@@ -2153,7 +2153,7 @@
         m_target_sp (rhs.m_target_sp),
         m_commands (rhs.m_commands),
         m_specifier_sp (rhs.m_specifier_sp),
-        m_thread_spec_ap (NULL),
+        m_thread_spec_ap (),
         m_active (rhs.m_active)
 {
     if (rhs.m_thread_spec_ap.get() != NULL)
diff --git a/source/Target/UnwindAssembly.cpp b/source/Target/UnwindAssembly.cpp
index af662b9..4901f6d 100644
--- a/source/Target/UnwindAssembly.cpp
+++ b/source/Target/UnwindAssembly.cpp
@@ -24,7 +24,7 @@
          (create_callback = PluginManager::GetUnwindAssemblyCreateCallbackAtIndex(idx)) != NULL;
          ++idx)
     {
-        std::auto_ptr<UnwindAssembly> assembly_profiler_ap (create_callback (arch));
+        STD_UNIQUE_PTR(UnwindAssembly) assembly_profiler_ap (create_callback (arch));
         if (assembly_profiler_ap.get ())
             return assembly_profiler_ap.release ();
     }
diff --git a/tools/debugserver/source/DNBDefs.h b/tools/debugserver/source/DNBDefs.h
index de8b99a..98b7310 100644
--- a/tools/debugserver/source/DNBDefs.h
+++ b/tools/debugserver/source/DNBDefs.h
@@ -26,11 +26,13 @@
 #include <memory>
 #define STD_SHARED_PTR(T) std::shared_ptr<T>
 #define STD_WEAK_PTR(T) std::weak_ptr<T>
+#define STD_UNIQUE_PTR(T) std::unique_ptr<T>
 #define STD_ENABLE_SHARED_FROM_THIS(T) std::enable_shared_from_this<T>
 #else
 #include <tr1/memory>
 #define STD_SHARED_PTR(T) std::tr1::shared_ptr<T>
 #define STD_WEAK_PTR(T) std::tr1::weak_ptr<T>
+#define STD_UNIQUE_PTR(T) std::auto_ptr<T>
 #define STD_ENABLE_SHARED_FROM_THIS(T) std::tr1::enable_shared_from_this<T>
 #endif
 
diff --git a/tools/debugserver/source/DNBTimer.h b/tools/debugserver/source/DNBTimer.h
index a78b80f..ac69d9a 100644
--- a/tools/debugserver/source/DNBTimer.h
+++ b/tools/debugserver/source/DNBTimer.h
@@ -16,7 +16,7 @@
 
 #include <sys/time.h>
 #include <stdint.h>
-#include <memory>
+#include "DNBDefs.h"
 #include "PThreadMutex.h"
 
 class DNBTimer
@@ -155,7 +155,7 @@
     //------------------------------------------------------------------
     // Classes that inherit from DNBTimer can see and modify these
     //------------------------------------------------------------------
-        std::auto_ptr<PThreadMutex> m_mutexAP;
+        STD_UNIQUE_PTR(PThreadMutex) m_mutexAP;
         struct timeval  m_timeval;
 };
 
diff --git a/tools/debugserver/source/MacOSX/MachThread.h b/tools/debugserver/source/MacOSX/MachThread.h
index 87643d9..27573c5 100644
--- a/tools/debugserver/source/MacOSX/MachThread.h
+++ b/tools/debugserver/source/MacOSX/MachThread.h
@@ -130,7 +130,7 @@
     int32_t                         m_suspend_count; // The current suspend count > 0 means we have suspended m_suspendCount times,
                                                     //                           < 0 means we have resumed it m_suspendCount times.
     MachException::Data             m_stop_exception; // The best exception that describes why this thread is stopped
-    std::auto_ptr<DNBArchProtocol>  m_arch_ap;      // Arch specific information for register state and more
+    STD_UNIQUE_PTR(DNBArchProtocol) m_arch_ap;      // Arch specific information for register state and more
     const DNBRegisterSetInfo *      m_reg_sets;      // Register set information for this thread
     nub_size_t                      m_num_reg_sets;
     thread_identifier_info_data_t   m_ident_info;
diff --git a/tools/driver/Driver.h b/tools/driver/Driver.h
index 357940b..cb69edc 100644
--- a/tools/driver/Driver.h
+++ b/tools/driver/Driver.h
@@ -160,7 +160,7 @@
     lldb_utility::PseudoTerminal m_editline_pty;
     FILE *m_editline_slave_fh;
     lldb::SBInputReader m_editline_reader;
-    std::auto_ptr<IOChannel> m_io_channel_ap;
+    STD_UNIQUE_PTR(IOChannel) m_io_channel_ap;
     OptionData m_option_data;
     bool m_waiting_for_command;
     bool m_done;
diff --git a/tools/lldb-platform/lldb-platform.cpp b/tools/lldb-platform/lldb-platform.cpp
index dd3c537..9d8a716 100644
--- a/tools/lldb-platform/lldb-platform.cpp
+++ b/tools/lldb-platform/lldb-platform.cpp
@@ -185,7 +185,7 @@
     GDBRemoteCommunicationServer gdb_server (true);
     if (!listen_host_port.empty())
     {
-        std::auto_ptr<ConnectionFileDescriptor> conn_ap(new ConnectionFileDescriptor());
+        STD_UNIQUE_PTR(ConnectionFileDescriptor) conn_ap(new ConnectionFileDescriptor());
         if (conn_ap.get())
         {
             std::string connect_url ("listen://");