summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2024-05-01 01:24:28 -0400
committerGlenn Smith <glenn@vector35.com>2024-05-02 17:12:33 -0400
commit0911568293968626737281193706755773769970 (patch)
tree0f78d67b98046e6fb75f7785f61d223e817150d2
parentee9248c0f7144d9925e600be03f37fa155f51aef (diff)
Add address display mode options
-rw-r--r--basicblock.cpp12
-rw-r--r--binaryninjaapi.h3
-rw-r--r--binaryninjacore.h19
-rw-r--r--python/architecture.py1
-rwxr-xr-xpython/examples/export_svg.py2
-rw-r--r--ui/disassemblyview.h2
-rw-r--r--ui/linearview.h3
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(); }