summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2024-05-08 18:09:33 -0400
committerGlenn Smith <glenn@vector35.com>2024-05-08 18:33:58 -0400
commit5085822747449420649264534611187762443099 (patch)
tree702006136d70a5fcc9cb35c0505b6e6557f953a5
parent7806681792158827908432430454031547770521 (diff)
Disassembly: Add relative to fixed base address mode
-rw-r--r--basicblock.cpp12
-rw-r--r--binaryninjaapi.h2
-rw-r--r--binaryninjacore.h3
-rw-r--r--ui/disassemblyview.h1
-rw-r--r--ui/linearview.h1
5 files changed, 19 insertions, 0 deletions
diff --git a/basicblock.cpp b/basicblock.cpp
index 0ca4ad00..b7912c47 100644
--- a/basicblock.cpp
+++ b/basicblock.cpp
@@ -102,6 +102,18 @@ void DisassemblySettings::SetAddressMode(BNDisassemblyAddressMode mode)
}
+uint64_t DisassemblySettings::GetAddressBaseOffset() const
+{
+ return BNGetDisassemblyAddressBaseOffset(m_object);
+}
+
+
+void DisassemblySettings::SetAddressBaseOffset(uint64_t addressBaseOffset)
+{
+ BNSetDisassemblyAddressBaseOffset(m_object, addressBaseOffset);
+}
+
+
DisassemblyTextLine::DisassemblyTextLine()
{
addr = 0;
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 9d4a3ae6..4d5a90ee 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -9722,6 +9722,8 @@ namespace BinaryNinja {
void SetGutterWidth(size_t width);
BNDisassemblyAddressMode GetAddressMode() const;
void SetAddressMode(BNDisassemblyAddressMode mode);
+ uint64_t GetAddressBaseOffset() const;
+ void SetAddressBaseOffset(uint64_t addressBaseOffset);
};
/*!
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 5609d72b..010cf681 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -708,6 +708,7 @@ extern "C"
RelativeToSegmentStartDisassemblyAddressMode,
RelativeToSectionStartDisassemblyAddressMode,
RelativeToFunctionStartDisassemblyAddressMode,
+ RelativeToAddressBaseOffsetDisassemblyAddressMode,
DisassemblyAddressModeMask = 0xFFFF,
IncludeNameDisassemblyAddressModeFlag = 0x10000,
@@ -5079,6 +5080,8 @@ extern "C"
BINARYNINJACOREAPI void BNSetDisassemblyGutterWidth(BNDisassemblySettings* settings, size_t width);
BINARYNINJACOREAPI BNDisassemblyAddressMode BNGetDisassemblyAddressMode(BNDisassemblySettings* settings);
BINARYNINJACOREAPI void BNSetDisassemblyAddressMode(BNDisassemblySettings* settings, BNDisassemblyAddressMode mode);
+ BINARYNINJACOREAPI uint64_t BNGetDisassemblyAddressBaseOffset(BNDisassemblySettings* settings);
+ BINARYNINJACOREAPI void BNSetDisassemblyAddressBaseOffset(BNDisassemblySettings* settings, uint64_t addressBaseOffset);
// Flow graphs
BINARYNINJACOREAPI BNFlowGraph* BNCreateFlowGraph(void);
diff --git a/ui/disassemblyview.h b/ui/disassemblyview.h
index 74dcb2fe..80f767bc 100644
--- a/ui/disassemblyview.h
+++ b/ui/disassemblyview.h
@@ -78,6 +78,7 @@ class BINARYNINJAUIAPI DisassemblyView : public FlowGraphWidget
void toggleOption(BNDisassemblyOption option);
void setAddressMode(std::optional<BNDisassemblyAddressMode> mode, std::optional<bool> hex, std::optional<bool> withName);
void setDisplayedFileName();
+ void setAddressBaseOffset(bool toHere);
virtual DisassemblySettingsRef getDisassemblySettings() override;
virtual void setDisassemblySettings(DisassemblySettingsRef settings) override;
diff --git a/ui/linearview.h b/ui/linearview.h
index 476645b9..8223c515 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 setDisplayedFileName();
+ void setAddressBaseOffset(bool toHere);
virtual bool goToReference(FunctionRef func, uint64_t source, uint64_t target) override;
QFont getFont() override { return m_render.getFont(); }