Skip to content

Commit

Permalink
Make call param hints more configurable & support more param types fo…
Browse files Browse the repository at this point in the history
…r hint deduplication
  • Loading branch information
emesare committed May 20, 2024
1 parent df3c57d commit 82dd5d4
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 3 deletions.
11 changes: 11 additions & 0 deletions basicblock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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()
{
Expand Down
2 changes: 2 additions & 0 deletions binaryninjaapi.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
};

/*!
Expand Down
10 changes: 9 additions & 1 deletion binaryninjacore.h
Original file line number Diff line number Diff line change
Expand Up @@ -697,7 +697,6 @@ extern "C"
ExpandLongOpcode = 2,
ShowVariablesAtTopOfGraph = 3,
ShowVariableTypesWhenAssigned = 4,
ShowCallParameterNames = 6,
ShowRegisterHighlight = 7,
ShowFunctionAddress = 8,
ShowFunctionHeader = 9,
Expand Down Expand Up @@ -731,6 +730,13 @@ extern "C"
DisassemblyAddressModeFlagsMask = 0xFFFF0000,
} BNDisassemblyAddressMode;

typedef enum BNDisassemblyCallParameterHints
{
NeverShowMatchingParameterHints,
AlwaysShowParameterHints,
NeverShowParameterHints,
} BNDisassemblyCallParameterHints;

typedef enum BNTypeClass
{
VoidTypeClass = 0,
Expand Down Expand Up @@ -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);
Expand Down
2 changes: 0 additions & 2 deletions python/binaryview.py
Original file line number Diff line number Diff line change
Expand Up @@ -8780,7 +8780,6 @@ def find_all_text(
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")
Expand Down Expand Up @@ -8870,7 +8869,6 @@ def find_all_constant(
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")
Expand Down
2 changes: 2 additions & 0 deletions ui/disassemblyview.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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;

Expand Down
1 change: 1 addition & 0 deletions ui/linearview.h
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,7 @@ private Q_SLOTS:

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);

Expand Down

0 comments on commit 82dd5d4

Please sign in to comment.