summaryrefslogtreecommitdiff
path: root/function.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2016-05-30 04:20:27 -0400
committerRusty Wagner <rusty@vector35.com>2016-05-30 04:20:27 -0400
commit56d270363e63b45c2032f4e73d02f9e2a92c76c2 (patch)
tree5a14ddd6954f1eff81e590f5961b07c7aa8093e7 /function.cpp
parent0c3c4285a38d70bafb089b85e6764d0f4153ff9c (diff)
Add APIs for querying stack variable values and parameters by index
Diffstat (limited to 'function.cpp')
-rw-r--r--function.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/function.cpp b/function.cpp
index 70cbfe2a..ea0fec86 100644
--- a/function.cpp
+++ b/function.cpp
@@ -196,6 +196,50 @@ RegisterValue Function::GetRegisterValueAfterLowLevelILInstruction(size_t i, uin
}
+RegisterValue Function::GetStackContentsAtInstruction(Architecture* arch, uint64_t addr, int64_t offset, size_t size)
+{
+ BNRegisterValue value = BNGetStackContentsAtInstruction(m_object, arch->GetObject(), addr, offset, size);
+ return GetRegisterValueFromAPIObject(value);
+}
+
+
+RegisterValue Function::GetStackContentsAfterInstruction(Architecture* arch, uint64_t addr, int64_t offset, size_t size)
+{
+ BNRegisterValue value = BNGetStackContentsAfterInstruction(m_object, arch->GetObject(), addr, offset, size);
+ return GetRegisterValueFromAPIObject(value);
+}
+
+
+RegisterValue Function::GetStackContentsAtLowLevelILInstruction(size_t i, int64_t offset, size_t size)
+{
+ BNRegisterValue value = BNGetStackContentsAtLowLevelILInstruction(m_object, i, offset, size);
+ return GetRegisterValueFromAPIObject(value);
+}
+
+
+RegisterValue Function::GetStackContentsAfterLowLevelILInstruction(size_t i, int64_t offset, size_t size)
+{
+ BNRegisterValue value = BNGetStackContentsAfterLowLevelILInstruction(m_object, i, offset, size);
+ return GetRegisterValueFromAPIObject(value);
+}
+
+
+RegisterValue Function::GetParameterValueAtInstruction(Architecture* arch, uint64_t addr, Type* functionType, size_t i)
+{
+ BNRegisterValue value = BNGetParameterValueAtInstruction(m_object, arch->GetObject(), addr,
+ functionType ? functionType->GetObject() : nullptr, i);
+ return GetRegisterValueFromAPIObject(value);
+}
+
+
+RegisterValue Function::GetParameterValueAtLowLevelILInstruction(size_t instr, Type* functionType, size_t i)
+{
+ BNRegisterValue value = BNGetParameterValueAtLowLevelILInstruction(m_object, instr,
+ functionType ? functionType->GetObject() : nullptr, i);
+ return GetRegisterValueFromAPIObject(value);
+}
+
+
vector<uint32_t> Function::GetRegistersReadByInstruction(Architecture* arch, uint64_t addr)
{
size_t count;