summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Snyder <ryan@vector35.com>2024-06-26 05:05:24 +0200
committerRyan Snyder <ryan@vector35.com>2024-06-26 06:11:27 +0200
commit17435e0df2dccb8f09ec26e54de017ee05ade8ee (patch)
treea44c43529334ab58a2a974a3cd9528152a354ba7
parentb3b3fcdb51b909a605b4f2b810d95943a436d030 (diff)
ui: support for il xref navigation
-rw-r--r--ui/xreflist.h22
1 files changed, 17 insertions, 5 deletions
diff --git a/ui/xreflist.h b/ui/xreflist.h
index 50730705..9e597144 100644
--- a/ui/xreflist.h
+++ b/ui/xreflist.h
@@ -55,6 +55,14 @@ class XrefItem
TypeXrefType
};
+ enum XrefQueryKind
+ {
+ AddressXrefQuery,
+ TypeXrefQuery,
+ TypeFieldXrefQuery,
+ LocalVarXrefQuery
+ };
+
protected:
FunctionRef m_func;
ArchitectureRef m_arch;
@@ -65,6 +73,7 @@ class XrefItem
BNFunctionGraphType m_ilType;
size_t m_instrId;
XrefType m_type;
+ XrefQueryKind m_queryKind;
XrefDirection m_direction;
mutable std::vector<BinaryNinja::InstructionTextToken> m_cachedTokens;
mutable XrefHeader* m_parentItem;
@@ -74,11 +83,13 @@ class XrefItem
explicit XrefItem();
explicit XrefItem(XrefHeader* parent, XrefType type, FunctionRef func);
// The four constructors are used for code/data/type/variable references, respectively
- explicit XrefItem(BinaryNinja::ReferenceSource ref, XrefType type, XrefDirection direction);
- explicit XrefItem(uint64_t addr, XrefType type, XrefDirection direction);
- explicit XrefItem(BinaryNinja::TypeReferenceSource ref, XrefType type, XrefDirection direction);
- explicit XrefItem(
- BinaryNinja::Variable var, BinaryNinja::ILReferenceSource ref, XrefType type, XrefDirection direction);
+ explicit XrefItem(BinaryNinja::ReferenceSource ref, XrefType type, XrefDirection direction,
+ XrefQueryKind kind);
+ explicit XrefItem(uint64_t addr, XrefType type, XrefDirection direction, XrefQueryKind kind);
+ explicit XrefItem(BinaryNinja::TypeReferenceSource ref, XrefType type, XrefDirection direction,
+ XrefQueryKind kind);
+ explicit XrefItem(BinaryNinja::Variable var, BinaryNinja::ILReferenceSource ref, XrefType type,
+ XrefDirection direction, XrefQueryKind kind);
XrefItem(const XrefItem& ref);
virtual ~XrefItem();
@@ -92,6 +103,7 @@ class XrefItem
BNFunctionGraphType ilType() const { return m_ilType; }
size_t instrId() const { return m_instrId; }
XrefType type() const { return m_type; }
+ XrefQueryKind kind() const { return m_queryKind; }
int size() const { return m_size; }
void setSize(int size) const { m_size = size; }
void setParent(XrefHeader* parent) const;