summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2019-09-13 09:56:00 -0400
committerPeter LaFosse <peter@vector35.com>2019-11-15 21:10:58 -0500
commitdb48820f5fed420ad298278e8e6b055baa4ddf06 (patch)
tree2b41a6f081f924b622887ddc42f5f579eebbd849 /binaryninjacore.h
parent3c329e77e0318db070099be2d1731c4e7ac510ba (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.h18
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);