summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2016-07-12 17:05:51 -0400
committerRusty Wagner <rusty@vector35.com>2016-07-12 17:05:51 -0400
commitc3e5c23d9f71fbb4020fe4f71a01b10734d93946 (patch)
tree5171c14f1211261ec1b6cdb64cef9e153c28c2f0
parentc9612b7373f3322b90047cb4612b2cdfbba7a656 (diff)
Add token and line types for function headers in linear view
-rw-r--r--binaryninjacore.h12
-rw-r--r--binaryview.cpp2
-rw-r--r--python/__init__.py5
3 files changed, 16 insertions, 3 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 0f88972d..223b9fac 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -159,6 +159,11 @@ extern "C"
FloatingPointToken = 8,
AnnotationToken = 9,
CodeRelativeAddressToken = 10,
+ VariableTypeToken = 11,
+ FunctionReturnTypeToken = 12,
+ FunctionAttributeToken = 13,
+ ArgumentTypeToken = 14,
+ ArgumentNameToken = 15,
// The following are output by the analysis system automatically, these should
// not be used directly by the architecture plugins
@@ -171,12 +176,17 @@ extern "C"
enum BNLinearDisassemblyLineType
{
+ BlankLineType,
CodeDisassemblyLineType,
DataVariableLineType,
HexDumpLineType,
FunctionHeaderLineType,
+ FunctionHeaderStartLineType,
+ FunctionHeaderEndLineType,
FunctionContinuationLineType,
- StackVariableLineType
+ StackVariableLineType,
+ StackVariableListEndLineType,
+ FunctionEndLineType
};
enum BNSymbolType
diff --git a/binaryview.cpp b/binaryview.cpp
index ee01d122..864b4687 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -1166,6 +1166,7 @@ vector<LinearDisassemblyLine> BinaryView::GetPreviousLinearDisassemblyLines(Line
for (size_t i = 0; i < count; i++)
{
LinearDisassemblyLine line;
+ line.type = lines[i].type;
line.function = lines[i].function ? new Function(BNNewFunctionReference(lines[i].function)) : nullptr;
line.block = lines[i].block ? new BasicBlock(BNNewBasicBlockReference(lines[i].block)) : nullptr;
line.lineOffset = lines[i].lineOffset;
@@ -1206,6 +1207,7 @@ vector<LinearDisassemblyLine> BinaryView::GetNextLinearDisassemblyLines(LinearDi
for (size_t i = 0; i < count; i++)
{
LinearDisassemblyLine line;
+ line.type = lines[i].type;
line.function = lines[i].function ? new Function(BNNewFunctionReference(lines[i].function)) : nullptr;
line.block = lines[i].block ? new BasicBlock(BNNewBasicBlockReference(lines[i].block)) : nullptr;
line.lineOffset = lines[i].lineOffset;
diff --git a/python/__init__.py b/python/__init__.py
index 5d6be5ba..f2be8758 100644
--- a/python/__init__.py
+++ b/python/__init__.py
@@ -683,7 +683,8 @@ class LinearDisassemblyPosition(object):
self.address = addr
class LinearDisassemblyLine(object):
- def __init__(self, func, block, line_offset, contents):
+ def __init__(self, line_type, func, block, line_offset, contents):
+ self.type = line_type
self.function = func
self.block = block
self.line_offset = line_offset
@@ -1604,7 +1605,7 @@ class BinaryView(object):
value = lines[i].contents.tokens[j].value
tokens.append(InstructionTextToken(token_type, text, value))
contents = DisassemblyTextLine(addr, tokens)
- result.append(LinearDisassemblyLine(func, block, lines[i].lineOffset, contents))
+ result.append(LinearDisassemblyLine(lines[i].type, func, block, lines[i].lineOffset, contents))
func = None
block = None