diff options
| author | rollsafe <rollsafe@users.noreply.github.com> | 2019-05-31 18:36:25 -0400 |
|---|---|---|
| committer | rollsafe <rollsafe@users.noreply.github.com> | 2019-06-05 18:00:02 -0400 |
| commit | 522b1b7395fb4cbdba40b49c73b1f7577524fb1a (patch) | |
| tree | 587300fe8fba597fffc22b9b148c63d2c9efc9c7 /binaryview.cpp | |
| parent | fec6e3390631beea8c4ea8c3098191f20565abc2 (diff) | |
Add BinaryView.get_code_refs_from
Diffstat (limited to 'binaryview.cpp')
| -rw-r--r-- | binaryview.cpp | 32 |
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; |
