From 1652efdc43aa3acbd570c1f042a35da458538bb4 Mon Sep 17 00:00:00 2001 From: Ryan Snyder Date: Mon, 24 Feb 2025 15:14:19 -0500 Subject: core: initial union support with C++ API --- binaryninjaapi.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'binaryninjaapi.h') diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 6b1d268e..15b62e25 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -8764,6 +8764,12 @@ namespace BinaryNinja { {} }; + class FieldResolutionInfo : public CoreRefCountObject + { + public: + FieldResolutionInfo(BNFieldResolutionInfo* info); + }; + struct QualifiedNameAndType { QualifiedName name; @@ -9313,7 +9319,9 @@ namespace BinaryNinja { Ref WithReplacedNamedTypeReference(NamedTypeReference* from, NamedTypeReference* to); bool AddTypeMemberTokens(BinaryView* data, std::vector& tokens, int64_t offset, - std::vector& nameList, size_t size = 0, bool indirect = false); + std::vector& nameList, size_t size = 0, bool indirect = false, FieldResolutionInfo* info = nullptr); + bool EnumerateTypesForAccess(BinaryView* data, uint64_t offset, size_t size, uint8_t baseConfidence, + const std::function>& type, FieldResolutionInfo* path)>& terminal); std::vector GetLines(const TypeContainer& types, const std::string& name, int paddingCols = 64, bool collapsed = false, BNTokenEscapingType escaping = NoTokenEscapingType); @@ -11247,6 +11255,11 @@ namespace BinaryNinja { void CreateForcedVariableVersion(const Variable& var, const ArchAndAddr& location); void ClearForcedVariableVersion(const Variable& var, const ArchAndAddr& location); + void SetFieldResolutionForVariableAt(const Variable& var, const ArchAndAddr& location, FieldResolutionInfo* info); + void ClearFieldResolutionForVariableAt(const Variable& var, const ArchAndAddr& location); + Ref GetFieldResolutionForVariableAt(const Variable& var, const ArchAndAddr& location); + std::map>> GetAllFieldResolutions(); + void RequestDebugReport(const std::string& name); /*! Get the name for a given label ID -- cgit v1.3.1