summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binaryninjaapi.h112
-rw-r--r--binaryninjacore.h14
-rw-r--r--binaryview.cpp54
-rw-r--r--examples/triage/exports.cpp2
-rw-r--r--python/binaryview.py17
-rw-r--r--ui/featuremap.h3
-rw-r--r--ui/stringsview.h9
-rw-r--r--ui/tokenizedtextview.h3
-rw-r--r--ui/typeview.h12
9 files changed, 178 insertions, 48 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 4bd32e83..cb33aeff 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -2520,6 +2520,7 @@ namespace BinaryNinja {
private:
BNBinaryDataNotification m_callbacks;
+ static uint64_t NotificationBarrierCallback(void* ctxt, BNBinaryView* object);
static void DataWrittenCallback(void* ctxt, BNBinaryView* data, uint64_t offset, size_t len);
static void DataInsertedCallback(void* ctxt, BNBinaryView* data, uint64_t offset, size_t len);
static void DataRemovedCallback(void* ctxt, BNBinaryView* data, uint64_t offset, uint64_t len);
@@ -2531,44 +2532,115 @@ namespace BinaryNinja {
static void DataVariableRemovedCallback(void* ctxt, BNBinaryView* data, BNDataVariable* var);
static void DataVariableUpdatedCallback(void* ctxt, BNBinaryView* data, BNDataVariable* var);
static void SymbolAddedCallback(void* ctxt, BNBinaryView* view, BNSymbol* sym);
- static void SymbolUpdatedCallback(void* ctxt, BNBinaryView* view, BNSymbol* sym);
static void SymbolRemovedCallback(void* ctxt, BNBinaryView* view, BNSymbol* sym);
+ static void SymbolUpdatedCallback(void* ctxt, BNBinaryView* view, BNSymbol* sym);
+
static void DataMetadataUpdatedCallback(void* ctxt, BNBinaryView* object, uint64_t offset);
static void TagTypeUpdatedCallback(void* ctxt, BNBinaryView* object, BNTagType* tagType);
static void TagAddedCallback(void* ctxt, BNBinaryView* object, BNTagReference* tagRef);
- static void TagUpdatedCallback(void* ctxt, BNBinaryView* object, BNTagReference* tagRef);
static void TagRemovedCallback(void* ctxt, BNBinaryView* object, BNTagReference* tagRef);
+ static void TagUpdatedCallback(void* ctxt, BNBinaryView* object, BNTagReference* tagRef);
+
static void StringFoundCallback(void* ctxt, BNBinaryView* data, BNStringType type, uint64_t offset, size_t len);
- static void StringRemovedCallback(
- void* ctxt, BNBinaryView* data, BNStringType type, uint64_t offset, size_t len);
+ static void StringRemovedCallback(void* ctxt, BNBinaryView* data, BNStringType type, uint64_t offset, size_t len);
static void TypeDefinedCallback(void* ctxt, BNBinaryView* data, BNQualifiedName* name, BNType* type);
static void TypeUndefinedCallback(void* ctxt, BNBinaryView* data, BNQualifiedName* name, BNType* type);
static void TypeReferenceChangedCallback(void* ctx, BNBinaryView* data, BNQualifiedName* name, BNType* type);
- static void TypeFieldReferenceChangedCallback(
- void* ctx, BNBinaryView* data, BNQualifiedName* name, uint64_t offset);
+ static void TypeFieldReferenceChangedCallback(void* ctx, BNBinaryView* data, BNQualifiedName* name, uint64_t offset);
static void SegmentAddedCallback(void* ctx, BNBinaryView* data, BNSegment* segment);
- static void SegmentUpdatedCallback(void* ctx, BNBinaryView* data, BNSegment* segment);
static void SegmentRemovedCallback(void* ctx, BNBinaryView* data, BNSegment* segment);
+ static void SegmentUpdatedCallback(void* ctx, BNBinaryView* data, BNSegment* segment);
+
static void SectionAddedCallback(void* ctx, BNBinaryView* data, BNSection* section);
- static void SectionUpdatedCallback(void* ctx, BNBinaryView* data, BNSection* section);
static void SectionRemovedCallback(void* ctx, BNBinaryView* data, BNSection* section);
+ static void SectionUpdatedCallback(void* ctx, BNBinaryView* data, BNSection* section);
+
static void ComponentNameUpdatedCallback(void* ctxt, BNBinaryView* data, char* previousName, BNComponent* component);
static void ComponentAddedCallback(void* ctxt, BNBinaryView* data, BNComponent* component);
- static void ComponentRemovedCallback(
- void* ctxt, BNBinaryView* data, BNComponent* formerParent, BNComponent* component);
- static void ComponentMovedCallback(
- void* ctxt, BNBinaryView* data, BNComponent* formerParent, BNComponent* newParent, BNComponent* component);
+ static void ComponentRemovedCallback(void* ctxt, BNBinaryView* data, BNComponent* formerParent, BNComponent* component);
+ static void ComponentMovedCallback(void* ctxt, BNBinaryView* data, BNComponent* formerParent, BNComponent* newParent, BNComponent* component);
static void ComponentFunctionAddedCallback(void* ctxt, BNBinaryView* data, BNComponent* component, BNFunction* function);
static void ComponentFunctionRemovedCallback(void* ctxt, BNBinaryView* data, BNComponent* component, BNFunction* function);
static void ComponentDataVariableAddedCallback(void* ctxt, BNBinaryView* data, BNComponent* component, BNDataVariable* var);
static void ComponentDataVariableRemovedCallback(void* ctxt, BNBinaryView* data, BNComponent* component, BNDataVariable* var);
public:
+
+ enum NotificationType : uint64_t
+ {
+ NotificationBarrier = 1ULL << 0,
+ DataWritten = 1ULL << 1,
+ DataInserted = 1ULL << 2,
+ DataRemoved = 1ULL << 3,
+ FunctionAdded = 1ULL << 4,
+ FunctionRemoved = 1ULL << 5,
+ FunctionUpdated = 1ULL << 6,
+ FunctionUpdateRequested = 1ULL << 7,
+ DataVariableAdded = 1ULL << 8,
+ DataVariableRemoved = 1ULL << 9,
+ DataVariableUpdated = 1ULL << 10,
+ DataMetadataUpdated = 1ULL << 11,
+ TagTypeUpdated = 1ULL << 12,
+ TagAdded = 1ULL << 13,
+ TagRemoved = 1ULL << 14,
+ TagUpdated = 1ULL << 15,
+ SymbolAdded = 1ULL << 16,
+ SymbolRemoved = 1ULL << 17,
+ SymbolUpdated = 1ULL << 18,
+ StringFound = 1ULL << 19,
+ StringRemoved = 1ULL << 20,
+ TypeDefined = 1ULL << 21,
+ TypeUndefined = 1ULL << 22,
+ TypeReferenceChanged = 1ULL << 23,
+ TypeFieldReferenceChanged = 1ULL << 24,
+ SegmentAdded = 1ULL << 25,
+ SegmentRemoved = 1ULL << 26,
+ SegmentUpdated = 1ULL << 27,
+ SectionAdded = 1ULL << 28,
+ SectionRemoved = 1ULL << 29,
+ SectionUpdated = 1ULL << 30,
+ ComponentNameUpdated = 1ULL << 31,
+ ComponentAdded = 1ULL << 32,
+ ComponentRemoved = 1ULL << 33,
+ ComponentMoved = 1ULL << 34,
+ ComponentFunctionAdded = 1ULL << 35,
+ ComponentFunctionRemoved = 1ULL << 36,
+ ComponentDataVariableAdded = 1ULL << 37,
+ ComponentDataVariableRemoved = 1ULL << 38,
+
+ BinaryDataUpdates = DataWritten | DataInserted | DataRemoved,
+ FunctionLifetime = FunctionAdded | FunctionRemoved,
+ FunctionUpdates = FunctionLifetime | FunctionUpdated,
+ DataVariableLifetime = DataVariableAdded | DataVariableRemoved,
+ DataVariableUpdates = DataVariableLifetime | DataVariableUpdated,
+ TagLifetime = TagAdded | TagRemoved,
+ TagUpdates = TagLifetime | TagUpdated,
+ SymbolLifetime = SymbolAdded | SymbolRemoved,
+ SymbolUpdates = SymbolLifetime | SymbolUpdated,
+ StringUpdates = StringFound | StringRemoved,
+ TypeLifetime = TypeDefined | TypeUndefined,
+ TypeUpdates = TypeLifetime | TypeReferenceChanged | TypeFieldReferenceChanged,
+ SegmentLifetime = SegmentAdded | SegmentRemoved,
+ SegmentUpdates = SegmentLifetime | SegmentUpdated,
+ SectionLifetime = SectionAdded | SectionRemoved,
+ SectionUpdates = SectionLifetime | SectionUpdated,
+ ComponentUpdates = ComponentAdded | ComponentRemoved | ComponentMoved | ComponentFunctionAdded | ComponentFunctionRemoved | ComponentDataVariableAdded | ComponentDataVariableRemoved
+ };
+
+ using NotificationTypes = uint64_t;
+
BinaryDataNotification();
+ BinaryDataNotification(NotificationTypes notifications);
+
virtual ~BinaryDataNotification() {}
BNBinaryDataNotification* GetCallbacks() { return &m_callbacks; }
+ virtual uint64_t OnNotificationBarrier(BinaryView* view)
+ {
+ (void)view;
+ return 0;
+ }
virtual void OnBinaryDataWritten(BinaryView* view, uint64_t offset, size_t len)
{
(void)view;
@@ -2637,12 +2709,12 @@ namespace BinaryNinja {
(void)view;
(void)tagRef;
}
- virtual void OnTagUpdated(BinaryView* view, const TagReference& tagRef)
+ virtual void OnTagRemoved(BinaryView* view, const TagReference& tagRef)
{
(void)view;
(void)tagRef;
}
- virtual void OnTagRemoved(BinaryView* view, const TagReference& tagRef)
+ virtual void OnTagUpdated(BinaryView* view, const TagReference& tagRef)
{
(void)view;
(void)tagRef;
@@ -2652,12 +2724,12 @@ namespace BinaryNinja {
(void)view;
(void)sym;
}
- virtual void OnSymbolUpdated(BinaryView* view, Symbol* sym)
+ virtual void OnSymbolRemoved(BinaryView* view, Symbol* sym)
{
(void)view;
(void)sym;
}
- virtual void OnSymbolRemoved(BinaryView* view, Symbol* sym)
+ virtual void OnSymbolUpdated(BinaryView* view, Symbol* sym)
{
(void)view;
(void)sym;
@@ -2705,12 +2777,12 @@ namespace BinaryNinja {
(void)data;
(void)segment;
}
- virtual void OnSegmentUpdated(BinaryView* data, Segment* segment)
+ virtual void OnSegmentRemoved(BinaryView* data, Segment* segment)
{
(void)data;
(void)segment;
}
- virtual void OnSegmentRemoved(BinaryView* data, Segment* segment)
+ virtual void OnSegmentUpdated(BinaryView* data, Segment* segment)
{
(void)data;
(void)segment;
@@ -2720,12 +2792,12 @@ namespace BinaryNinja {
(void)data;
(void)section;
}
- virtual void OnSectionUpdated(BinaryView* data, Section* section)
+ virtual void OnSectionRemoved(BinaryView* data, Section* section)
{
(void)data;
(void)section;
}
- virtual void OnSectionRemoved(BinaryView* data, Section* section)
+ virtual void OnSectionUpdated(BinaryView* data, Section* section)
{
(void)data;
(void)section;
diff --git a/binaryninjacore.h b/binaryninjacore.h
index e6b34506..ae918cd5 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -37,14 +37,14 @@
// Current ABI version for linking to the core. This is incremented any time
// there are changes to the API that affect linking, including new functions,
// new types, or modifications to existing functions or types.
-#define BN_CURRENT_CORE_ABI_VERSION 38
+#define BN_CURRENT_CORE_ABI_VERSION 39
// Minimum ABI version that is supported for loading of plugins. Plugins that
// are linked to an ABI version less than this will not be able to load and
// will require rebuilding. The minimum version is increased when there are
// incompatible changes that break binary compatibility, such as changes to
// existing types or functions.
-#define BN_MINIMUM_CORE_ABI_VERSION 38
+#define BN_MINIMUM_CORE_ABI_VERSION 39
#ifdef __GNUC__
#ifdef BINARYNINJACORE_LIBRARY
@@ -1439,6 +1439,7 @@ extern "C"
typedef struct BNBinaryDataNotification
{
void* context;
+ uint64_t (*notificationBarrier)(void*ctxt, BNBinaryView* view);
void (*dataWritten)(void* ctxt, BNBinaryView* view, uint64_t offset, size_t len);
void (*dataInserted)(void* ctxt, BNBinaryView* view, uint64_t offset, size_t len);
void (*dataRemoved)(void* ctxt, BNBinaryView* view, uint64_t offset, uint64_t len);
@@ -1452,11 +1453,12 @@ extern "C"
void (*dataMetadataUpdated)(void* ctxt, BNBinaryView* view, uint64_t offset);
void (*tagTypeUpdated)(void* ctxt, BNBinaryView* view, BNTagType* tagType);
void (*tagAdded)(void* ctxt, BNBinaryView* view, BNTagReference* tagRef);
- void (*tagUpdated)(void* ctxt, BNBinaryView* view, BNTagReference* tagRef);
void (*tagRemoved)(void* ctxt, BNBinaryView* view, BNTagReference* tagRef);
+ void (*tagUpdated)(void* ctxt, BNBinaryView* view, BNTagReference* tagRef);
+
void (*symbolAdded)(void* ctxt, BNBinaryView* view, BNSymbol* sym);
- void (*symbolUpdated)(void* ctxt, BNBinaryView* view, BNSymbol* sym);
void (*symbolRemoved)(void* ctxt, BNBinaryView* view, BNSymbol* sym);
+ void (*symbolUpdated)(void* ctxt, BNBinaryView* view, BNSymbol* sym);
void (*stringFound)(void* ctxt, BNBinaryView* view, BNStringType type, uint64_t offset, size_t len);
void (*stringRemoved)(void* ctxt, BNBinaryView* view, BNStringType type, uint64_t offset, size_t len);
void (*typeDefined)(void* ctxt, BNBinaryView* view, BNQualifiedName* name, BNType* type);
@@ -1464,11 +1466,11 @@ extern "C"
void (*typeReferenceChanged)(void* ctxt, BNBinaryView* view, BNQualifiedName* name, BNType* type);
void (*typeFieldReferenceChanged)(void* ctxt, BNBinaryView* view, BNQualifiedName* name, uint64_t offset);
void (*segmentAdded)(void* ctxt, BNBinaryView* view, BNSegment* segment);
- void (*segmentUpdated)(void* ctxt, BNBinaryView* view, BNSegment* segment);
void (*segmentRemoved)(void* ctxt, BNBinaryView* view, BNSegment* segment);
+ void (*segmentUpdated)(void* ctxt, BNBinaryView* view, BNSegment* segment);
void (*sectionAdded)(void* ctxt, BNBinaryView* view, BNSection* section);
- void (*sectionUpdated)(void* ctxt, BNBinaryView* view, BNSection* section);
void (*sectionRemoved)(void* ctxt, BNBinaryView* view, BNSection* section);
+ void (*sectionUpdated)(void* ctxt, BNBinaryView* view, BNSection* section);
void (*componentNameUpdated)(void* ctxt, BNBinaryView* view, char* previousName, BNComponent* component);
void (*componentAdded)(void*ctxt, BNBinaryView* view, BNComponent* component);
void (*componentMoved)(void*ctxt, BNBinaryView* view, BNComponent* formerParent, BNComponent* newParent, BNComponent* component);
diff --git a/binaryview.cpp b/binaryview.cpp
index 2be28283..b1bd6f4d 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -38,6 +38,14 @@ struct SymbolQueueAddContext
};
+uint64_t BinaryDataNotification::NotificationBarrierCallback(void* ctxt, BNBinaryView* object)
+{
+ BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
+ Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
+ return notify->OnNotificationBarrier(view);
+}
+
+
void BinaryDataNotification::DataWrittenCallback(void* ctxt, BNBinaryView* object, uint64_t offset, size_t len)
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
@@ -403,6 +411,7 @@ void BinaryDataNotification::ComponentDataVariableRemovedCallback(void* ctxt, BN
BinaryDataNotification::BinaryDataNotification()
{
m_callbacks.context = this;
+ m_callbacks.notificationBarrier = nullptr;
m_callbacks.dataWritten = DataWrittenCallback;
m_callbacks.dataInserted = DataInsertedCallback;
m_callbacks.dataRemoved = DataRemovedCallback;
@@ -444,6 +453,51 @@ BinaryDataNotification::BinaryDataNotification()
}
+BinaryDataNotification::BinaryDataNotification(NotificationTypes notifications)
+{
+ m_callbacks.context = this;
+ m_callbacks.notificationBarrier = (notifications & NotificationType::NotificationBarrier) ? NotificationBarrierCallback : nullptr;
+ m_callbacks.dataWritten = (notifications & NotificationType::DataWritten) ? DataWrittenCallback : nullptr;
+ m_callbacks.dataInserted = (notifications & NotificationType::DataInserted) ? DataInsertedCallback : nullptr;
+ m_callbacks.dataRemoved = (notifications & NotificationType::DataRemoved) ? DataRemovedCallback : nullptr;
+ m_callbacks.functionAdded = (notifications & NotificationType::FunctionAdded) ? FunctionAddedCallback : nullptr;
+ m_callbacks.functionRemoved = (notifications & NotificationType::FunctionRemoved) ? FunctionRemovedCallback : nullptr;
+ m_callbacks.functionUpdated = (notifications & NotificationType::FunctionUpdated) ? FunctionUpdatedCallback : nullptr;
+ m_callbacks.functionUpdateRequested = (notifications & NotificationType::FunctionUpdateRequested) ? FunctionUpdateRequestedCallback : nullptr;
+ m_callbacks.dataVariableAdded = (notifications & NotificationType::DataVariableAdded) ? DataVariableAddedCallback : nullptr;
+ m_callbacks.dataVariableRemoved = (notifications & NotificationType::DataVariableRemoved) ? DataVariableRemovedCallback : nullptr;
+ m_callbacks.dataVariableUpdated = (notifications & NotificationType::DataVariableUpdated) ? DataVariableUpdatedCallback : nullptr;
+ m_callbacks.dataMetadataUpdated = (notifications & NotificationType::DataMetadataUpdated) ? DataMetadataUpdatedCallback : nullptr;
+ m_callbacks.tagTypeUpdated = (notifications & NotificationType::TagTypeUpdated) ? TagTypeUpdatedCallback : nullptr;
+ m_callbacks.tagAdded = (notifications & NotificationType::TagAdded) ? TagAddedCallback : nullptr;
+ m_callbacks.tagUpdated = (notifications & NotificationType::TagUpdated) ? TagUpdatedCallback : nullptr;
+ m_callbacks.tagRemoved = (notifications & NotificationType::TagRemoved) ? TagRemovedCallback : nullptr;
+ m_callbacks.symbolAdded = (notifications & NotificationType::SymbolAdded) ? SymbolAddedCallback : nullptr;
+ m_callbacks.symbolUpdated = (notifications & NotificationType::SymbolUpdated) ? SymbolUpdatedCallback : nullptr;
+ m_callbacks.symbolRemoved = (notifications & NotificationType::SymbolRemoved) ? SymbolRemovedCallback : nullptr;
+ m_callbacks.stringFound = (notifications & NotificationType::StringFound) ? StringFoundCallback : nullptr;
+ m_callbacks.stringRemoved = (notifications & NotificationType::StringRemoved) ? StringRemovedCallback : nullptr;
+ m_callbacks.typeDefined = (notifications & NotificationType::TypeDefined) ? TypeDefinedCallback : nullptr;
+ m_callbacks.typeUndefined = (notifications & NotificationType::TypeUndefined) ? TypeUndefinedCallback : nullptr;
+ m_callbacks.typeReferenceChanged = (notifications & NotificationType::TypeReferenceChanged) ? TypeReferenceChangedCallback : nullptr;
+ m_callbacks.typeFieldReferenceChanged = (notifications & NotificationType::TypeFieldReferenceChanged) ? TypeFieldReferenceChangedCallback : nullptr;
+ m_callbacks.segmentAdded = (notifications & NotificationType::SegmentAdded) ? SegmentAddedCallback : nullptr;
+ m_callbacks.segmentUpdated = (notifications & NotificationType::SegmentUpdated) ? SegmentUpdatedCallback : nullptr;
+ m_callbacks.segmentRemoved = (notifications & NotificationType::SegmentRemoved) ? SegmentRemovedCallback : nullptr;
+ m_callbacks.sectionAdded = (notifications & NotificationType::SectionAdded) ? SectionAddedCallback : nullptr;
+ m_callbacks.sectionUpdated = (notifications & NotificationType::SectionUpdated) ? SectionUpdatedCallback : nullptr;
+ m_callbacks.sectionRemoved = (notifications & NotificationType::SectionRemoved) ? SectionRemovedCallback : nullptr;
+ m_callbacks.componentNameUpdated = (notifications & NotificationType::ComponentNameUpdated) ? ComponentNameUpdatedCallback : nullptr;
+ m_callbacks.componentAdded = (notifications & NotificationType::ComponentAdded) ? ComponentAddedCallback : nullptr;
+ m_callbacks.componentRemoved = (notifications & NotificationType::ComponentRemoved) ? ComponentRemovedCallback : nullptr;
+ m_callbacks.componentMoved = (notifications & NotificationType::ComponentMoved) ? ComponentMovedCallback : nullptr;
+ m_callbacks.componentFunctionAdded = (notifications & NotificationType::ComponentFunctionAdded) ? ComponentFunctionAddedCallback : nullptr;
+ m_callbacks.componentFunctionRemoved = (notifications & NotificationType::ComponentFunctionRemoved) ? ComponentFunctionRemovedCallback : nullptr;
+ m_callbacks.componentDataVariableAdded = (notifications & NotificationType::ComponentDataVariableAdded) ? ComponentDataVariableAddedCallback : nullptr;
+ m_callbacks.componentDataVariableRemoved = (notifications & NotificationType::ComponentDataVariableRemoved) ? ComponentDataVariableRemovedCallback : nullptr;
+}
+
+
Symbol::Symbol(BNSymbolType type, const string& shortName, const string& fullName, const string& rawName, uint64_t addr,
BNSymbolBinding binding, const NameSpace& nameSpace, uint64_t ordinal)
{
diff --git a/examples/triage/exports.cpp b/examples/triage/exports.cpp
index 452401f2..05662eeb 100644
--- a/examples/triage/exports.cpp
+++ b/examples/triage/exports.cpp
@@ -14,7 +14,7 @@ const int ColumnCount = 3;
const int ColumnVisibleRole = Qt::UserRole;
-GenericExportsModel::GenericExportsModel(BinaryViewRef data)
+GenericExportsModel::GenericExportsModel(BinaryViewRef data): BinaryDataNotification(FunctionUpdates | SymbolUpdates)
{
m_sortOrder = Qt::AscendingOrder;
m_data = data;
diff --git a/python/binaryview.py b/python/binaryview.py
index d94621f7..3f2d9a20 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -467,6 +467,7 @@ class BinaryDataNotificationCallbacks:
self._notify = notify
self._cb = core.BNBinaryDataNotification()
self._cb.context = 0
+ self._cb.notificationBarrier = self._cb.notificationBarrier.__class__(self._notification_barrier)
self._cb.dataWritten = self._cb.dataWritten.__class__(self._data_written)
self._cb.dataInserted = self._cb.dataInserted.__class__(self._data_inserted)
self._cb.dataRemoved = self._cb.dataRemoved.__class__(self._data_removed)
@@ -480,11 +481,12 @@ class BinaryDataNotificationCallbacks:
self._cb.dataMetadataUpdated = self._cb.dataMetadataUpdated.__class__(self._data_metadata_updated)
self._cb.tagTypeUpdated = self._cb.tagTypeUpdated.__class__(self._tag_type_updated)
self._cb.tagAdded = self._cb.tagAdded.__class__(self._tag_added)
- self._cb.tagUpdated = self._cb.tagUpdated.__class__(self._tag_updated)
self._cb.tagRemoved = self._cb.tagRemoved.__class__(self._tag_removed)
+ self._cb.tagUpdated = self._cb.tagUpdated.__class__(self._tag_updated)
+
self._cb.symbolAdded = self._cb.symbolAdded.__class__(self._symbol_added)
- self._cb.symbolUpdated = self._cb.symbolUpdated.__class__(self._symbol_updated)
self._cb.symbolRemoved = self._cb.symbolRemoved.__class__(self._symbol_removed)
+ self._cb.symbolUpdated = self._cb.symbolUpdated.__class__(self._symbol_updated)
self._cb.stringFound = self._cb.stringFound.__class__(self._string_found)
self._cb.stringRemoved = self._cb.stringRemoved.__class__(self._string_removed)
self._cb.typeDefined = self._cb.typeDefined.__class__(self._type_defined)
@@ -492,11 +494,12 @@ class BinaryDataNotificationCallbacks:
self._cb.typeReferenceChanged = self._cb.typeReferenceChanged.__class__(self._type_ref_changed)
self._cb.typeFieldReferenceChanged = self._cb.typeFieldReferenceChanged.__class__(self._type_field_ref_changed)
self._cb.segmentAdded = self._cb.segmentAdded.__class__(self._segment_added)
- self._cb.segmentUpdated = self._cb.segmentUpdated.__class__(self._segment_updated)
self._cb.segmentRemoved = self._cb.segmentRemoved.__class__(self._segment_removed)
+ self._cb.segmentUpdated = self._cb.segmentUpdated.__class__(self._segment_updated)
+
self._cb.sectionAdded = self._cb.sectionAdded.__class__(self._section_added)
- self._cb.sectionUpdated = self._cb.sectionUpdated.__class__(self._section_updated)
self._cb.sectionRemoved = self._cb.sectionRemoved.__class__(self._section_removed)
+ self._cb.sectionUpdated = self._cb.sectionUpdated.__class__(self._section_updated)
self._cb.componentNameUpdated = self._cb.componentNameUpdated.__class__(self._component_name_updated)
self._cb.componentAdded = self._cb.componentAdded.__class__(self._component_added)
self._cb.componentRemoved = self._cb.componentRemoved.__class__(self._component_removed)
@@ -512,6 +515,12 @@ class BinaryDataNotificationCallbacks:
def _unregister(self) -> None:
core.BNUnregisterDataNotification(self._view.handle, self._cb)
+ def _notification_barrier(self, ctxt, view: core.BNBinaryView) -> None:
+ try:
+ self._notify.notification_barrier(self._view)
+ except OSError:
+ log_error(traceback.format_exc())
+
def _data_written(self, ctxt, view: core.BNBinaryView, offset: int, length: int) -> None:
try:
self._notify.data_written(self._view, offset, length)
diff --git a/ui/featuremap.h b/ui/featuremap.h
index 9376aa5d..8a5d3d19 100644
--- a/ui/featuremap.h
+++ b/ui/featuremap.h
@@ -99,8 +99,7 @@ class BINARYNINJAUIAPI FeatureMap : public QWidget, public BinaryNinja::BinaryDa
virtual void OnDataVariableRemoved(BinaryNinja::BinaryView* data, const BinaryNinja::DataVariable& var) override;
virtual void OnDataVariableUpdated(BinaryNinja::BinaryView* data, const BinaryNinja::DataVariable& var) override;
virtual void OnStringFound(BinaryNinja::BinaryView* data, BNStringType type, uint64_t offset, size_t len) override;
- virtual void OnStringRemoved(
- BinaryNinja::BinaryView* data, BNStringType type, uint64_t offset, size_t len) override;
+ virtual void OnStringRemoved(BinaryNinja::BinaryView* data, BNStringType type, uint64_t offset, size_t len) override;
void drawImageRect(uint64_t addr, size_t len, uint8_t color);
diff --git a/ui/stringsview.h b/ui/stringsview.h
index 100a496f..be52aebd 100644
--- a/ui/stringsview.h
+++ b/ui/stringsview.h
@@ -18,7 +18,7 @@
\ingroup uiapi
*/
-/*!
+/*!
\ingroup stringsview
*/
@@ -67,8 +67,7 @@ class BINARYNINJAUIAPI StringsListModel : public QAbstractItemModel, public Bina
QModelIndex findString(const BNStringReference& ref);
virtual void OnStringFound(BinaryNinja::BinaryView* data, BNStringType type, uint64_t offset, size_t len) override;
- virtual void OnStringRemoved(
- BinaryNinja::BinaryView* data, BNStringType type, uint64_t offset, size_t len) override;
+ virtual void OnStringRemoved(BinaryNinja::BinaryView* data, BNStringType type, uint64_t offset, size_t len) override;
void updateStrings();
void setFilter(const std::string& filter);
@@ -91,7 +90,7 @@ class BINARYNINJAUIAPI StringsListModel : public QAbstractItemModel, public Bina
bool getIncludeOnlyFromCurrentFunction() const { return m_includeOnlyFromCurrentFunction; };
};
-/*!
+/*!
\ingroup stringsview
*/
@@ -118,7 +117,7 @@ class BINARYNINJAUIAPI StringItemDelegate : public QStyledItemDelegate
class StringsContainer;
class StringsViewSidebarWidget;
-/*!
+/*!
\ingroup stringsview
*/
diff --git a/ui/tokenizedtextview.h b/ui/tokenizedtextview.h
index 0624564d..979908f3 100644
--- a/ui/tokenizedtextview.h
+++ b/ui/tokenizedtextview.h
@@ -76,8 +76,7 @@ class BINARYNINJAUIAPI TokenizedTextView :
void scrollLines(int count);
void bindActions();
- void getHexDumpLineBytes(
- const BinaryNinja::LinearDisassemblyLine& line, size_t& skippedBytes, size_t& totalBytes, size_t& totalCols);
+ void getHexDumpLineBytes(const BinaryNinja::LinearDisassemblyLine& line, size_t& skippedBytes, size_t& totalBytes, size_t& totalCols);
void setSectionSemantics(const std::string& name, BNSectionSemantics semantics);
diff --git a/ui/typeview.h b/ui/typeview.h
index 845bc6bc..a7d447fd 100644
--- a/ui/typeview.h
+++ b/ui/typeview.h
@@ -220,14 +220,10 @@ class BINARYNINJAUIAPI TypeView : public QAbstractScrollArea, public View, publi
uint64_t findMatchingLine(const BinaryNinja::QualifiedName& name, uint64_t offset, size_t& cursorOffset);
bool navigateToType(const std::string& name, uint64_t offset = 0);
- virtual void OnTypeDefined(
- BinaryNinja::BinaryView* view, const BinaryNinja::QualifiedName& name, BinaryNinja::Type* type) override;
- virtual void OnTypeUndefined(
- BinaryNinja::BinaryView* view, const BinaryNinja::QualifiedName& name, BinaryNinja::Type* type) override;
- virtual void OnTypeReferenceChanged(
- BinaryNinja::BinaryView* view, const BinaryNinja::QualifiedName& name, BinaryNinja::Type* type) override;
- virtual void OnTypeFieldReferenceChanged(
- BinaryNinja::BinaryView* view, const BinaryNinja::QualifiedName& name, uint64_t offset) override;
+ virtual void OnTypeDefined(BinaryNinja::BinaryView* view, const BinaryNinja::QualifiedName& name, BinaryNinja::Type* type) override;
+ virtual void OnTypeUndefined(BinaryNinja::BinaryView* view, const BinaryNinja::QualifiedName& name, BinaryNinja::Type* type) override;
+ virtual void OnTypeReferenceChanged(BinaryNinja::BinaryView* view, const BinaryNinja::QualifiedName& name, BinaryNinja::Type* type) override;
+ virtual void OnTypeFieldReferenceChanged(BinaryNinja::BinaryView* view, const BinaryNinja::QualifiedName& name, uint64_t offset) override;
void MarkFilterChanged()
{