diff options
author | Pavel Labath <labath@google.com> | 2015-07-16 08:45:03 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2015-07-16 08:45:03 +0000 |
commit | 5abe726911d4e2bf80bbbd93d0a2e2b8064c2fd3 (patch) | |
tree | b2ccecfb410d8bbed16af12caab16218b12a004e /lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp | |
parent | d783a983033dfb41a116806c92b4f9250997e025 (diff) | |
download | bcm5719-llvm-5abe726911d4e2bf80bbbd93d0a2e2b8064c2fd3.tar.gz bcm5719-llvm-5abe726911d4e2bf80bbbd93d0a2e2b8064c2fd3.zip |
Revert "[NativeProcessLinux] Integrate MainLoop"
This seems to be causing major slowdows on the android buildbot. Reverting while I investigate.
llvm-svn: 242391
Diffstat (limited to 'lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp')
-rw-r--r-- | lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp | 69 |
1 files changed, 41 insertions, 28 deletions
diff --git a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp index 6904418644c..308ffe30505 100644 --- a/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -715,23 +715,29 @@ Error NativeRegisterContextLinux_arm64::ReadHardwareDebugInfo(unsigned int &watch_count, unsigned int &break_count) { + NativeProcessProtocolSP process_sp (m_thread.GetProcess()); + if (!process_sp) + return Error("NativeProcessProtocol is NULL"); + NativeProcessLinux *const process_p = reinterpret_cast<NativeProcessLinux*>(process_sp.get()); ::pid_t tid = m_thread.GetID(); - int regset = NT_ARM_HW_WATCH; - struct iovec ioVec; - struct user_hwdebug_state dreg_state; - Error error; + return process_p->DoOperation([&] { + int regset = NT_ARM_HW_WATCH; + struct iovec ioVec; + struct user_hwdebug_state dreg_state; + Error error; - ioVec.iov_base = &dreg_state; - ioVec.iov_len = sizeof (dreg_state); - error = NativeProcessLinux::PtraceWrapper(PTRACE_GETREGSET, tid, ®set, &ioVec, ioVec.iov_len); - watch_count = dreg_state.dbg_info & 0xff; + ioVec.iov_base = &dreg_state; + ioVec.iov_len = sizeof (dreg_state); + error = NativeProcessLinux::PtraceWrapper(PTRACE_GETREGSET, tid, ®set, &ioVec, ioVec.iov_len); + watch_count = dreg_state.dbg_info & 0xff; - regset = NT_ARM_HW_BREAK; - error = NativeProcessLinux::PtraceWrapper(PTRACE_GETREGSET, tid, ®set, &ioVec, ioVec.iov_len); - break_count = dreg_state.dbg_info & 0xff; + regset = NT_ARM_HW_BREAK; + error = NativeProcessLinux::PtraceWrapper(PTRACE_GETREGSET, tid, ®set, &ioVec, ioVec.iov_len); + break_count = dreg_state.dbg_info & 0xff; - return error; + return error; + }); } Error @@ -740,26 +746,33 @@ NativeRegisterContextLinux_arm64::WriteHardwareDebugRegs(lldb::addr_t *addr_buf, int type, int count) { - struct iovec ioVec; - struct user_hwdebug_state dreg_state; - Error error; + NativeProcessProtocolSP process_sp (m_thread.GetProcess()); + if (!process_sp) + return Error("NativeProcessProtocol is NULL"); + NativeProcessLinux *const process_p = reinterpret_cast<NativeProcessLinux*>(process_sp.get()); - memset (&dreg_state, 0, sizeof (dreg_state)); - ioVec.iov_base = &dreg_state; - ioVec.iov_len = sizeof (dreg_state); + return process_p->DoOperation([&] { + struct iovec ioVec; + struct user_hwdebug_state dreg_state; + Error error; - if (type == 0) - type = NT_ARM_HW_WATCH; - else - type = NT_ARM_HW_BREAK; + memset (&dreg_state, 0, sizeof (dreg_state)); + ioVec.iov_base = &dreg_state; + ioVec.iov_len = sizeof (dreg_state); - for (int i = 0; i < count; i++) - { - dreg_state.dbg_regs[i].addr = addr_buf[i]; - dreg_state.dbg_regs[i].ctrl = cntrl_buf[i]; - } + if (type == 0) + type = NT_ARM_HW_WATCH; + else + type = NT_ARM_HW_BREAK; + + for (int i = 0; i < count; i++) + { + dreg_state.dbg_regs[i].addr = addr_buf[i]; + dreg_state.dbg_regs[i].ctrl = cntrl_buf[i]; + } - return NativeProcessLinux::PtraceWrapper(PTRACE_SETREGSET, m_thread.GetID(), &type, &ioVec, ioVec.iov_len); + return NativeProcessLinux::PtraceWrapper(PTRACE_SETREGSET, m_thread.GetID(), &type, &ioVec, ioVec.iov_len); + }); } Error |