aboutsummaryrefslogtreecommitdiff
path: root/include/lldb
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2012-09-12 00:40:39 +0000
committerJim Ingham <jingham@apple.com>2012-09-12 00:40:39 +0000
commita17a81a1a9ff6b8d87c4a1e47dd874f6ea8a4f1d (patch)
treeb548e441d6720daa2dcc503ac2a2508e4397b570 /include/lldb
parent284a2a3a7ba112c66105bc3f8a800454631420f6 (diff)
downloadlldb-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.h3
-rw-r--r--include/lldb/API/SBValue.h1
-rw-r--r--include/lldb/Target/ABI.h5
-rw-r--r--include/lldb/Target/Thread.h10
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 ();