summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_x86.cpp
diff options
context:
space:
mode:
authorEd Maste <emaste@freebsd.org>2014-02-19 18:34:06 +0000
committerEd Maste <emaste@freebsd.org>2014-02-19 18:34:06 +0000
commita4be2c5dcd6d488e7c7d2e638759c3cd2b50da2a (patch)
tree956d07d7590ab180725cc1c24281ff937bbf99a1 /lldb/source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_x86.cpp
parent01fd1c60cd909ce4313217532ca40db2cf99886b (diff)
downloadbcm5719-llvm-a4be2c5dcd6d488e7c7d2e638759c3cd2b50da2a.tar.gz
bcm5719-llvm-a4be2c5dcd6d488e7c7d2e638759c3cd2b50da2a.zip
FreeBSD hardware watchpoint implementation
Implement x86_64 debug register read/write in support of hardware watchpoints. Hoist LinuxThread::TraceNotify code back into POSIXThread::TraceNotify() Patch by John Wolfe. We still need to rework this later to avoid the #ifdef FreeBSD. llvm-reviews.chandlerc.com/D2572 llvm.org/pr16706 llvm-svn: 201706
Diffstat (limited to 'lldb/source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_x86.cpp')
-rw-r--r--lldb/source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_x86.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_x86.cpp b/lldb/source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_x86.cpp
index f833c9b4752..c446bbfa7dc 100644
--- a/lldb/source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_x86.cpp
+++ b/lldb/source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_x86.cpp
@@ -109,6 +109,15 @@ RegisterContextPOSIXProcessMonitor_x86_64::ReadRegister(const unsigned reg,
RegisterValue &value)
{
ProcessMonitor &monitor = GetMonitor();
+
+#if defined(__FreeBSD__)
+ if (reg >= m_reg_info.first_dr)
+ return monitor.ReadDebugRegisterValue(m_thread.GetID(),
+ GetRegisterOffset(reg),
+ GetRegisterName(reg),
+ GetRegisterSize(reg),
+ value);
+#endif
return monitor.ReadRegisterValue(m_thread.GetID(),
GetRegisterOffset(reg),
GetRegisterName(reg),
@@ -164,6 +173,13 @@ RegisterContextPOSIXProcessMonitor_x86_64::WriteRegister(const unsigned reg,
}
ProcessMonitor &monitor = GetMonitor();
+#if defined(__FreeBSD__)
+ if (reg >= m_reg_info.first_dr)
+ return monitor.WriteDebugRegisterValue(m_thread.GetID(),
+ GetRegisterOffset(reg_to_write),
+ GetRegisterName(reg_to_write),
+ value_to_write);
+#endif
return monitor.WriteRegisterValue(m_thread.GetID(),
GetRegisterOffset(reg_to_write),
GetRegisterName(reg_to_write),
OpenPOWER on IntegriCloud