summaryrefslogtreecommitdiff
path: root/binaryview.cpp
diff options
context:
space:
mode:
authorrollsafe <rollsafe@users.noreply.github.com>2019-05-31 18:36:25 -0400
committerrollsafe <rollsafe@users.noreply.github.com>2019-06-05 18:00:02 -0400
commit522b1b7395fb4cbdba40b49c73b1f7577524fb1a (patch)
tree587300fe8fba597fffc22b9b148c63d2c9efc9c7 /binaryview.cpp
parentfec6e3390631beea8c4ea8c3098191f20565abc2 (diff)
Add BinaryView.get_code_refs_from
Diffstat (limited to 'binaryview.cpp')
-rw-r--r--binaryview.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/binaryview.cpp b/binaryview.cpp
index 547d1fc7..c78e43cf 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -1442,6 +1442,38 @@ vector<ReferenceSource> BinaryView::GetCodeReferences(uint64_t addr, uint64_t le
}
+vector<uint64_t> BinaryView::GetCodeReferencesFrom(ReferenceSource src)
+{
+ size_t count;
+ BNReferenceSource _src{ src.func->m_object, src.arch->m_object, src.addr };
+ uint64_t* refs = BNGetCodeReferencesFrom(m_object, &_src, &count);
+
+ vector<uint64_t> result;
+ result.reserve(count);
+ for (size_t i = 0; i < count; i++)
+ result[i] = refs[i];
+
+ BNFreeCodeReferencesFrom(refs);
+ return result;
+}
+
+
+vector<uint64_t> BinaryView::GetCodeReferencesFrom(ReferenceSource src, uint64_t len)
+{
+ size_t count;
+ BNReferenceSource _src{ src.func->m_object, src.arch->m_object, src.addr };
+ uint64_t* refs = BNGetCodeReferencesFromInRange(m_object, &_src, len, &count);
+
+ vector<uint64_t> result;
+ result.reserve(count);
+ for (size_t i = 0; i < count; i++)
+ result[i] = refs[i];
+
+ BNFreeCodeReferencesFrom(refs);
+ return result;
+}
+
+
vector<uint64_t> BinaryView::GetDataReferences(uint64_t addr)
{
size_t count;