@@ -1842,6 +1842,13 @@ extern "C"
18421842 uint8_t confidence;
18431843 } BNTypeWithConfidence;
18441844
1845+ typedef enum BNFunctionAnalysisSkipOverride
1846+ {
1847+ DefaultFunctionAnalysisSkip,
1848+ NeverSkipFunctionAnalysis,
1849+ AlwaysSkipFunctionAnalysis
1850+ } BNFunctionAnalysisSkipOverride;
1851+
18451852 typedef struct BNCustomArchitecture
18461853 {
18471854 void * context;
@@ -1860,6 +1867,8 @@ extern "C"
18601867 void (*freeInstructionText)(BNInstructionTextToken* tokens, size_t count);
18611868 bool (*getInstructionLowLevelIL)(
18621869 void * ctxt, const uint8_t * data, uint64_t addr, size_t * len, BNLowLevelILFunction* il);
1870+ bool (*analyzeBasicBlocks)(void * ctxt, BNFunction* function,
1871+ bool incrementalUpdate, BNFunctionAnalysisSkipOverride analysisSkipOverride);
18631872 char * (*getRegisterName)(void * ctxt, uint32_t reg);
18641873 char * (*getFlagName)(void * ctxt, uint32_t flag);
18651874 char * (*getFlagWriteTypeName)(void * ctxt, uint32_t flags);
@@ -3128,13 +3137,6 @@ extern "C"
31283137 uint8_t confidence;
31293138 } BNRegisterStackAdjustment;
31303139
3131- typedef enum BNFunctionAnalysisSkipOverride
3132- {
3133- DefaultFunctionAnalysisSkip,
3134- NeverSkipFunctionAnalysis,
3135- AlwaysSkipFunctionAnalysis
3136- } BNFunctionAnalysisSkipOverride;
3137-
31383140 typedef enum BNReportType
31393141 {
31403142 PlainTextReportType,
@@ -4460,6 +4462,8 @@ extern "C"
44604462 BINARYNINJACOREAPI bool BNGetInstructionLowLevelIL (
44614463 BNArchitecture* arch, const uint8_t * data, uint64_t addr, size_t * len, BNLowLevelILFunction* il);
44624464 BINARYNINJACOREAPI void BNFreeInstructionText (BNInstructionTextToken* tokens, size_t count);
4465+ BINARYNINJACOREAPI bool BNArchitectureAnalyzeBasicBlocks (BNArchitecture* arch, BNFunction* function,
4466+ bool incrementalUpdate, BNFunctionAnalysisSkipOverride analysisSkipOverride);
44634467 BINARYNINJACOREAPI void BNFreeInstructionTextLines (BNInstructionTextLine* lines, size_t count);
44644468 BINARYNINJACOREAPI char * BNGetArchitectureRegisterName (BNArchitecture* arch, uint32_t reg);
44654469 BINARYNINJACOREAPI char * BNGetArchitectureFlagName (BNArchitecture* arch, uint32_t flag);
@@ -4575,6 +4579,7 @@ extern "C"
45754579 BINARYNINJACOREAPI void BNUpdateAnalysisAndWait (BNBinaryView* view);
45764580 BINARYNINJACOREAPI void BNUpdateAnalysis (BNBinaryView* view);
45774581 BINARYNINJACOREAPI void BNAbortAnalysis (BNBinaryView* view);
4582+ BINARYNINJACOREAPI bool BNAnalysisIsAborted (BNBinaryView* view);
45784583 BINARYNINJACOREAPI bool BNIsFunctionUpdateNeeded (BNFunction* func);
45794584 BINARYNINJACOREAPI void BNRequestAdvancedFunctionAnalysisData (BNFunction* func);
45804585 BINARYNINJACOREAPI void BNReleaseAdvancedFunctionAnalysisData (BNFunction* func);
@@ -4638,6 +4643,9 @@ extern "C"
46384643 BINARYNINJACOREAPI void BNFreeBasicBlock (BNBasicBlock* block);
46394644 BINARYNINJACOREAPI BNBasicBlock** BNGetFunctionBasicBlockList (BNFunction* func, size_t * count);
46404645 BINARYNINJACOREAPI void BNFreeBasicBlockList (BNBasicBlock** blocks, size_t count);
4646+ BINARYNINJACOREAPI BNBasicBlock* BNCreateFunctionBasicBlock (BNFunction* func, BNArchitecture* arch, uint64_t addr);
4647+ BINARYNINJACOREAPI void BNAddFunctionBasicBlock (BNFunction* func, BNBasicBlock* block);
4648+ BINARYNINJACOREAPI void BNFinalizeFunctionBasicBlocks (BNFunction* func);
46414649 BINARYNINJACOREAPI BNBasicBlock* BNGetFunctionBasicBlockAtAddress (
46424650 BNFunction* func, BNArchitecture* arch, uint64_t addr);
46434651 BINARYNINJACOREAPI BNBasicBlock* BNGetRecentBasicBlockForAddress (BNBinaryView* view, uint64_t addr);
@@ -4775,6 +4783,7 @@ extern "C"
47754783 BINARYNINJACOREAPI BNArchitecture* BNGetBasicBlockArchitecture (BNBasicBlock* block);
47764784 BINARYNINJACOREAPI BNBasicBlock* BNGetBasicBlockSource (BNBasicBlock* block);
47774785 BINARYNINJACOREAPI uint64_t BNGetBasicBlockStart (BNBasicBlock* block);
4786+ BINARYNINJACOREAPI void BNSetBasicBlockEnd (BNBasicBlock* block, uint64_t end);
47784787 BINARYNINJACOREAPI uint64_t BNGetBasicBlockEnd (BNBasicBlock* block);
47794788 BINARYNINJACOREAPI uint64_t BNGetBasicBlockLength (BNBasicBlock* block);
47804789 BINARYNINJACOREAPI BNBasicBlockEdge* BNGetBasicBlockOutgoingEdges (BNBasicBlock* block, size_t * count);
0 commit comments