diff options
| author | Mark Rowe <mark@vector35.com> | 2026-04-13 18:04:00 -0700 |
|---|---|---|
| committer | Mark Rowe <mark@vector35.com> | 2026-04-16 15:35:06 -0700 |
| commit | 617c10d3cb0a9b9bad112c79c85384c08c22c98e (patch) | |
| tree | 985e265121793f22f72ddfc48cb478291874216e /ui | |
| parent | 19a72ab499a5c8f4177b62808921afad48d14fa2 (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.h | 2 | ||||
| -rw-r--r-- | ui/util.h | 12 |
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 @@ -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, |
