diff options
| author | Peter LaFosse <peter@vector35.com> | 2019-09-13 09:56:00 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2019-11-15 21:10:58 -0500 |
| commit | db48820f5fed420ad298278e8e6b055baa4ddf06 (patch) | |
| tree | 2b41a6f081f924b622887ddc42f5f579eebbd849 /binaryninjacore.h | |
| parent | 3c329e77e0318db070099be2d1731c4e7ac510ba (diff) | |
Type workflow improvements
Expand type context for data renderers
Add additional linearview helper routines for defining variables inside of structures
fix unit tests
Diffstat (limited to 'binaryninjacore.h')
| -rw-r--r-- | binaryninjacore.h | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h index bd66661d..7f6b725f 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -245,6 +245,8 @@ extern "C" NameSpaceSeparatorToken = 23, TagToken = 24, StructOffsetToken = 25, + StructOffsetByteValueToken = 26, + StructureHexDumpTextToken = 27, // The following are output by the analysis system automatically, these should // not be used directly by the architecture plugins CodeSymbolToken = 64, @@ -1906,14 +1908,20 @@ extern "C" void (*destructFunction)(void* ctxt, BNFunction* func); }; + struct BNTypeContext + { + BNType* type; + size_t offset; + }; + struct BNCustomDataRenderer { void* context; void (*freeObject)(void* ctxt); - bool (*isValidForData)(void* ctxt, BNBinaryView* view, uint64_t addr, BNType* type, BNType** typeCtx, + bool (*isValidForData)(void* ctxt, BNBinaryView* view, uint64_t addr, BNType* type, BNTypeContext** typeCtx, size_t ctxCount); BNDisassemblyTextLine* (*getLinesForData)(void* ctxt, BNBinaryView* view, uint64_t addr, BNType* type, - const BNInstructionTextToken* prefix, size_t prefixCount, size_t width, size_t* count, BNType** typeCtx, + const BNInstructionTextToken* prefix, size_t prefixCount, size_t width, size_t* count, BNTypeContext** typeCtx, size_t ctxCount); }; @@ -3577,6 +3585,7 @@ __attribute__ ((format (printf, 1, 2))) BINARYNINJACOREAPI void BNFreeStructure(BNStructure* s); BINARYNINJACOREAPI BNStructureMember* BNGetStructureMemberByName(BNStructure* s, const char* name); + BINARYNINJACOREAPI BNStructureMember* BNGetStructureMemberAtOffset(BNStructure* s, int64_t offset); BINARYNINJACOREAPI void BNFreeStructureMember(BNStructureMember* s); BINARYNINJACOREAPI BNStructureMember* BNGetStructureMembers(BNStructure* s, size_t* count); BINARYNINJACOREAPI void BNFreeStructureMemberList(BNStructureMember* members, size_t count); @@ -3935,6 +3944,7 @@ __attribute__ ((format (printf, 1, 2))) BINARYNINJACOREAPI void BNAddGraphReportToCollection(BNReportCollection* reports, BNBinaryView* view, const char* title, BNFlowGraph* graph); + BINARYNINJACOREAPI bool BNIsGNU3MangledString(const char* mangledName); BINARYNINJACOREAPI bool BNDemangleGNU3(BNArchitecture* arch, const char* mangledName, BNType** outType, @@ -4186,10 +4196,10 @@ __attribute__ ((format (printf, 1, 2))) BINARYNINJACOREAPI BNDataRenderer* BNCreateDataRenderer(BNCustomDataRenderer* renderer); BINARYNINJACOREAPI BNDataRenderer* BNNewDataRendererReference(BNDataRenderer* renderer); BINARYNINJACOREAPI bool BNIsValidForData(void* ctxt, BNBinaryView* view, uint64_t addr, BNType* type, - BNType** typeCtx, size_t ctxCount); + BNTypeContext** typeCtx, size_t ctxCount); BINARYNINJACOREAPI BNDisassemblyTextLine* BNGetLinesForData(void* ctxt, BNBinaryView* view, uint64_t addr, BNType* type, const BNInstructionTextToken* prefix, size_t prefixCount, size_t width, size_t* count, - BNType** typeCtx, size_t ctxCount); + BNTypeContext** typeCtx, size_t ctxCount); BINARYNINJACOREAPI void BNFreeDataRenderer(BNDataRenderer* renderer); BINARYNINJACOREAPI BNDataRendererContainer* BNGetDataRendererContainer(); BINARYNINJACOREAPI void BNRegisterGenericDataRenderer(BNDataRendererContainer* container, BNDataRenderer* renderer); |
