svn commit: r293848 - in vendor/lldb/dist: include/lldb/Core include/lldb/Interpreter include/lldb/Symbol include/lldb/Target packages/Python/lldbsuite/test packages/Python/lldbsuite/test/api/multi...

Dimitry Andric dim at FreeBSD.org
Wed Jan 13 20:07:00 UTC 2016


Author: dim
Date: Wed Jan 13 20:06:56 2016
New Revision: 293848
URL: https://svnweb.freebsd.org/changeset/base/293848

Log:
  Vendor import of lldb trunk r257626:
  https://llvm.org/svn/llvm-project/lldb/trunk@257626

Added:
  vendor/lldb/dist/include/lldb/Core/LoadedModuleInfoList.h   (contents, props changed)
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/Makefile   (contents, props changed)
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/TestDebugBreak.py   (contents, props changed)
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/main.c   (contents, props changed)
  vendor/lldb/dist/packages/Python/lldbsuite/test/lang/objc/global_ptrs/
  vendor/lldb/dist/packages/Python/lldbsuite/test/lang/objc/global_ptrs/Makefile   (contents, props changed)
  vendor/lldb/dist/packages/Python/lldbsuite/test/lang/objc/global_ptrs/TestGlobalObjects.py   (contents, props changed)
  vendor/lldb/dist/packages/Python/lldbsuite/test/lang/objc/global_ptrs/main.m
Modified:
  vendor/lldb/dist/include/lldb/Interpreter/CommandReturnObject.h
  vendor/lldb/dist/include/lldb/Symbol/ClangASTContext.h
  vendor/lldb/dist/include/lldb/Symbol/CompilerDeclContext.h
  vendor/lldb/dist/include/lldb/Symbol/GoASTContext.h
  vendor/lldb/dist/include/lldb/Symbol/SymbolFile.h
  vendor/lldb/dist/include/lldb/Symbol/TypeSystem.h
  vendor/lldb/dist/include/lldb/Target/CPPLanguageRuntime.h
  vendor/lldb/dist/include/lldb/Target/Process.h
  vendor/lldb/dist/include/lldb/Target/SystemRuntime.h
  vendor/lldb/dist/include/lldb/Target/Thread.h
  vendor/lldb/dist/include/lldb/Target/ThreadPlanStepOut.h
  vendor/lldb/dist/packages/Python/lldbsuite/test/README-TestSuite
  vendor/lldb/dist/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/dosep.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/driver/batch_mode/TestBatchMode.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/driver/batch_mode/main.c
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/attach_resume/main.cpp
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/TestDataFormatterLanguageCategoryUpdates.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/inferior-assert/TestInferiorAssert.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/inline-stepping/TestInlineStepping.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/TestMiniDump.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/fizzbuzz.cpp
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/process_attach/main.cpp
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/process_group/main.c
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/register/main.cpp
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/main.cpp
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/thread/state/TestThreadStates.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/thread/thread_specific_break_plus_condition/TestThreadSpecificBpPlusCondition.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/unwind/noreturn/TestNoreturnUnwind.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/lldbinline.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/lldbtest.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/make/test_common.h
  vendor/lldb/dist/packages/Python/lldbsuite/test/python_api/disassemble-raw-data/TestDisassembleRawData.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/python_api/event/TestEvents.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/python_api/hello_world/main.c
  vendor/lldb/dist/packages/Python/lldbsuite/test/python_api/module_section/TestModuleAndSection.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/python_api/value/change_values/TestChangeValueAPI.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/python_api/value/linked_list/TestValueAPILinkedList.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/test_categories.py
  vendor/lldb/dist/packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
  vendor/lldb/dist/scripts/Python/python-typemaps.swig
  vendor/lldb/dist/source/Commands/CommandObjectProcess.cpp
  vendor/lldb/dist/source/Core/StringList.cpp
  vendor/lldb/dist/source/Host/common/HostInfoBase.cpp
  vendor/lldb/dist/source/Interpreter/CommandInterpreter.cpp
  vendor/lldb/dist/source/Interpreter/CommandReturnObject.cpp
  vendor/lldb/dist/source/Plugins/ABI/SysV-mips64/ABISysV_mips64.cpp
  vendor/lldb/dist/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp
  vendor/lldb/dist/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.h
  vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
  vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp
  vendor/lldb/dist/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.cpp
  vendor/lldb/dist/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h
  vendor/lldb/dist/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
  vendor/lldb/dist/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
  vendor/lldb/dist/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp
  vendor/lldb/dist/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h
  vendor/lldb/dist/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp
  vendor/lldb/dist/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
  vendor/lldb/dist/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
  vendor/lldb/dist/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h
  vendor/lldb/dist/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
  vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp
  vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.h
  vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp
  vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp
  vendor/lldb/dist/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp
  vendor/lldb/dist/source/Plugins/Process/Utility/InferiorCallPOSIX.h
  vendor/lldb/dist/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
  vendor/lldb/dist/source/Plugins/Process/Windows/Live/IDebugDelegate.h
  vendor/lldb/dist/source/Plugins/Process/Windows/Live/ProcessWindowsLive.cpp
  vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
  vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
  vendor/lldb/dist/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
  vendor/lldb/dist/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
  vendor/lldb/dist/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp
  vendor/lldb/dist/source/Plugins/Process/gdb-remote/ThreadGDBRemote.h
  vendor/lldb/dist/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
  vendor/lldb/dist/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h
  vendor/lldb/dist/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
  vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/DIERef.h
  vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
  vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
  vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
  vendor/lldb/dist/source/Plugins/SystemRuntime/MacOSX/SystemRuntimeMacOSX.cpp
  vendor/lldb/dist/source/Plugins/SystemRuntime/MacOSX/SystemRuntimeMacOSX.h
  vendor/lldb/dist/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp
  vendor/lldb/dist/source/Symbol/ClangASTContext.cpp
  vendor/lldb/dist/source/Symbol/CompilerDeclContext.cpp
  vendor/lldb/dist/source/Symbol/LineTable.cpp
  vendor/lldb/dist/source/Symbol/SymbolFile.cpp
  vendor/lldb/dist/source/Target/Process.cpp
  vendor/lldb/dist/source/Target/Thread.cpp
  vendor/lldb/dist/source/Target/ThreadPlanShouldStopHere.cpp
  vendor/lldb/dist/source/Target/ThreadPlanStepOut.cpp
  vendor/lldb/dist/source/Target/ThreadPlanStepOverRange.cpp
  vendor/lldb/dist/tools/debugserver/source/RNBRemote.cpp
  vendor/lldb/dist/tools/debugserver/source/RNBRemote.h
  vendor/lldb/dist/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp
  vendor/lldb/dist/www/lldb-coding-conventions.html
  vendor/lldb/dist/www/lldb-gdb.html
  vendor/lldb/dist/www/source.html

Added: vendor/lldb/dist/include/lldb/Core/LoadedModuleInfoList.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/lldb/dist/include/lldb/Core/LoadedModuleInfoList.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -0,0 +1,152 @@
+//===-- LoadedModuleInfoList.h ----------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_LoadedModuleInfoList_h_
+#define liblldb_LoadedModuleInfoList_h_
+
+// C Includes
+
+// C++ Includes
+#include <vector>
+
+// Other libraries and framework includes
+#include "lldb/lldb-private-forward.h"
+
+namespace lldb_private {
+class LoadedModuleInfoList
+{
+public:
+
+    class LoadedModuleInfo
+    {
+    public:
+
+        enum e_data_point
+        {
+            e_has_name      = 0,
+            e_has_base      ,
+            e_has_dynamic   ,
+            e_has_link_map  ,
+            e_num
+        };
+
+        LoadedModuleInfo ()
+        {
+            for (uint32_t i = 0; i < e_num; ++i)
+                m_has[i] = false;
+        };
+
+        void set_name (const std::string & name)
+        {
+            m_name = name;
+            m_has[e_has_name] = true;
+        }
+        bool get_name (std::string & out) const
+        {
+            out = m_name;
+            return m_has[e_has_name];
+        }
+
+        void set_base (const lldb::addr_t base)
+        {
+            m_base = base;
+            m_has[e_has_base] = true;
+        }
+        bool get_base (lldb::addr_t & out) const
+        {
+            out = m_base;
+            return m_has[e_has_base];
+        }
+
+        void set_base_is_offset (bool is_offset)
+        {
+            m_base_is_offset = is_offset;
+        }
+        bool get_base_is_offset(bool & out) const
+        {
+            out = m_base_is_offset;
+            return m_has[e_has_base];
+        }
+
+        void set_link_map (const lldb::addr_t addr)
+        {
+            m_link_map = addr;
+            m_has[e_has_link_map] = true;
+        }
+        bool get_link_map (lldb::addr_t & out) const
+        {
+            out = m_link_map;
+            return m_has[e_has_link_map];
+        }
+
+        void set_dynamic (const lldb::addr_t addr)
+        {
+            m_dynamic = addr;
+            m_has[e_has_dynamic] = true;
+        }
+        bool get_dynamic (lldb::addr_t & out) const
+        {
+            out = m_dynamic;
+            return m_has[e_has_dynamic];
+        }
+
+        bool has_info (e_data_point datum) const
+        {
+            assert (datum < e_num);
+            return m_has[datum];
+        }
+
+        bool
+        operator == (LoadedModuleInfo const &rhs) const
+        {
+            if (e_num != rhs.e_num)
+                return false;
+
+            for (size_t i = 0; i < e_num; ++i)
+            {
+                if (m_has[i] != rhs.m_has[i])
+                    return false;
+            }
+
+            return (m_base == rhs.m_base) &&
+                   (m_link_map == rhs.m_link_map) &&
+                   (m_dynamic == rhs.m_dynamic) &&
+                   (m_name == rhs.m_name);
+        }
+    protected:
+
+        bool m_has[e_num];
+        std::string m_name;
+        lldb::addr_t m_link_map;
+        lldb::addr_t m_base;
+        bool m_base_is_offset;
+        lldb::addr_t m_dynamic;
+    };
+
+    LoadedModuleInfoList ()
+        : m_list ()
+        , m_link_map (LLDB_INVALID_ADDRESS)
+    {}
+
+    void add (const LoadedModuleInfo & mod)
+    {
+        m_list.push_back (mod);
+    }
+
+    void clear ()
+    {
+        m_list.clear ();
+    }
+
+    std::vector<LoadedModuleInfo> m_list;
+    lldb::addr_t m_link_map;
+};
+} // namespace lldb_private
+
+#endif  // liblldb_LoadedModuleInfoList_h_

Modified: vendor/lldb/dist/include/lldb/Interpreter/CommandReturnObject.h
==============================================================================
--- vendor/lldb/dist/include/lldb/Interpreter/CommandReturnObject.h	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/include/lldb/Interpreter/CommandReturnObject.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -169,6 +169,18 @@ public:
     
     void
     SetInteractive (bool b);
+    
+    bool
+    GetAbnormalStopWasExpected() const
+    {
+        return m_abnormal_stop_was_expected;
+    }
+    
+    void
+    SetAbnormalStopWasExpected(bool signal_was_expected)
+    {
+        m_abnormal_stop_was_expected = signal_was_expected;
+    }
 
 private:
     enum 
@@ -182,7 +194,13 @@ private:
     
     lldb::ReturnStatus m_status;
     bool m_did_change_process_state;
-    bool m_interactive; // If true, then the input handle from the debugger will be hooked up
+    bool m_interactive;          // If true, then the input handle from the debugger will be hooked up
+    bool m_abnormal_stop_was_expected;  // This is to support eHandleCommandFlagStopOnCrash vrs. attach.
+                                        // The attach command often ends up with the process stopped due to a signal.
+                                        // Normally that would mean stop on crash should halt batch execution, but we
+                                        // obviously don't want that for attach.  Using this flag, the attach command
+                                        // (and anything else for which this is relevant) can say that the signal is
+                                        // expected, and batch command execution can continue.
 };
 
 } // namespace lldb_private

Modified: vendor/lldb/dist/include/lldb/Symbol/ClangASTContext.h
==============================================================================
--- vendor/lldb/dist/include/lldb/Symbol/ClangASTContext.h	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/include/lldb/Symbol/ClangASTContext.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -573,6 +573,9 @@ public:
     ConstString
     DeclContextGetName (void *opaque_decl_ctx) override;
 
+    ConstString
+    DeclContextGetScopeQualifiedName (void *opaque_decl_ctx) override;
+
     bool
     DeclContextIsClassMethod (void *opaque_decl_ctx,
                               lldb::LanguageType *language_ptr,

Modified: vendor/lldb/dist/include/lldb/Symbol/CompilerDeclContext.h
==============================================================================
--- vendor/lldb/dist/include/lldb/Symbol/CompilerDeclContext.h	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/include/lldb/Symbol/CompilerDeclContext.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -128,6 +128,9 @@ public:
     ConstString
     GetName () const;
 
+    ConstString
+    GetScopeQualifiedName() const;
+
     bool
     IsStructUnionOrClass () const;
 

Modified: vendor/lldb/dist/include/lldb/Symbol/GoASTContext.h
==============================================================================
--- vendor/lldb/dist/include/lldb/Symbol/GoASTContext.h	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/include/lldb/Symbol/GoASTContext.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -112,6 +112,12 @@ class GoASTContext : public TypeSystem
         return ConstString();
     }
 
+    ConstString
+    DeclContextGetScopeQualifiedName(void *opaque_decl_ctx) override
+    {
+        return ConstString();
+    }
+
     bool
     DeclContextIsClassMethod(void *opaque_decl_ctx, lldb::LanguageType *language_ptr, bool *is_instance_method_ptr,
                              ConstString *language_object_name_ptr) override

Modified: vendor/lldb/dist/include/lldb/Symbol/SymbolFile.h
==============================================================================
--- vendor/lldb/dist/include/lldb/Symbol/SymbolFile.h	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/include/lldb/Symbol/SymbolFile.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -144,6 +144,7 @@ public:
     virtual uint32_t        FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, TypeMap& types);
     virtual size_t          FindTypes (const std::vector<CompilerContext> &context, bool append, TypeMap& types);
 
+    virtual void            GetMangledNamesForFunction(const std::string &scope_qualified_name, std::vector<ConstString> &mangled_names);
 //  virtual uint32_t        FindTypes (const SymbolContext& sc, const RegularExpression& regex, bool append, uint32_t max_matches, TypeList& types) = 0;
     virtual TypeList *      GetTypeList ();
     virtual size_t          GetTypes (lldb_private::SymbolContextScope *sc_scope,

Modified: vendor/lldb/dist/include/lldb/Symbol/TypeSystem.h
==============================================================================
--- vendor/lldb/dist/include/lldb/Symbol/TypeSystem.h	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/include/lldb/Symbol/TypeSystem.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -151,6 +151,9 @@ public:
     virtual ConstString
     DeclContextGetName (void *opaque_decl_ctx) = 0;
 
+    virtual ConstString
+    DeclContextGetScopeQualifiedName (void *opaque_decl_ctx) = 0;
+
     virtual bool
     DeclContextIsClassMethod (void *opaque_decl_ctx,
                               lldb::LanguageType *language_ptr,

Modified: vendor/lldb/dist/include/lldb/Target/CPPLanguageRuntime.h
==============================================================================
--- vendor/lldb/dist/include/lldb/Target/CPPLanguageRuntime.h	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/include/lldb/Target/CPPLanguageRuntime.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -42,9 +42,6 @@ public:
     bool
     GetObjectDescription(Stream &str, Value &value, ExecutionContextScope *exe_scope) override;
     
-    virtual size_t
-    GetAlternateManglings(const ConstString &mangled, std::vector<ConstString> &alternates) = 0;
-
 protected:
 
     //------------------------------------------------------------------

Modified: vendor/lldb/dist/include/lldb/Target/Process.h
==============================================================================
--- vendor/lldb/dist/include/lldb/Target/Process.h	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/include/lldb/Target/Process.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -30,6 +30,7 @@
 #include "lldb/Core/Communication.h"
 #include "lldb/Core/Error.h"
 #include "lldb/Core/Event.h"
+#include "lldb/Core/LoadedModuleInfoList.h"
 #include "lldb/Core/ThreadSafeValue.h"
 #include "lldb/Core/PluginInterface.h"
 #include "lldb/Core/StructuredData.h"
@@ -1152,6 +1153,12 @@ public:
         return 0;
     }
 
+    virtual size_t
+    LoadModules (LoadedModuleInfoList &)
+    {
+       return 0;
+    }
+
 protected:
     virtual JITLoaderList &
     GetJITLoaders ();
@@ -3149,6 +3156,34 @@ public:
     void
     ResetImageToken(size_t token);
 
+    //------------------------------------------------------------------
+    /// Find the next branch instruction to set a breakpoint on
+    ///
+    /// When instruction stepping through a source line, instead of 
+    /// stepping through each instruction, we can put a breakpoint on
+    /// the next branch instruction (within the range of instructions
+    /// we are stepping through) and continue the process to there,
+    /// yielding significant performance benefits over instruction
+    /// stepping.  
+    ///
+    /// @param[in] default_stop_addr
+    ///     The address of the instruction where lldb would put a 
+    ///     breakpoint normally.
+    ///
+    /// @param[in] range_bounds
+    ///     The range which the breakpoint must be contained within.
+    ///     Typically a source line.
+    ///
+    /// @return
+    ///     The address of the next branch instruction, or the end of
+    ///     the range provided in range_bounds.  If there are any
+    ///     problems with the disassembly or getting the instructions,
+    ///     the original default_stop_addr will be returned.
+    //------------------------------------------------------------------
+    Address
+    AdvanceAddressToNextBranchInstruction (Address default_stop_addr, 
+                                           AddressRange range_bounds);
+
 protected:
     void
     SetState (lldb::EventSP &event_sp);

Modified: vendor/lldb/dist/include/lldb/Target/SystemRuntime.h
==============================================================================
--- vendor/lldb/dist/include/lldb/Target/SystemRuntime.h	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/include/lldb/Target/SystemRuntime.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -275,6 +275,23 @@ public:
         return LLDB_INVALID_ADDRESS;
     }
 
+
+    //------------------------------------------------------------------
+    /// Retrieve the Queue kind for the queue at a thread's dispatch_qaddr.
+    ///
+    /// Retrieve the Queue kind - either eQueueKindSerial or 
+    /// eQueueKindConcurrent, indicating that this queue processes work
+    /// items serially or concurrently.
+    ///
+    /// @return
+    ///     The Queue kind, if it could be read, else eQueueKindUnknown.
+    //------------------------------------------------------------------
+    virtual lldb::QueueKind
+    GetQueueKind (lldb::addr_t dispatch_qaddr)
+    {
+        return lldb::eQueueKindUnknown;
+    }
+
     //------------------------------------------------------------------
     /// Get the pending work items for a libdispatch Queue
     ///

Modified: vendor/lldb/dist/include/lldb/Target/Thread.h
==============================================================================
--- vendor/lldb/dist/include/lldb/Target/Thread.h	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/include/lldb/Target/Thread.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -367,6 +367,35 @@ public:
     }
 
     //------------------------------------------------------------------
+    /// Whether this thread can be associated with a libdispatch queue
+    /// 
+    /// The Thread may know if it is associated with a libdispatch queue,
+    /// it may know definitively that it is NOT associated with a libdispatch
+    /// queue, or it may be unknown whether it is associated with a libdispatch
+    /// queue.  
+    ///
+    /// @return
+    ///     eLazyBoolNo if this thread is definitely not associated with a
+    ///     libdispatch queue (e.g. on a non-Darwin system where GCD aka 
+    ///     libdispatch is not available).
+    ///
+    ///     eLazyBoolYes this thread is associated with a libdispatch queue.
+    ///
+    ///     eLazyBoolCalculate this thread may be associated with a libdispatch 
+    ///     queue but the thread doesn't know one way or the other.
+    //------------------------------------------------------------------
+    virtual lldb_private::LazyBool
+    GetAssociatedWithLibdispatchQueue ()
+    {
+        return eLazyBoolNo;
+    }
+
+    virtual void
+    SetAssociatedWithLibdispatchQueue (lldb_private::LazyBool associated_with_libdispatch_queue)
+    {
+    }
+
+    //------------------------------------------------------------------
     /// Retrieve the Queue ID for the queue currently using this Thread
     ///
     /// If this Thread is doing work on behalf of a libdispatch/GCD queue,
@@ -414,6 +443,29 @@ public:
     }
 
     //------------------------------------------------------------------
+    /// Retrieve the Queue kind for the queue currently using this Thread
+    ///
+    /// If this Thread is doing work on behalf of a libdispatch/GCD queue,
+    /// retrieve the Queue kind - either eQueueKindSerial or 
+    /// eQueueKindConcurrent, indicating that this queue processes work
+    /// items serially or concurrently.
+    ///
+    /// @return
+    ///     The Queue kind, if the Thread subclass implements this, else
+    ///     eQueueKindUnknown.
+    //------------------------------------------------------------------
+    virtual lldb::QueueKind
+    GetQueueKind ()
+    {
+        return lldb::eQueueKindUnknown;
+    }
+
+    virtual void
+    SetQueueKind (lldb::QueueKind kind)
+    {
+    }
+
+    //------------------------------------------------------------------
     /// Retrieve the Queue for this thread, if any.
     ///
     /// @return
@@ -451,6 +503,30 @@ public:
         return LLDB_INVALID_ADDRESS;
     }
 
+    virtual void
+    SetQueueLibdispatchQueueAddress (lldb::addr_t dispatch_queue_t)
+    {
+    }
+
+    //------------------------------------------------------------------
+    /// Whether this Thread already has all the Queue information cached or not
+    ///
+    /// A Thread may be associated with a libdispatch work Queue at a given
+    /// public stop event.  If so, the thread can satisify requests like
+    /// GetQueueLibdispatchQueueAddress, GetQueueKind, GetQueueName, and GetQueueID
+    /// either from information from the remote debug stub when it is initially
+    /// created, or it can query the SystemRuntime for that information.
+    ///
+    /// This method allows the SystemRuntime to discover if a thread has this
+    /// information already, instead of calling the thread to get the information
+    /// and having the thread call the SystemRuntime again.
+    //------------------------------------------------------------------
+    virtual bool
+    ThreadHasQueueInformation () const
+    {
+        return false;
+    }
+
     virtual uint32_t
     GetStackFrameCount()
     {
@@ -888,6 +964,16 @@ public:
     /// @param[in] run_vote
     ///    See standard meanings for the stop & run votes in ThreadPlan.h.
     ///
+    /// @param[in] continue_to_next_branch
+    ///    Normally this will enqueue a plan that will put a breakpoint on the return address and continue
+    ///    to there.  If continue_to_next_branch is true, this is an operation not involving the user -- 
+    ///    e.g. stepping "next" in a source line and we instruction stepped into another function -- 
+    ///    so instead of putting a breakpoint on the return address, advance the breakpoint to the 
+    ///    end of the source line that is doing the call, or until the next flow control instruction.
+    ///    If the return value from the function call is to be retrieved / displayed to the user, you must stop
+    ///    on the return address.  The return value may be stored in volatile registers which are overwritten
+    ///    before the next branch instruction.
+    ///
     /// @return
     ///     A shared pointer to the newly queued thread plan, or nullptr if the plan could not be queued.
     //------------------------------------------------------------------
@@ -898,7 +984,8 @@ public:
                                            bool stop_other_threads,
                                            Vote stop_vote, // = eVoteYes,
                                            Vote run_vote, // = eVoteNoOpinion);
-                                           uint32_t frame_idx);
+                                           uint32_t frame_idx,
+                                           bool continue_to_next_branch = false);
 
     //------------------------------------------------------------------
     /// Gets the plan used to step through the code that steps from a function

Modified: vendor/lldb/dist/include/lldb/Target/ThreadPlanStepOut.h
==============================================================================
--- vendor/lldb/dist/include/lldb/Target/ThreadPlanStepOut.h	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/include/lldb/Target/ThreadPlanStepOut.h	Wed Jan 13 20:06:56 2016	(r293848)
@@ -31,7 +31,8 @@ public:
                        Vote stop_vote,
                        Vote run_vote,
                        uint32_t frame_idx,
-                       LazyBool step_out_avoids_code_without_debug_info);
+                       LazyBool step_out_avoids_code_without_debug_info,
+                       bool continue_to_next_branch = false);
 
     ~ThreadPlanStepOut() override;
 

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/README-TestSuite
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/README-TestSuite	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/README-TestSuite	Wed Jan 13 20:06:56 2016	(r293848)
@@ -157,3 +157,10 @@ o Writing test cases:
  then use SBInterpreter::HandleCommand to run the command.  You get the full result text 
  from the command in the command return object, and all the part where you are driving the 
  debugger to the point you want to test will be more robust.
+
+o Attaching in test cases:
+
+ If you need to attach to inferiors in your tests, you must make sure the inferior calls
+ lldb_enable_attach(), before the debugger attempts to attach. This function performs any
+ platform-specific processing needed to enable attaching to this process (e.g., on Linux, we
+ execute prctl(PR_SET_TRACER) syscall to disable protections present in some Linux systems).

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py	Wed Jan 13 20:06:56 2016	(r293848)
@@ -51,7 +51,7 @@ class SBBreakpointCallbackCase(TestBase)
     @skipIfNoSBHeaders
     @skipIfWindows # clang-cl does not support throw or catch (llvm.org/pr24538)
     @expectedFlakeyFreeBSD
-    @expectedFlakeyLinux
+    @expectedFailureLinux
     def test_sb_api_listener_resume(self):
         """ Test that a process can be resumed from a non-main thread. """
         self.build_and_test('driver.cpp listener_test.cpp test_listener_resume.cpp',

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/dosep.py
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/dosep.py	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/dosep.py	Wed Jan 13 20:06:56 2016	(r293848)
@@ -1149,11 +1149,6 @@ def getExpectedTimeouts(platform_name):
             "TestExitDuringStep.py",
             "TestHelloWorld.py",
         }
-        if host.startswith("win32"):
-            expected_timeout |= {
-                "TestEvents.py",
-                "TestThreadStates.py",
-            }
     elif target.startswith("freebsd"):
         expected_timeout |= {
             "TestBreakpointConditions.py",

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/driver/batch_mode/TestBatchMode.py
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/driver/batch_mode/TestBatchMode.py	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/driver/batch_mode/TestBatchMode.py	Wed Jan 13 20:06:56 2016	(r293848)
@@ -14,21 +14,12 @@ class DriverBatchModeTest (TestBase):
 
     mydir = TestBase.compute_mydir(__file__)
 
-    @skipIfRemote # test not remote-ready llvm.org/pr24813
-    @expectedFlakeyFreeBSD("llvm.org/pr25172 fails rarely on the buildbot")
-    @expectedFlakeyLinux("llvm.org/pr25172")
-    @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows")
-    def test_driver_batch_mode(self):
-        """Test that the lldb driver's batch mode works correctly."""
-        self.build()
-        self.setTearDownCleanup()
-        self.batch_mode()
-
     def setUp(self):
         # Call super's setUp().
         TestBase.setUp(self)
         # Our simple source filename.
         self.source = 'main.c'
+        self.victim = None
 
     def expect_string (self, string):
         import pexpect
@@ -40,12 +31,20 @@ class DriverBatchModeTest (TestBase):
         except pexpect.TIMEOUT:
             self.fail ("Timed out waiting for '%s'"%(string))
 
-    def batch_mode (self):
+    @skipIfRemote # test not remote-ready llvm.org/pr24813
+    @expectedFlakeyFreeBSD("llvm.org/pr25172 fails rarely on the buildbot")
+    @expectedFlakeyLinux("llvm.org/pr25172")
+    @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows")
+    def test_batch_mode_run_crash (self):
+        """Test that the lldb driver's batch mode works correctly."""
+        self.build()
+        self.setTearDownCleanup()
+
         import pexpect
         exe = os.path.join(os.getcwd(), "a.out")
         prompt = "(lldb) "
 
-        # First time through, pass CRASH so the process will crash and stop in batch mode.
+        # Pass CRASH so the process will crash and stop in batch mode.
         run_commands = ' -b -o "break set -n main" -o "run" -o "continue" -k "frame var touch_me_not"'
         self.child = pexpect.spawn('%s %s %s %s -- CRASH' % (lldbtest_config.lldbExec, self.lldbOption, run_commands, exe))
         child = self.child
@@ -68,7 +67,21 @@ class DriverBatchModeTest (TestBase):
         
         self.deletePexpectChild()
 
-        # Now do it again, and see make sure if we don't crash, we quit:
+
+    @skipIfRemote # test not remote-ready llvm.org/pr24813
+    @expectedFlakeyFreeBSD("llvm.org/pr25172 fails rarely on the buildbot")
+    @expectedFlakeyLinux("llvm.org/pr25172")
+    @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows")
+    def test_batch_mode_run_exit (self):
+        """Test that the lldb driver's batch mode works correctly."""
+        self.build()
+        self.setTearDownCleanup()
+
+        import pexpect
+        exe = os.path.join(os.getcwd(), "a.out")
+        prompt = "(lldb) "
+
+        # Now do it again, and make sure if we don't crash, we quit:
         run_commands = ' -b -o "break set -n main" -o "run" -o "continue" '
         self.child = pexpect.spawn('%s %s %s %s -- NOCRASH' % (lldbtest_config.lldbExec, self.lldbOption, run_commands, exe))
         child = self.child
@@ -87,3 +100,69 @@ class DriverBatchModeTest (TestBase):
         index = self.child.expect([pexpect.EOF, pexpect.TIMEOUT])
         self.assertTrue(index == 0, "lldb didn't close on successful batch completion.")
 
+    def closeVictim(self):
+        if self.victim != None:
+            self.victim.close()
+            self.victim = None
+
+    @skipIfRemote # test not remote-ready llvm.org/pr24813
+    @expectedFlakeyFreeBSD("llvm.org/pr25172 fails rarely on the buildbot")
+    @expectedFlakeyLinux("llvm.org/pr25172")
+    @expectedFailureWindows("llvm.org/pr22274: need a pexpect replacement for windows")
+    def test_batch_mode_attach_exit (self):
+        """Test that the lldb driver's batch mode works correctly."""
+        self.build()
+        self.setTearDownCleanup()
+ 
+        import pexpect
+        exe = os.path.join(os.getcwd(), "a.out")
+        prompt = "(lldb) "
+
+        # Finally, start up the process by hand, attach to it, and wait for its completion.
+        # Attach is funny, since it looks like it stops with a signal on most Unixen so 
+        # care must be taken not to treat that as a reason to exit batch mode.
+        
+        # Start up the process by hand and wait for it to get to the wait loop.
+
+        self.victim = pexpect.spawn('%s WAIT' %(exe))
+        if self.victim == None:
+            self.fail("Could not spawn ", exe, ".")
+
+        self.addTearDownHook (self.closeVictim)
+
+        if self.TraceOn():
+            self.victim.logfile_read = sys.stdout
+
+        self.victim.expect("PID: ([0-9]+) END")
+        if self.victim.match == None:
+            self.fail("Couldn't get the target PID.")
+
+        victim_pid = int(self.victim.match.group(1))
+        
+        self.victim.expect("Waiting")
+
+        run_commands = ' -b -o "process attach -p %d" -o "breakpoint set --file %s -p \'Stop here to unset keep_waiting\' -N keep_waiting" -o "continue" -o "break delete keep_waiting" -o "expr keep_waiting = 0" -o "continue" ' % (victim_pid, self.source)
+        self.child = pexpect.spawn('%s %s %s %s' % (lldbtest_config.lldbExec, self.lldbOption, run_commands, exe))
+
+        child = self.child
+        # Turn on logging for what the child sends back.
+        if self.TraceOn():
+            child.logfile_read = sys.stdout
+
+        # We should see the "run":
+        self.expect_string ("attach")
+
+        self.expect_string(prompt + "continue")
+
+        self.expect_string(prompt + "continue")
+
+        # Then we should see the process exit:
+        self.expect_string ("Process %d exited with status"%(victim_pid))
+        
+        victim_index = self.victim.expect([pexpect.EOF, pexpect.TIMEOUT])
+        self.assertTrue(victim_index == 0, "Victim didn't really exit.")
+
+        index = self.child.expect([pexpect.EOF, pexpect.TIMEOUT])
+        self.assertTrue(index == 0, "lldb didn't close on successful batch completion.")
+
+        

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/driver/batch_mode/main.c
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/driver/batch_mode/main.c	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/driver/batch_mode/main.c	Wed Jan 13 20:06:56 2016	(r293848)
@@ -1,10 +1,36 @@
 #include <stdio.h>
 #include <string.h>
+#include <unistd.h>
 
 int 
 main (int argc, char **argv)
 {
-    if (argc >= 2 && strcmp (argv[1], "CRASH") == 0)
+    lldb_enable_attach();
+
+    int do_crash = 0;
+    int do_wait = 0;
+
+    int idx;
+    for (idx = 1; idx < argc; idx++)
+    {
+        if (strcmp(argv[idx], "CRASH") == 0)
+            do_crash = 1;
+        if (strcmp(argv[idx], "WAIT") == 0)
+            do_wait = 1;
+    }
+    printf("PID: %d END\n", getpid());
+
+    if (do_wait)
+    {
+        int keep_waiting = 1;
+        while (keep_waiting)
+        {
+            printf ("Waiting\n");
+            sleep(1); // Stop here to unset keep_waiting
+        }
+    }
+
+    if (do_crash)
     {
       char *touch_me_not = (char *) 0;
       printf ("About to crash.\n");

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/attach_resume/main.cpp
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/attach_resume/main.cpp	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/attach_resume/main.cpp	Wed Jan 13 20:06:56 2016	(r293848)
@@ -4,10 +4,6 @@
 #include <chrono>
 #include <thread>
 
-#if defined(__linux__)
-#include <sys/prctl.h>
-#endif
-
 volatile bool debugger_flag = true; // The debugger will flip this to false
 
 void *start(void *data)
@@ -25,18 +21,7 @@ void *start(void *data)
 
 int main(int argc, char const *argv[])
 {
-#if defined(__linux__)
-    // Immediately enable any ptracer so that we can allow the stub attach
-    // operation to succeed.  Some Linux kernels are locked down so that
-    // only an ancestor process can be a ptracer of a process.  This disables that
-    // restriction.  Without it, attach-related stub tests will fail.
-#if defined(PR_SET_PTRACER) && defined(PR_SET_PTRACER_ANY)
-    // For now we execute on best effort basis.  If this fails for
-    // some reason, so be it.
-    const int prctl_result = prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
-    static_cast<void> (prctl_result);
-#endif
-#endif
+    lldb_enable_attach();
 
     static const size_t nthreads = 16;
     std::thread threads[nthreads];

Added: vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/Makefile	Wed Jan 13 20:06:56 2016	(r293848)
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+
+C_SOURCES := main.c
+
+include $(LEVEL)/Makefile.rules

Added: vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/TestDebugBreak.py
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/TestDebugBreak.py	Wed Jan 13 20:06:56 2016	(r293848)
@@ -0,0 +1,51 @@
+"""
+Test embedded breakpoints, like `asm int 3;` in x86 or or `__debugbreak` on Windows.
+"""
+
+from __future__ import print_function
+
+import os
+import lldb
+from lldbsuite.test.lldbtest import *
+import lldbsuite.test.lldbutil as lldbutil
+
+class DebugBreakTestCase(TestBase):
+
+    mydir = TestBase.compute_mydir(__file__)
+
+    @skipIf(archs=not_in(["i386", "i686"]))
+    @no_debug_info_test
+    def test_asm_int_3(self):
+        """Test that intrinsics like `__debugbreak();` and `asm {"int3"}` are treated like breakpoints."""
+        self.build()
+        exe = os.path.join(os.getcwd(), "a.out")
+
+        # Run the program.
+        target = self.dbg.CreateTarget(exe)
+        process = target.LaunchSimple(None, None, self.get_process_working_directory())
+
+        # We've hit the first stop, so grab the frame.
+        self.assertEqual(process.GetState(), lldb.eStateStopped)
+        thread = process.GetThreadAtIndex(0)
+        frame = thread.GetFrameAtIndex(0)
+
+        # We should be in funciton 'bar'.
+        self.assertTrue(frame.IsValid())
+        function_name = frame.GetFunctionName()
+        self.assertTrue('bar' in function_name)
+
+        # We should be able to evaluate the parameter foo.
+        value = frame.EvaluateExpression('*foo')
+        self.assertEqual(value.GetValueAsSigned(), 42)
+
+        # The counter should be 1 at the first stop and increase by 2 for each
+        # subsequent stop.
+        counter = 1
+        while counter < 20:
+          value = frame.EvaluateExpression('count')
+          self.assertEqual(value.GetValueAsSigned(), counter)
+          counter += 2
+          process.Continue()
+
+        # The inferior should exit after the last iteration.
+        self.assertEqual(process.GetState(), lldb.eStateExited)

Added: vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/main.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak/main.c	Wed Jan 13 20:06:56 2016	(r293848)
@@ -0,0 +1,29 @@
+#ifdef _MSC_VER
+#include <intrin.h>
+#define BREAKPOINT_INTRINSIC()    __debugbreak()
+#else
+#define BREAKPOINT_INTRINSIC()    __asm__ __volatile__ ("int3")
+#endif
+
+int
+bar(int const *foo)
+{
+    int count = 0, i = 0;
+    for (; i < 10; ++i)
+    {
+        count += 1;
+        BREAKPOINT_INTRINSIC();
+        count += 1;
+    }
+    return *foo;
+}
+
+int
+main(int argc, char **argv)
+{
+    int foo = 42;
+    bar(&foo);
+    return 0;
+}
+
+

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/TestDataFormatterLanguageCategoryUpdates.py
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/TestDataFormatterLanguageCategoryUpdates.py	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/data-formatter/language_category_updates/TestDataFormatterLanguageCategoryUpdates.py	Wed Jan 13 20:06:56 2016	(r293848)
@@ -21,7 +21,6 @@ class LanguageCategoryUpdatesTestCase(Te
         # Find the line number to break at.
         self.line = line_number('main.cpp', '// break here')
 
-    @expectedFailureWindows("llvm.org/pr24462") # Data formatters have problems on Windows
     def test_with_run_command(self):
         """Test that LLDB correctly cleans caches when language categories change."""
         # This is the function to remove the custom formats in order to have a

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/inferior-assert/TestInferiorAssert.py
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/inferior-assert/TestInferiorAssert.py	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/inferior-assert/TestInferiorAssert.py	Wed Jan 13 20:06:56 2016	(r293848)
@@ -16,6 +16,7 @@ class AssertingInferiorTestCase(TestBase
 
     @expectedFailureWindows("llvm.org/pr21793: need to implement support for detecting assertion / abort on Windows")
     @expectedFailurei386("llvm.org/pr25338")
+    @expectedFailureLinux("llvm.org/pr25338", archs=['arm', 'i386'])
     def test_inferior_asserting(self):
         """Test that lldb reliably catches the inferior asserting (command)."""
         self.build()
@@ -30,6 +31,7 @@ class AssertingInferiorTestCase(TestBase
 
     @expectedFailureWindows("llvm.org/pr21793: need to implement support for detecting assertion / abort on Windows")
     @expectedFailurei386("llvm.org/pr25338")
+    @expectedFailureLinux("llvm.org/pr25338", archs=['arm', 'i386'])
     def test_inferior_asserting_disassemble(self):
         """Test that lldb reliably disassembles frames after asserting (command)."""
         self.build()
@@ -44,6 +46,7 @@ class AssertingInferiorTestCase(TestBase
 
     @expectedFailureWindows("llvm.org/pr21793: need to implement support for detecting assertion / abort on Windows")
     @expectedFailurei386("llvm.org/pr25338")
+    @expectedFailureLinux("llvm.org/pr25338", archs=['arm', 'i386'])
     def test_inferior_asserting_expr(self):
         """Test that the lldb expression interpreter can read from the inferior after asserting (command)."""
         self.build()
@@ -51,6 +54,7 @@ class AssertingInferiorTestCase(TestBase
 
     @expectedFailureWindows("llvm.org/pr21793: need to implement support for detecting assertion / abort on Windows")
     @expectedFailurei386("llvm.org/pr25338")
+    @expectedFailureLinux("llvm.org/pr25338", archs=['arm', 'i386'])
     def test_inferior_asserting_step(self):
         """Test that lldb functions correctly after stepping through a call to assert()."""
         self.build()

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/inline-stepping/TestInlineStepping.py
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/inline-stepping/TestInlineStepping.py	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/inline-stepping/TestInlineStepping.py	Wed Jan 13 20:06:56 2016	(r293848)
@@ -16,7 +16,6 @@ class TestInlineStepping(TestBase):
     @add_test_categories(['pyapi'])
     @expectedFailureFreeBSD('llvm.org/pr17214')
     @expectedFailureIcc # Not really a bug.  ICC combines two inlined functions.
-    @expectedFailureWindows("llvm.org/pr24778")
     # failed 1/365 dosep runs, (i386-clang), TestInlineStepping.py:237 failed to stop at first breakpoint in main
     @expectedFailureAll(oslist=["linux"], archs=["i386"])
     def test_with_python_api(self):

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/TestMiniDump.py
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/TestMiniDump.py	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/TestMiniDump.py	Wed Jan 13 20:06:56 2016	(r293848)
@@ -3,7 +3,7 @@ Test basics of mini dump debugging.
 """
 
 from __future__ import print_function
-
+from six import iteritems
 
 
 import lldb
@@ -83,8 +83,8 @@ class MiniDumpTestCase(TestBase):
             thread = process.GetThreadAtIndex(0)
 
             expected_stack = { 0: 'bar', 1: 'foo', 2: 'main' }
-            self.assertEqual(thread.GetNumFrames(), len(expected_stack))
-            for index, name in expected_stack.iteritems():
+            self.assertGreaterEqual(thread.GetNumFrames(), len(expected_stack))
+            for index, name in iteritems(expected_stack):
                 frame = thread.GetFrameAtIndex(index)
                 self.assertTrue(frame.IsValid())
                 function_name = frame.GetFunctionName()

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/fizzbuzz.cpp
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/fizzbuzz.cpp	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/postmortem/minidump/fizzbuzz.cpp	Wed Jan 13 20:06:56 2016	(r293848)
@@ -1,31 +1,31 @@
-// A sample program for getting minidumps on Windows.
-
-#include <iostream>
-
-bool
-fizz(int x)
-{
-    return x % 3 == 0;
-}
-
-bool
-buzz(int x)
-{
-    return x % 5 == 0;
-}
-
-int
-main()
-{
-    int *buggy = 0;
-
-    for (int i = 1; i <= 100; ++i)
-    {
-        if (fizz(i)) std::cout << "fizz";
-        if (buzz(i)) std::cout << "buzz";
-        if (!fizz(i) && !buzz(i)) std::cout << i;
-        std::cout << '\n';
-    }
-
-    return *buggy;
-}
+// A sample program for getting minidumps on Windows.
+
+#include <iostream>
+
+bool
+fizz(int x)
+{
+    return x % 3 == 0;
+}
+
+bool
+buzz(int x)
+{
+    return x % 5 == 0;
+}
+
+int
+main()
+{
+    int *buggy = 0;
+
+    for (int i = 1; i <= 100; ++i)
+    {
+        if (fizz(i)) std::cout << "fizz";
+        if (buzz(i)) std::cout << "buzz";
+        if (!fizz(i) && !buzz(i)) std::cout << i;
+        std::cout << '\n';
+    }
+
+    return *buggy;
+}

Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/process_attach/main.cpp
==============================================================================
--- vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/process_attach/main.cpp	Wed Jan 13 20:06:33 2016	(r293847)
+++ vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/process_attach/main.cpp	Wed Jan 13 20:06:56 2016	(r293848)
@@ -1,28 +1,11 @@
 #include <stdio.h>
 
-#if defined(__linux__)
-#include <sys/prctl.h>
-#endif
-
 #include <chrono>
 #include <thread>
 
 int main(int argc, char const *argv[]) {
     int temp;
-#if defined(__linux__)
-    // Immediately enable any ptracer so that we can allow the stub attach
-    // operation to succeed.  Some Linux kernels are locked down so that
-    // only an ancestor process can be a ptracer of a process.  This disables that
-    // restriction.  Without it, attach-related stub tests will fail.
-#if defined(PR_SET_PTRACER) && defined(PR_SET_PTRACER_ANY)
-    int prctl_result;
-
-    // For now we execute on best effort basis.  If this fails for
-    // some reason, so be it.
-    prctl_result = prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
-    (void) prctl_result;
-#endif

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-all mailing list