diff options
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Target/RegisterContext.cpp')
-rw-r--r-- | contrib/llvm/tools/lldb/source/Target/RegisterContext.cpp | 22 |
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) { |