summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
diff options
context:
space:
mode:
authorEd Maste <emaste@freebsd.org>2013-07-04 21:47:32 +0000
committerEd Maste <emaste@freebsd.org>2013-07-04 21:47:32 +0000
commit6f066412ac543105b2afcb363c9c64355d160e56 (patch)
treebb51075c56b9776c588426a448aa42701b01a6a5 /lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
parent316c37407ebff91d29a997bf9fa795cbf71e850d (diff)
downloadbcm5719-llvm-6f066412ac543105b2afcb363c9c64355d160e56.tar.gz
bcm5719-llvm-6f066412ac543105b2afcb363c9c64355d160e56.zip
Pass tid through to ptrace operations
This change is equivalent to the Linux threading support. llvm-svn: 185671
Diffstat (limited to 'lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp')
-rw-r--r--lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp62
1 files changed, 35 insertions, 27 deletions
diff --git a/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp b/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
index e02e4209641..3e364975e95 100644
--- a/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ b/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -275,13 +275,16 @@ WriteOperation::Execute(ProcessMonitor *monitor)
class ReadRegOperation : public Operation
{
public:
- ReadRegOperation(unsigned offset, unsigned size, RegisterValue &value, bool &result)
- : m_offset(offset), m_size(size), m_value(value), m_result(result)
+ ReadRegOperation(lldb::tid_t tid, unsigned offset, unsigned size,
+ RegisterValue &value, bool &result)
+ : m_tid(tid), m_offset(offset), m_size(size),
+ m_value(value), m_result(result)
{ }
void Execute(ProcessMonitor *monitor);
private:
+ lldb::tid_t m_tid;
unsigned m_offset;
unsigned m_size;
RegisterValue &m_value;
@@ -291,11 +294,10 @@ private:
void
ReadRegOperation::Execute(ProcessMonitor *monitor)
{
- lldb::pid_t pid = monitor->GetPID();
struct reg regs;
int rc;
- if ((rc = PTRACE(PT_GETREGS, pid, (caddr_t)&regs, 0)) < 0) {
+ if ((rc = PTRACE(PT_GETREGS, m_tid, (caddr_t)&regs, 0)) < 0) {
m_result = false;
} else {
if (m_size == sizeof(uintptr_t))
@@ -312,13 +314,16 @@ ReadRegOperation::Execute(ProcessMonitor *monitor)
class WriteRegOperation : public Operation
{
public:
- WriteRegOperation(unsigned offset, const RegisterValue &value, bool &result)
- : m_offset(offset), m_value(value), m_result(result)
+ WriteRegOperation(lldb::tid_t tid, unsigned offset,
+ const RegisterValue &value, bool &result)
+ : m_tid(tid), m_offset(offset),
+ m_value(value), m_result(result)
{ }
void Execute(ProcessMonitor *monitor);
private:
+ lldb::tid_t m_tid;
unsigned m_offset;
const RegisterValue &m_value;
bool &m_result;
@@ -327,15 +332,14 @@ private:
void
WriteRegOperation::Execute(ProcessMonitor *monitor)
{
- lldb::pid_t pid = monitor->GetPID();
struct reg regs;
- if (PTRACE(PT_GETREGS, pid, (caddr_t)&regs, 0) < 0) {
+ if (PTRACE(PT_GETREGS, m_tid, (caddr_t)&regs, 0) < 0) {
m_result = false;
return;
}
*(uintptr_t *)(((caddr_t)&regs) + m_offset) = (uintptr_t)m_value.GetAsUInt64();
- if (PTRACE(PT_SETREGS, pid, (caddr_t)&regs, 0) < 0)
+ if (PTRACE(PT_SETREGS, m_tid, (caddr_t)&regs, 0) < 0)
m_result = false;
else
m_result = true;
@@ -347,13 +351,14 @@ WriteRegOperation::Execute(ProcessMonitor *monitor)
class ReadGPROperation : public Operation
{
public:
- ReadGPROperation(void *buf, bool &result)
- : m_buf(buf), m_result(result)
+ ReadGPROperation(lldb::tid_t tid, void *buf, bool &result)
+ : m_tid(tid), m_buf(buf), m_result(result)
{ }
void Execute(ProcessMonitor *monitor);
private:
+ lldb::tid_t m_tid;
void *m_buf;
bool &m_result;
};
@@ -364,7 +369,7 @@ ReadGPROperation::Execute(ProcessMonitor *monitor)
int rc;
errno = 0;
- rc = PTRACE(PT_GETREGS, monitor->GetPID(), (caddr_t)m_buf, 0);
+ rc = PTRACE(PT_GETREGS, m_tid, (caddr_t)m_buf, 0);
if (errno != 0)
m_result = false;
else
@@ -377,13 +382,14 @@ ReadGPROperation::Execute(ProcessMonitor *monitor)
class ReadFPROperation : public Operation
{
public:
- ReadFPROperation(void *buf, bool &result)
- : m_buf(buf), m_result(result)
+ ReadFPROperation(lldb::tid_t tid, void *buf, bool &result)
+ : m_tid(tid), m_buf(buf), m_result(result)
{ }
void Execute(ProcessMonitor *monitor);
private:
+ lldb::tid_t m_tid;
void *m_buf;
bool &m_result;
};
@@ -391,7 +397,7 @@ private:
void
ReadFPROperation::Execute(ProcessMonitor *monitor)
{
- if (PTRACE(PT_GETFPREGS, monitor->GetPID(), (caddr_t)m_buf, 0) < 0)
+ if (PTRACE(PT_GETFPREGS, m_tid, (caddr_t)m_buf, 0) < 0)
m_result = false;
else
m_result = true;
@@ -403,13 +409,14 @@ ReadFPROperation::Execute(ProcessMonitor *monitor)
class WriteGPROperation : public Operation
{
public:
- WriteGPROperation(void *buf, bool &result)
- : m_buf(buf), m_result(result)
+ WriteGPROperation(lldb::tid_t tid, void *buf, bool &result)
+ : m_tid(tid), m_buf(buf), m_result(result)
{ }
void Execute(ProcessMonitor *monitor);
private:
+ lldb::tid_t m_tid;
void *m_buf;
bool &m_result;
};
@@ -417,7 +424,7 @@ private:
void
WriteGPROperation::Execute(ProcessMonitor *monitor)
{
- if (PTRACE(PT_SETREGS, monitor->GetPID(), (caddr_t)m_buf, 0) < 0)
+ if (PTRACE(PT_SETREGS, m_tid, (caddr_t)m_buf, 0) < 0)
m_result = false;
else
m_result = true;
@@ -429,13 +436,14 @@ WriteGPROperation::Execute(ProcessMonitor *monitor)
class WriteFPROperation : public Operation
{
public:
- WriteFPROperation(void *buf, bool &result)
- : m_buf(buf), m_result(result)
+ WriteFPROperation(lldb::tid_t tid, void *buf, bool &result)
+ : m_tid(tid), m_buf(buf), m_result(result)
{ }
void Execute(ProcessMonitor *monitor);
private:
+ lldb::tid_t m_tid;
void *m_buf;
bool &m_result;
};
@@ -443,7 +451,7 @@ private:
void
WriteFPROperation::Execute(ProcessMonitor *monitor)
{
- if (PTRACE(PT_SETFPREGS, monitor->GetPID(), (caddr_t)m_buf, 0) < 0)
+ if (PTRACE(PT_SETFPREGS, m_tid, (caddr_t)m_buf, 0) < 0)
m_result = false;
else
m_result = true;
@@ -1482,7 +1490,7 @@ ProcessMonitor::ReadRegisterValue(lldb::tid_t tid, unsigned offset, const char*
unsigned size, RegisterValue &value)
{
bool result;
- ReadRegOperation op(offset, size, value, result);
+ ReadRegOperation op(tid, offset, size, value, result);
DoOperation(&op);
return result;
}
@@ -1492,7 +1500,7 @@ ProcessMonitor::WriteRegisterValue(lldb::tid_t tid, unsigned offset,
const char* reg_name, const RegisterValue &value)
{
bool result;
- WriteRegOperation op(offset, value, result);
+ WriteRegOperation op(tid, offset, value, result);
DoOperation(&op);
return result;
}
@@ -1501,7 +1509,7 @@ bool
ProcessMonitor::ReadGPR(lldb::tid_t tid, void *buf, size_t buf_size)
{
bool result;
- ReadGPROperation op(buf, result);
+ ReadGPROperation op(tid, buf, result);
DoOperation(&op);
return result;
}
@@ -1510,7 +1518,7 @@ bool
ProcessMonitor::ReadFPR(lldb::tid_t tid, void *buf, size_t buf_size)
{
bool result;
- ReadFPROperation op(buf, result);
+ ReadFPROperation op(tid, buf, result);
DoOperation(&op);
return result;
}
@@ -1525,7 +1533,7 @@ bool
ProcessMonitor::WriteGPR(lldb::tid_t tid, void *buf, size_t buf_size)
{
bool result;
- WriteGPROperation op(buf, result);
+ WriteGPROperation op(tid, buf, result);
DoOperation(&op);
return result;
}
@@ -1534,7 +1542,7 @@ bool
ProcessMonitor::WriteFPR(lldb::tid_t tid, void *buf, size_t buf_size)
{
bool result;
- WriteFPROperation op(buf, result);
+ WriteFPROperation op(tid, buf, result);
DoOperation(&op);
return result;
}
OpenPOWER on IntegriCloud