diff options
Diffstat (limited to 'binaryninjacore.h')
| -rw-r--r-- | binaryninjacore.h | 29 |
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); |
