diff options
| author | Rusty Wagner <rusty@vector35.com> | 2016-05-25 19:29:10 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2016-05-25 19:29:10 -0400 |
| commit | 0c3c4285a38d70bafb089b85e6764d0f4153ff9c (patch) | |
| tree | 8e0025d90a2938d46596cbd62e691150dc6650bf /function.cpp | |
| parent | ebb6efaf92d36c0284bd8a5450cf2c051446f23a (diff) | |
Adding API to retrieve basic block annotations
Diffstat (limited to 'function.cpp')
| -rw-r--r-- | function.cpp | 25 |
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; +} |
