summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2015-07-16 08:45:03 +0000
committerPavel Labath <labath@google.com>2015-07-16 08:45:03 +0000
commit5abe726911d4e2bf80bbbd93d0a2e2b8064c2fd3 (patch)
treeb2ccecfb410d8bbed16af12caab16218b12a004e /lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp
parentd783a983033dfb41a116806c92b4f9250997e025 (diff)
downloadbcm5719-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.cpp69
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, &regset, &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, &regset, &ioVec, ioVec.iov_len);
+ watch_count = dreg_state.dbg_info & 0xff;
- regset = NT_ARM_HW_BREAK;
- error = NativeProcessLinux::PtraceWrapper(PTRACE_GETREGSET, tid, &regset, &ioVec, ioVec.iov_len);
- break_count = dreg_state.dbg_info & 0xff;
+ regset = NT_ARM_HW_BREAK;
+ error = NativeProcessLinux::PtraceWrapper(PTRACE_GETREGSET, tid, &regset, &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
OpenPOWER on IntegriCloud