diff options
author | Jim Ingham <jingham@apple.com> | 2012-09-12 00:40:39 +0000 |
---|---|---|
committer | Jim Ingham <jingham@apple.com> | 2012-09-12 00:40:39 +0000 |
commit | a17a81a1a9ff6b8d87c4a1e47dd874f6ea8a4f1d (patch) | |
tree | b548e441d6720daa2dcc503ac2a2508e4397b570 /include/lldb | |
parent | 284a2a3a7ba112c66105bc3f8a800454631420f6 (diff) | |
download | lldb-a17a81a1a9ff6b8d87c4a1e47dd874f6ea8a4f1d.tar.gz |
Start at getting "thread return" working. Doesn't work yet.
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@163670 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/lldb')
-rw-r--r-- | include/lldb/API/SBThread.h | 3 | ||||
-rw-r--r-- | include/lldb/API/SBValue.h | 1 | ||||
-rw-r--r-- | include/lldb/Target/ABI.h | 5 | ||||
-rw-r--r-- | include/lldb/Target/Thread.h | 10 |
4 files changed, 19 insertions, 0 deletions
diff --git a/include/lldb/API/SBThread.h b/include/lldb/API/SBThread.h index 343b32f9f..082b99e92 100644 --- a/include/lldb/API/SBThread.h +++ b/include/lldb/API/SBThread.h @@ -101,6 +101,9 @@ public: void RunToAddress (lldb::addr_t addr); + + SBError + ReturnToFrame (SBFrame &frame, SBValue &return_value); //-------------------------------------------------------------------------- /// LLDB currently supports process centric debugging which means when any diff --git a/include/lldb/API/SBValue.h b/include/lldb/API/SBValue.h index b53cbb029..0cff1a0d3 100644 --- a/include/lldb/API/SBValue.h +++ b/include/lldb/API/SBValue.h @@ -383,6 +383,7 @@ public: protected: friend class SBValueList; friend class SBFrame; + friend class SBThread; lldb::ValueObjectSP GetSP () const; diff --git a/include/lldb/Target/ABI.h b/include/lldb/Target/ABI.h index 1a0989f62..eb0ae2883 100644 --- a/include/lldb/Target/ABI.h +++ b/include/lldb/Target/ABI.h @@ -14,6 +14,7 @@ // C++ Includes // Other libraries and framework includes // Project includes +#include "lldb/Core/Error.h" #include "lldb/Core/PluginInterface.h" #include "lldb/lldb-private.h" @@ -50,6 +51,10 @@ public: GetReturnValueObject (Thread &thread, ClangASTType &type, bool persistent = true) const; + + // Set the Return value object in the current frame as though a function with + virtual Error + SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value) = 0; protected: // This is the method the ABI will call to actually calculate the return value. diff --git a/include/lldb/Target/Thread.h b/include/lldb/Target/Thread.h index 0dcced76e..d252001c6 100644 --- a/include/lldb/Target/Thread.h +++ b/include/lldb/Target/Thread.h @@ -285,6 +285,12 @@ public: return GetStackFrameList()->GetCurrentInlinedDepth(); } + Error + ReturnToFrameWithIndex (uint32_t frame_idx, lldb::ValueObjectSP return_value_sp); + + Error + ReturnToFrame (lldb::StackFrameSP frame_sp, lldb::ValueObjectSP return_value_sp); + virtual lldb::StackFrameSP GetFrameWithStackID (const StackID &stack_id) { @@ -747,6 +753,10 @@ protected: virtual bool RestoreSaveFrameZero (const RegisterCheckpoint &checkpoint); + + // register_data_sp must be a DataSP passed to ReadAllRegisterValues. + bool + ResetFrameZeroRegisters (lldb::DataBufferSP register_data_sp); virtual lldb_private::Unwind * GetUnwinder (); |