@@ -1842,6 +1842,13 @@ extern "C"
1842
1842
uint8_t confidence;
1843
1843
} BNTypeWithConfidence;
1844
1844
1845
+ typedef enum BNFunctionAnalysisSkipOverride
1846
+ {
1847
+ DefaultFunctionAnalysisSkip,
1848
+ NeverSkipFunctionAnalysis,
1849
+ AlwaysSkipFunctionAnalysis
1850
+ } BNFunctionAnalysisSkipOverride;
1851
+
1845
1852
typedef struct BNCustomArchitecture
1846
1853
{
1847
1854
void * context;
@@ -1860,6 +1867,8 @@ extern "C"
1860
1867
void (*freeInstructionText)(BNInstructionTextToken* tokens, size_t count);
1861
1868
bool (*getInstructionLowLevelIL)(
1862
1869
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);
1863
1872
char * (*getRegisterName)(void * ctxt, uint32_t reg);
1864
1873
char * (*getFlagName)(void * ctxt, uint32_t flag);
1865
1874
char * (*getFlagWriteTypeName)(void * ctxt, uint32_t flags);
@@ -3128,13 +3137,6 @@ extern "C"
3128
3137
uint8_t confidence;
3129
3138
} BNRegisterStackAdjustment;
3130
3139
3131
- typedef enum BNFunctionAnalysisSkipOverride
3132
- {
3133
- DefaultFunctionAnalysisSkip,
3134
- NeverSkipFunctionAnalysis,
3135
- AlwaysSkipFunctionAnalysis
3136
- } BNFunctionAnalysisSkipOverride;
3137
-
3138
3140
typedef enum BNReportType
3139
3141
{
3140
3142
PlainTextReportType,
@@ -4460,6 +4462,8 @@ extern "C"
4460
4462
BINARYNINJACOREAPI bool BNGetInstructionLowLevelIL (
4461
4463
BNArchitecture* arch, const uint8_t * data, uint64_t addr, size_t * len, BNLowLevelILFunction* il);
4462
4464
BINARYNINJACOREAPI void BNFreeInstructionText (BNInstructionTextToken* tokens, size_t count);
4465
+ BINARYNINJACOREAPI bool BNArchitectureAnalyzeBasicBlocks (BNArchitecture* arch, BNFunction* function,
4466
+ bool incrementalUpdate, BNFunctionAnalysisSkipOverride analysisSkipOverride);
4463
4467
BINARYNINJACOREAPI void BNFreeInstructionTextLines (BNInstructionTextLine* lines, size_t count);
4464
4468
BINARYNINJACOREAPI char * BNGetArchitectureRegisterName (BNArchitecture* arch, uint32_t reg);
4465
4469
BINARYNINJACOREAPI char * BNGetArchitectureFlagName (BNArchitecture* arch, uint32_t flag);
@@ -4575,6 +4579,7 @@ extern "C"
4575
4579
BINARYNINJACOREAPI void BNUpdateAnalysisAndWait (BNBinaryView* view);
4576
4580
BINARYNINJACOREAPI void BNUpdateAnalysis (BNBinaryView* view);
4577
4581
BINARYNINJACOREAPI void BNAbortAnalysis (BNBinaryView* view);
4582
+ BINARYNINJACOREAPI bool BNAnalysisIsAborted (BNBinaryView* view);
4578
4583
BINARYNINJACOREAPI bool BNIsFunctionUpdateNeeded (BNFunction* func);
4579
4584
BINARYNINJACOREAPI void BNRequestAdvancedFunctionAnalysisData (BNFunction* func);
4580
4585
BINARYNINJACOREAPI void BNReleaseAdvancedFunctionAnalysisData (BNFunction* func);
@@ -4638,6 +4643,9 @@ extern "C"
4638
4643
BINARYNINJACOREAPI void BNFreeBasicBlock (BNBasicBlock* block);
4639
4644
BINARYNINJACOREAPI BNBasicBlock** BNGetFunctionBasicBlockList (BNFunction* func, size_t * count);
4640
4645
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);
4641
4649
BINARYNINJACOREAPI BNBasicBlock* BNGetFunctionBasicBlockAtAddress (
4642
4650
BNFunction* func, BNArchitecture* arch, uint64_t addr);
4643
4651
BINARYNINJACOREAPI BNBasicBlock* BNGetRecentBasicBlockForAddress (BNBinaryView* view, uint64_t addr);
@@ -4775,6 +4783,7 @@ extern "C"
4775
4783
BINARYNINJACOREAPI BNArchitecture* BNGetBasicBlockArchitecture (BNBasicBlock* block);
4776
4784
BINARYNINJACOREAPI BNBasicBlock* BNGetBasicBlockSource (BNBasicBlock* block);
4777
4785
BINARYNINJACOREAPI uint64_t BNGetBasicBlockStart (BNBasicBlock* block);
4786
+ BINARYNINJACOREAPI void BNSetBasicBlockEnd (BNBasicBlock* block, uint64_t end);
4778
4787
BINARYNINJACOREAPI uint64_t BNGetBasicBlockEnd (BNBasicBlock* block);
4779
4788
BINARYNINJACOREAPI uint64_t BNGetBasicBlockLength (BNBasicBlock* block);
4780
4789
BINARYNINJACOREAPI BNBasicBlockEdge* BNGetBasicBlockOutgoingEdges (BNBasicBlock* block, size_t * count);
0 commit comments