summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
Diffstat (limited to 'binaryninjacore.h')
-rw-r--r--binaryninjacore.h29
1 files changed, 26 insertions, 3 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 6104e71a..8dbda6fe 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 99
+#define BN_CURRENT_CORE_ABI_VERSION 100
// 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 97
+#define BN_MINIMUM_CORE_ABI_VERSION 100
#ifdef __GNUC__
#ifdef BINARYNINJACORE_LIBRARY
@@ -230,6 +230,7 @@ extern "C"
typedef struct BNTypeBuilder BNTypeBuilder;
typedef struct BNTypeLibrary BNTypeLibrary;
typedef struct BNTypeLibraryMapping BNTypeLibraryMapping;
+ typedef struct BNFieldResolutionInfo BNFieldResolutionInfo;
typedef struct BNStructure BNStructure;
typedef struct BNStructureBuilder BNStructureBuilder;
typedef struct BNTagType BNTagType;
@@ -2627,6 +2628,13 @@ extern "C"
BNPossibleValueSet value;
} BNUserVariableValue;
+ typedef struct BNVariableFieldResolutionInfo
+ {
+ BNArchitectureAndAddress location;
+ BNVariable var;
+ BNFieldResolutionInfo* info;
+ } BNVariableFieldResolutionInfo;
+
typedef enum BNFunctionUpdateType
{
UserFunctionUpdate,
@@ -5422,6 +5430,15 @@ extern "C"
BINARYNINJACOREAPI void BNCreateForcedVariableVersion(BNFunction* func, const BNVariable* var, const BNArchitectureAndAddress* defSite);
BINARYNINJACOREAPI void BNClearForcedVariableVersion(BNFunction* func, const BNVariable* var, const BNArchitectureAndAddress* defSite);
+ BINARYNINJACOREAPI void BNSetFieldResolutionForVariableAt(BNFunction* func, const BNVariable* var,
+ const BNArchitectureAndAddress* defSite, const BNFieldResolutionInfo* info);
+ BINARYNINJACOREAPI BNFieldResolutionInfo* BNGetFieldResolutionForVariableAt(BNFunction* func, const BNVariable* var,
+ const BNArchitectureAndAddress* defSite);
+ BINARYNINJACOREAPI BNVariableFieldResolutionInfo* BNGetAllVariableFieldResolutions(BNFunction* func, size_t* count);
+ BINARYNINJACOREAPI void BNFreeVariableFieldResolutions(BNVariableFieldResolutionInfo* result, size_t count);
+ BINARYNINJACOREAPI void BNClearFieldResolutionForVariableAt(BNFunction* func, const BNVariable* var,
+ const BNArchitectureAndAddress* defSite);
+
BINARYNINJACOREAPI void BNRequestFunctionDebugReport(BNFunction* func, const char* name);
BINARYNINJACOREAPI BNILReferenceSource* BNGetMediumLevelILVariableReferences(
@@ -6290,6 +6307,9 @@ extern "C"
BINARYNINJACOREAPI char* BNGetLanguageRepresentationFunctionAnnotationEndString(
BNLanguageRepresentationFunction* func);
+ BINARYNINJACOREAPI BNFieldResolutionInfo* BNNewFieldResolutionInfoReference(BNFieldResolutionInfo* info);
+ BINARYNINJACOREAPI void BNFreeFieldResolutionInfo(BNFieldResolutionInfo* info);
+
// Types
BINARYNINJACOREAPI bool BNTypesEqual(BNType* a, BNType* b);
BINARYNINJACOREAPI bool BNTypesNotEqual(BNType* a, BNType* b);
@@ -6410,10 +6430,13 @@ extern "C"
BNType* type, BNNamedTypeReference* from, BNNamedTypeReference* to);
BINARYNINJACOREAPI bool BNAddTypeMemberTokens(BNType* type, BNBinaryView* data, BNInstructionTextToken** tokens,
- size_t* tokenCount, int64_t offset, char*** nameList, size_t* nameCount, size_t size, bool indirect);
+ size_t* tokenCount, int64_t offset, char*** nameList, size_t* nameCount, size_t size, bool indirect, BNFieldResolutionInfo* info);
BINARYNINJACOREAPI BNTypeDefinitionLine* BNGetTypeLines(BNType* type, BNTypeContainer* types, const char* name, int paddingCols, bool collapsed, BNTokenEscapingType escaping, size_t* count);
BINARYNINJACOREAPI void BNFreeTypeDefinitionLineList(BNTypeDefinitionLine* list, size_t count);
+ BINARYNINJACOREAPI bool BNEnumerateTypesForAccess(BNType* type, BNBinaryView* data, uint64_t offset, size_t size, uint8_t baseConfidence,
+ void (*terminal)(void*, BNTypeWithConfidence*, BNFieldResolutionInfo*), void* ctxt);
+
BINARYNINJACOREAPI BNQualifiedName BNTypeBuilderGetTypeName(BNTypeBuilder* nt);
BINARYNINJACOREAPI void BNTypeBuilderSetTypeName(BNTypeBuilder* type, BNQualifiedName* name);
BINARYNINJACOREAPI void BNTypeBuilderSetAlternateName(BNTypeBuilder* type, const char* name);