diff options
| author | Glenn Smith <glenn@vector35.com> | 2024-05-01 01:24:28 -0400 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2024-05-02 17:12:33 -0400 |
| commit | 0911568293968626737281193706755773769970 (patch) | |
| tree | 0f78d67b98046e6fb75f7785f61d223e817150d2 | |
| parent | ee9248c0f7144d9925e600be03f37fa155f51aef (diff) | |
Add address display mode options
| -rw-r--r-- | basicblock.cpp | 12 | ||||
| -rw-r--r-- | binaryninjaapi.h | 3 | ||||
| -rw-r--r-- | binaryninjacore.h | 19 | ||||
| -rw-r--r-- | python/architecture.py | 1 | ||||
| -rwxr-xr-x | python/examples/export_svg.py | 2 | ||||
| -rw-r--r-- | ui/disassemblyview.h | 2 | ||||
| -rw-r--r-- | ui/linearview.h | 3 |
7 files changed, 38 insertions, 4 deletions
diff --git a/basicblock.cpp b/basicblock.cpp index b330c7a5..0ca4ad00 100644 --- a/basicblock.cpp +++ b/basicblock.cpp @@ -90,6 +90,18 @@ void DisassemblySettings::SetGutterWidth(size_t width) } +BNDisassemblyAddressMode DisassemblySettings::GetAddressMode() const +{ + return BNGetDisassemblyAddressMode(m_object); +} + + +void DisassemblySettings::SetAddressMode(BNDisassemblyAddressMode mode) +{ + BNSetDisassemblyAddressMode(m_object, mode); +} + + DisassemblyTextLine::DisassemblyTextLine() { addr = 0; diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 803ebf76..5ec190b2 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -2266,6 +2266,7 @@ namespace BinaryNinja { TextToken Used for anything not of another type. CommentToken Comments TypeNameToken **Not emitted by architectures** + AddressSeparatorToken **Not emitted by architectures** ========================== ============================================ */ struct InstructionTextToken @@ -9699,6 +9700,8 @@ namespace BinaryNinja { void SetMaximumSymbolWidth(size_t width); size_t GetGutterWidth() const; void SetGutterWidth(size_t width); + BNDisassemblyAddressMode GetAddressMode() const; + void SetAddressMode(BNDisassemblyAddressMode mode); }; /*! diff --git a/binaryninjacore.h b/binaryninjacore.h index d0f7a5e2..826ebf48 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -382,7 +382,8 @@ extern "C" AddressDisplayToken = 68, IndirectImportToken = 69, ExternalSymbolToken = 70, - StackVariableToken = 71 + StackVariableToken = 71, + AddressSeparatorToken = 72 } BNInstructionTextTokenType; typedef enum BNInstructionTextTokenContext @@ -700,6 +701,19 @@ extern "C" ShowILOpcodes = 131, } BNDisassemblyOption; + typedef enum BNDisassemblyAddressMode + { + AbsoluteDisassemblyAddressMode, + RelativeToBinaryStartDisassemblyAddressMode, + NameAndRelativeToBinaryStartDisassemblyAddressMode, + RelativeToSegmentStartDisassemblyAddressMode, + NameAndRelativeToSegmentStartDisassemblyAddressMode, + RelativeToSectionStartDisassemblyAddressMode, + NameAndRelativeToSectionStartDisassemblyAddressMode, + RelativeToFunctionStartDisassemblyAddressMode, + NameAndRelativeToFunctionStartDisassemblyAddressMode, + } BNDisassemblyAddressMode; + typedef enum BNTypeClass { VoidTypeClass = 0, @@ -5060,7 +5074,8 @@ extern "C" BINARYNINJACOREAPI void BNSetDisassemblyMaximumSymbolWidth(BNDisassemblySettings* settings, size_t width); BINARYNINJACOREAPI size_t BNGetDisassemblyGutterWidth(BNDisassemblySettings* settings); BINARYNINJACOREAPI void BNSetDisassemblyGutterWidth(BNDisassemblySettings* settings, size_t width); - + BINARYNINJACOREAPI BNDisassemblyAddressMode BNGetDisassemblyAddressMode(BNDisassemblySettings* settings); + BINARYNINJACOREAPI void BNSetDisassemblyAddressMode(BNDisassemblySettings* settings, BNDisassemblyAddressMode mode); // Flow graphs BINARYNINJACOREAPI BNFlowGraph* BNCreateFlowGraph(void); diff --git a/python/architecture.py b/python/architecture.py index dcc01e4f..ce69af86 100644 --- a/python/architecture.py +++ b/python/architecture.py @@ -2808,6 +2808,7 @@ class InstructionTextToken: TextToken Used for anything not of another type. CommentToken Comments TypeNameToken **Not emitted by architectures** + AddressSeparatorToken **Not emitted by architectures** ========================== ============================================ """ diff --git a/python/examples/export_svg.py b/python/examples/export_svg.py index b2965c93..e9ce9299 100755 --- a/python/examples/export_svg.py +++ b/python/examples/export_svg.py @@ -258,7 +258,7 @@ def render_svg(function, offset, mode, form, showOpcodes, showAddresses, orignam .BaseStructureNameToken, .BaseStructureSeparatorToken {{ fill: {rgbStr('BaseStructureNameColor')}; }} - .TextToken, .BeginMemoryOperandToken, .EndMemoryOperandToken {{ + .TextToken, .BeginMemoryOperandToken, .EndMemoryOperandToken, .AddressSeparatorToken {{ fill: {rgbStr('TextToken')}; }} </style> diff --git a/ui/disassemblyview.h b/ui/disassemblyview.h index 54d3a71d..8cc5cc6d 100644 --- a/ui/disassemblyview.h +++ b/ui/disassemblyview.h @@ -75,6 +75,7 @@ class BINARYNINJAUIAPI DisassemblyView : public FlowGraphWidget void setOption(BNDisassemblyOption option, bool state = true); void toggleOption(BNDisassemblyOption option); + void setAddressMode(BNDisassemblyAddressMode mode); virtual DisassemblySettingsRef getDisassemblySettings() override; virtual void setDisassemblySettings(DisassemblySettingsRef settings) override; @@ -129,6 +130,7 @@ class BINARYNINJAUIAPI DisassemblyView : public FlowGraphWidget BNFunctionGraphType m_ilViewType; std::set<BNDisassemblyOption> m_options; + BNDisassemblyAddressMode m_addressMode; DisassemblyContainer* m_container; SettingsRef m_settings; diff --git a/ui/linearview.h b/ui/linearview.h index 936ceb59..62cc98bf 100644 --- a/ui/linearview.h +++ b/ui/linearview.h @@ -262,7 +262,7 @@ class BINARYNINJAUIAPI LinearView : public QAbstractScrollArea, public View, pub void getHexDumpLineBytes( const BinaryNinja::LinearDisassemblyLine& line, size_t& skippedBytes, size_t& totalBytes, size_t& totalCols); - void paintHexDumpLine(QPainter& p, const LinearViewLine& line, int xoffset, int y, uint32_t addrLen, int tagOffset); + void paintHexDumpLine(QPainter& p, const LinearViewLine& line, int xoffset, int y, int tagOffset); void paintAnalysisWarningLine(QPainter& p, const LinearViewLine& line, int xoffset, int y); void paintTokenLine(QPainter& p, const LinearViewLine& line, int xoffset, int y, QRect eventRect, int tagOffset); @@ -478,6 +478,7 @@ public: void setContrast(HexEditorHighlightContrast mode); void toggleOption(BNDisassemblyOption option); + void setAddressMode(BNDisassemblyAddressMode mode); virtual bool goToReference(FunctionRef func, uint64_t source, uint64_t target) override; QFont getFont() override { return m_render.getFont(); } |
