summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2020-05-28 09:49:16 -0400
committerPeter LaFosse <peter@vector35.com>2020-05-28 11:27:33 -0400
commit1f8ca3f77de08b5c581693153bf1ef580c912a0e (patch)
tree8a9c3d33c730513b1d16f7dbc15db73fd188b848
parent95c8fa5b0cea3daa4dba774a2dab612c3d3fe39f (diff)
Add optional type to define as in Function::ApplyImportedTypes and BinaryView::DefineImportedFunction APIs
-rw-r--r--binaryninjaapi.h4
-rw-r--r--binaryninjacore.h4
-rw-r--r--binaryview.cpp4
-rw-r--r--function.cpp4
-rw-r--r--python/binaryview.py4
-rw-r--r--python/function.py4
6 files changed, 12 insertions, 12 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index d0e23d28..c5367026 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -1580,7 +1580,7 @@ __attribute__ ((format (printf, 1, 2)))
void DefineUserSymbol(Ref<Symbol> sym);
void UndefineUserSymbol(Ref<Symbol> sym);
- void DefineImportedFunction(Ref<Symbol> importAddressSym, Ref<Function> func);
+ void DefineImportedFunction(Ref<Symbol> importAddressSym, Ref<Function> func, Ref<Type> type = nullptr);
void AddTagType(Ref<TagType> tagType);
void RemoveTagType(Ref<TagType> tagType);
@@ -3027,7 +3027,7 @@ __attribute__ ((format (printf, 1, 2)))
void SetRegisterStackAdjustments(const std::map<uint32_t, Confidence<int32_t>>& regStackAdjust);
void SetClobberedRegisters(const Confidence<std::set<uint32_t>>& clobbered);
- void ApplyImportedTypes(Symbol* sym);
+ void ApplyImportedTypes(Symbol* sym, Ref<Type> type = nullptr);
void ApplyAutoDiscoveredType(Type* type);
Ref<FlowGraph> CreateFunctionGraph(BNFunctionGraphType type, DisassemblySettings* settings = nullptr);
diff --git a/binaryninjacore.h b/binaryninjacore.h
index a78e5b3b..a3302aea 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -2928,7 +2928,7 @@ __attribute__ ((format (printf, 1, 2)))
BNRegisterStackAdjustment* adjustments, size_t count);
BINARYNINJACOREAPI void BNSetUserFunctionClobberedRegisters(BNFunction* func, BNRegisterSetWithConfidence* regs);
- BINARYNINJACOREAPI void BNApplyImportedTypes(BNFunction* func, BNSymbol* sym);
+ BINARYNINJACOREAPI void BNApplyImportedTypes(BNFunction* func, BNSymbol* sym, BNType* type);
BINARYNINJACOREAPI void BNApplyAutoDiscoveredFunctionType(BNFunction* func, BNType* type);
BINARYNINJACOREAPI bool BNFunctionHasExplicitlyDefinedType(BNFunction* func);
@@ -3479,7 +3479,7 @@ __attribute__ ((format (printf, 1, 2)))
BINARYNINJACOREAPI void BNUndefineAutoSymbol(BNBinaryView* view, BNSymbol* sym);
BINARYNINJACOREAPI void BNDefineUserSymbol(BNBinaryView* view, BNSymbol* sym);
BINARYNINJACOREAPI void BNUndefineUserSymbol(BNBinaryView* view, BNSymbol* sym);
- BINARYNINJACOREAPI void BNDefineImportedFunction(BNBinaryView* view, BNSymbol* importAddressSym, BNFunction* func);
+ BINARYNINJACOREAPI void BNDefineImportedFunction(BNBinaryView* view, BNSymbol* importAddressSym, BNFunction* func, BNType* type);
BINARYNINJACOREAPI void BNDefineAutoSymbolAndVariableOrFunction(BNBinaryView* view, BNPlatform* platform,
BNSymbol* sym, BNType* type);
diff --git a/binaryview.cpp b/binaryview.cpp
index 30aeeae8..24a50c11 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -2034,9 +2034,9 @@ void BinaryView::UndefineUserSymbol(Ref<Symbol> sym)
}
-void BinaryView::DefineImportedFunction(Ref<Symbol> importAddressSym, Ref<Function> func)
+void BinaryView::DefineImportedFunction(Ref<Symbol> importAddressSym, Ref<Function> func, Ref<Type> type)
{
- BNDefineImportedFunction(m_object, importAddressSym->GetObject(), func->GetObject());
+ BNDefineImportedFunction(m_object, importAddressSym->GetObject(), func->GetObject(), type ? type->GetObject() : nullptr);
}
diff --git a/function.cpp b/function.cpp
index e4e8af17..fd3760b4 100644
--- a/function.cpp
+++ b/function.cpp
@@ -869,9 +869,9 @@ void Function::SetClobberedRegisters(const Confidence<std::set<uint32_t>>& clobb
}
-void Function::ApplyImportedTypes(Symbol* sym)
+void Function::ApplyImportedTypes(Symbol* sym, Ref<Type> type)
{
- BNApplyImportedTypes(m_object, sym->GetObject());
+ BNApplyImportedTypes(m_object, sym->GetObject(), type ? type->GetObject() : nullptr);
}
diff --git a/python/binaryview.py b/python/binaryview.py
index 994d9edd..01da5517 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -3587,7 +3587,7 @@ class BinaryView(object):
"""
core.BNUndefineUserSymbol(self.handle, sym.handle)
- def define_imported_function(self, import_addr_sym, func):
+ def define_imported_function(self, import_addr_sym, func, type=None):
"""
``define_imported_function`` defines an imported Function ``func`` with a ImportedFunctionSymbol type.
@@ -3595,7 +3595,7 @@ class BinaryView(object):
:param Function func: A Function object to define as an imported function
:rtype: None
"""
- core.BNDefineImportedFunction(self.handle, import_addr_sym.handle, func.handle)
+ core.BNDefineImportedFunction(self.handle, import_addr_sym.handle, func.handle, None if type is None else type.handle)
def create_tag_type(self, name, icon):
"""
diff --git a/python/function.py b/python/function.py
index 76c8de0c..1c244ae4 100644
--- a/python/function.py
+++ b/python/function.py
@@ -1960,8 +1960,8 @@ class Function(object):
settings_obj = None
return binaryninja.flowgraph.CoreFlowGraph(core.BNCreateFunctionGraph(self.handle, graph_type, settings_obj))
- def apply_imported_types(self, sym):
- core.BNApplyImportedTypes(self.handle, sym.handle)
+ def apply_imported_types(self, sym, type=None):
+ core.BNApplyImportedTypes(self.handle, sym.handle, None if type is None else type.handle)
def apply_auto_discovered_type(self, func_type):
core.BNApplyAutoDiscoveredFunctionType(self.handle, func_type.handle)