summaryrefslogtreecommitdiff
path: root/function.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2016-05-25 19:29:10 -0400
committerRusty Wagner <rusty@vector35.com>2016-05-25 19:29:10 -0400
commit0c3c4285a38d70bafb089b85e6764d0f4153ff9c (patch)
tree8e0025d90a2938d46596cbd62e691150dc6650bf /function.cpp
parentebb6efaf92d36c0284bd8a5450cf2c051446f23a (diff)
Adding API to retrieve basic block annotations
Diffstat (limited to 'function.cpp')
-rw-r--r--function.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/function.cpp b/function.cpp
index 7cc30351..70cbfe2a 100644
--- a/function.cpp
+++ b/function.cpp
@@ -458,3 +458,28 @@ vector<IndirectBranchInfo> Function::GetIndirectBranchesAt(Architecture* arch, u
BNFreeIndirectBranchList(branches);
return result;
}
+
+
+vector<vector<InstructionTextToken>> Function::GetBlockAnnotations(Architecture* arch, uint64_t addr)
+{
+ size_t count;
+ BNInstructionTextLine* lines = BNGetFunctionBlockAnnotations(m_object, arch->GetObject(), addr, &count);
+
+ vector<vector<InstructionTextToken>> result;
+ for (size_t i = 0; i < count; i++)
+ {
+ vector<InstructionTextToken> line;
+ for (size_t j = 0; j < lines[i].count; j++)
+ {
+ InstructionTextToken token;
+ token.type = lines[i].tokens[j].type;
+ token.text = lines[i].tokens[j].text;
+ token.value = lines[i].tokens[j].value;
+ line.push_back(token);
+ }
+ result.push_back(line);
+ }
+
+ BNFreeInstructionTextLines(lines, count);
+ return result;
+}