summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/tools/lldb/source/Target/RegisterContext.cpp
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2014-03-19 13:11:35 +0000
committeremaste <emaste@FreeBSD.org>2014-03-19 13:11:35 +0000
commit958843c32b7a29741f2e45996b5b3e89f9e108b0 (patch)
tree95ae4ffabc848a86b94be3ad3cd42471cdb66b06 /contrib/llvm/tools/lldb/source/Target/RegisterContext.cpp
parent2a9993c246f3a2463ccd6b8786781e5b97a35065 (diff)
downloadFreeBSD-src-958843c32b7a29741f2e45996b5b3e89f9e108b0.zip
FreeBSD-src-958843c32b7a29741f2e45996b5b3e89f9e108b0.tar.gz
MFC r258054: Update LLDB to upstream r194122 snapshot
Inludes minor changes relative to upstream, for compatibility with FreeBSD's in-tree LLVM 3.3: - Reverted LLDB r191806, restoring use of previous API. - Reverted part of LLDB r189317, restoring previous enum names. - Work around missing LLVM r192504, using previous registerEHFrames API (limited functionality). - Removed PlatformWindows header include and init/terminate calls. Sponsored by: DARPA, AFRL
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Target/RegisterContext.cpp')
-rw-r--r--contrib/llvm/tools/lldb/source/Target/RegisterContext.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/contrib/llvm/tools/lldb/source/Target/RegisterContext.cpp b/contrib/llvm/tools/lldb/source/Target/RegisterContext.cpp
index 0d89db7..3d68ba8 100644
--- a/contrib/llvm/tools/lldb/source/Target/RegisterContext.cpp
+++ b/contrib/llvm/tools/lldb/source/Target/RegisterContext.cpp
@@ -81,6 +81,15 @@ RegisterContext::GetRegisterInfoByName (const char *reg_name, uint32_t start_idx
return NULL;
}
+const RegisterInfo *
+RegisterContext::GetRegisterInfo (uint32_t kind, uint32_t num)
+{
+ const uint32_t reg_num = ConvertRegisterKindToRegisterNumber(kind, num);
+ if (reg_num == LLDB_INVALID_REGNUM)
+ return NULL;
+ return GetRegisterInfoAtIndex (reg_num);
+}
+
const char *
RegisterContext::GetRegisterName (uint32_t reg)
{
@@ -113,6 +122,19 @@ RegisterContext::SetPC(uint64_t pc)
return success;
}
+bool
+RegisterContext::SetPC(Address addr)
+{
+ TargetSP target_sp = m_thread.CalculateTarget();
+ Target *target = target_sp.get();
+
+ lldb::addr_t callAddr = addr.GetCallableLoadAddress (target);
+ if (callAddr == LLDB_INVALID_ADDRESS)
+ return false;
+
+ return SetPC (callAddr);
+}
+
uint64_t
RegisterContext::GetSP(uint64_t fail_value)
{
OpenPOWER on IntegriCloud