diff options
| author | Mason Reed <mason@vector35.com> | 2024-05-12 16:19:27 -0400 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2024-05-19 22:53:13 -0400 |
| commit | 82dd5d4b6fb97f4754d80aefe514d74b61c79054 (patch) | |
| tree | 3abf37a8b1a2a2c402a20d4002d4867bb4e8b19b | |
| parent | df3c57d907cc994d8a660684428a75383f34c69a (diff) | |
Make call param hints more configurable & support more param types for hint deduplication
| -rw-r--r-- | basicblock.cpp | 11 | ||||
| -rw-r--r-- | binaryninjaapi.h | 2 | ||||
| -rw-r--r-- | binaryninjacore.h | 10 | ||||
| -rw-r--r-- | python/binaryview.py | 2 | ||||
| -rw-r--r-- | ui/disassemblyview.h | 2 | ||||
| -rw-r--r-- | ui/linearview.h | 1 |
6 files changed, 25 insertions, 3 deletions
diff --git a/basicblock.cpp b/basicblock.cpp index b7912c47..6bdd93ae 100644 --- a/basicblock.cpp +++ b/basicblock.cpp @@ -113,6 +113,17 @@ void DisassemblySettings::SetAddressBaseOffset(uint64_t addressBaseOffset) BNSetDisassemblyAddressBaseOffset(m_object, addressBaseOffset); } +BNDisassemblyCallParameterHints DisassemblySettings::GetCallParameterHints() const +{ + return BNGetDisassemblyCallParameterHints(m_object); +} + + +void DisassemblySettings::SetCallParameterHints(BNDisassemblyCallParameterHints hints) +{ + BNSetDisassemblyCallParameterHints(m_object, hints); +} + DisassemblyTextLine::DisassemblyTextLine() { diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 249bc68c..364eb564 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -9824,6 +9824,8 @@ namespace BinaryNinja { void SetAddressMode(BNDisassemblyAddressMode mode); uint64_t GetAddressBaseOffset() const; void SetAddressBaseOffset(uint64_t addressBaseOffset); + BNDisassemblyCallParameterHints GetCallParameterHints() const; + void SetCallParameterHints(BNDisassemblyCallParameterHints hints); }; /*! diff --git a/binaryninjacore.h b/binaryninjacore.h index cdbd3a49..9e0b6986 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -697,7 +697,6 @@ extern "C" ExpandLongOpcode = 2, ShowVariablesAtTopOfGraph = 3, ShowVariableTypesWhenAssigned = 4, - ShowCallParameterNames = 6, ShowRegisterHighlight = 7, ShowFunctionAddress = 8, ShowFunctionHeader = 9, @@ -731,6 +730,13 @@ extern "C" DisassemblyAddressModeFlagsMask = 0xFFFF0000, } BNDisassemblyAddressMode; + typedef enum BNDisassemblyCallParameterHints + { + NeverShowMatchingParameterHints, + AlwaysShowParameterHints, + NeverShowParameterHints, + } BNDisassemblyCallParameterHints; + typedef enum BNTypeClass { VoidTypeClass = 0, @@ -5134,6 +5140,8 @@ extern "C" BINARYNINJACOREAPI void BNSetDisassemblyAddressMode(BNDisassemblySettings* settings, BNDisassemblyAddressMode mode); BINARYNINJACOREAPI uint64_t BNGetDisassemblyAddressBaseOffset(BNDisassemblySettings* settings); BINARYNINJACOREAPI void BNSetDisassemblyAddressBaseOffset(BNDisassemblySettings* settings, uint64_t addressBaseOffset); + BINARYNINJACOREAPI BNDisassemblyCallParameterHints BNGetDisassemblyCallParameterHints(BNDisassemblySettings* settings); + BINARYNINJACOREAPI void BNSetDisassemblyCallParameterHints(BNDisassemblySettings* settings, BNDisassemblyCallParameterHints hints); // Flow graphs BINARYNINJACOREAPI BNFlowGraph* BNCreateFlowGraph(void); diff --git a/python/binaryview.py b/python/binaryview.py index 775279b6..6b18ecc8 100644 --- a/python/binaryview.py +++ b/python/binaryview.py @@ -8780,7 +8780,6 @@ class BinaryView: settings.set_option(DisassemblyOption.ShowAddress, False) settings.set_option(DisassemblyOption.ShowOpcode, False) settings.set_option(DisassemblyOption.ShowVariableTypesWhenAssigned, True) - settings.set_option(DisassemblyOption.ShowCallParameterNames, True) settings.set_option(DisassemblyOption.WaitForIL, True) if not isinstance(settings, _function.DisassemblySettings): raise TypeError("settings parameter is not DisassemblySettings type") @@ -8870,7 +8869,6 @@ class BinaryView: settings.set_option(DisassemblyOption.ShowAddress, False) settings.set_option(DisassemblyOption.ShowOpcode, False) settings.set_option(DisassemblyOption.ShowVariableTypesWhenAssigned, True) - settings.set_option(DisassemblyOption.ShowCallParameterNames, True) settings.set_option(DisassemblyOption.WaitForIL, True) if not isinstance(settings, _function.DisassemblySettings): raise TypeError("settings parameter is not DisassemblySettings type") diff --git a/ui/disassemblyview.h b/ui/disassemblyview.h index 80f767bc..3e0408ae 100644 --- a/ui/disassemblyview.h +++ b/ui/disassemblyview.h @@ -77,6 +77,7 @@ class BINARYNINJAUIAPI DisassemblyView : public FlowGraphWidget void setOption(BNDisassemblyOption option, bool state = true); void toggleOption(BNDisassemblyOption option); void setAddressMode(std::optional<BNDisassemblyAddressMode> mode, std::optional<bool> hex, std::optional<bool> withName); + void setCallParamHints(BNDisassemblyCallParameterHints hints); void setDisplayedFileName(); void setAddressBaseOffset(bool toHere); @@ -134,6 +135,7 @@ class BINARYNINJAUIAPI DisassemblyView : public FlowGraphWidget BNFunctionGraphType m_ilViewType; std::set<BNDisassemblyOption> m_options; BNDisassemblyAddressMode m_addressMode; + BNDisassemblyCallParameterHints m_callParamHints; DisassemblyContainer* m_container; SettingsRef m_settings; diff --git a/ui/linearview.h b/ui/linearview.h index ce2e8fa4..aaa4a9ac 100644 --- a/ui/linearview.h +++ b/ui/linearview.h @@ -481,6 +481,7 @@ public: void toggleOption(BNDisassemblyOption option); void setAddressMode(std::optional<BNDisassemblyAddressMode> mode, std::optional<bool> hex, std::optional<bool> withName); + void setCallParamHints(BNDisassemblyCallParameterHints hints); void setDisplayedFileName(); void setAddressBaseOffset(bool toHere); |
