summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorMark Rowe <mark@vector35.com>2026-04-13 18:04:00 -0700
committerMark Rowe <mark@vector35.com>2026-04-16 15:35:06 -0700
commit617c10d3cb0a9b9bad112c79c85384c08c22c98e (patch)
tree985e265121793f22f72ddfc48cb478291874216e /ui
parent19a72ab499a5c8f4177b62808921afad48d14fa2 (diff)
Fix context menus for calls when call target is HLIL_IMPORT
Add a `getCallInstructionAddress` helper that maps from view highlight state to the address of the corresponding call instruction, if one is highlighted. This logic was previously duplicated between `LinearView` and `FlowGraphWidget`.
Diffstat (limited to 'ui')
-rw-r--r--ui/uitypes.h2
-rw-r--r--ui/util.h12
2 files changed, 13 insertions, 1 deletions
diff --git a/ui/uitypes.h b/ui/uitypes.h
index dde77c4a..4c2e9404 100644
--- a/ui/uitypes.h
+++ b/ui/uitypes.h
@@ -6,7 +6,7 @@
// there are changes to the API that affect linking, including new functions,
// new types, modifications to existing functions or types, or new versions
// of the Qt libraries.
-#define BN_CURRENT_UI_ABI_VERSION 13
+#define BN_CURRENT_UI_ABI_VERSION 14
// Minimum ABI version that is supported for loading of plugins. Plugins that
// are linked to an ABI version less than this will not be able to load and
diff --git a/ui/util.h b/ui/util.h
index 9b5a907d..1123b9c6 100644
--- a/ui/util.h
+++ b/ui/util.h
@@ -30,6 +30,18 @@ std::optional<BinaryNinja::PossibleValueSet> BINARYNINJAUIAPI getPossibleValueSe
std::optional<BinaryNinja::PossibleValueSet> BINARYNINJAUIAPI getPossibleValueSetForILToken(View* view, HighlightTokenState token);
std::optional<uint64_t> BINARYNINJAUIAPI getAddressOfILTokenExpr(View* view, HighlightTokenState token);
+// Resolve the address of the call instruction that the user is currently on,
+// given the active function, architecture, IL view, highlight, and cursor
+// position. This is the address of the calling instruction itself, not the
+// call target.
+std::optional<uint64_t> BINARYNINJAUIAPI getCallInstructionAddress(
+ FunctionRef function,
+ ArchitectureRef arch,
+ BNFunctionGraphType viewType,
+ const HighlightTokenState& highlight,
+ uint64_t cursorAddress,
+ size_t cursorInstrIndex);
+
template <typename T>
std::optional<T> visitILInstructionForToken(View* view, const HighlightTokenState& token,
const std::function<std::optional<T>(BinaryNinja::LowLevelILInstruction&)>& llil,