summaryrefslogtreecommitdiff
path: root/python/callingconvention.py
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2017-08-17 22:53:10 -0400
committerRusty Wagner <rusty@vector35.com>2017-08-17 22:53:10 -0400
commite40b46fdf8b76acb5ca2d0a062b0b8ac2ca99a16 (patch)
tree6f77f76307a8f08ee1e137aba2d3093e9f77c70c /python/callingconvention.py
parent78d90c30df96364cdc8dde1954be7341531cfe07 (diff)
Work around limitations in ctypes
Diffstat (limited to 'python/callingconvention.py')
-rw-r--r--python/callingconvention.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/python/callingconvention.py b/python/callingconvention.py
index 609c71b0..bd8bbeee 100644
--- a/python/callingconvention.py
+++ b/python/callingconvention.py
@@ -267,25 +267,29 @@ class CallingConvention(object):
count[0] = 0
return None
- def _get_incoming_reg_value(self, ctxt, reg, func):
+ def _get_incoming_reg_value(self, ctxt, reg, func, result):
try:
func_obj = function.Function(binaryview.BinaryView(handle = core.BNGetFunctionData(func)),
core.BNNewFunctionReference(func))
reg_name = self.arch.get_reg_name(reg)
- return self.perform_get_incoming_reg_value(reg_name, func_obj)._to_api_object()
+ api_obj = self.perform_get_incoming_reg_value(reg_name, func_obj)._to_api_object()
except:
log.log_error(traceback.format_exc())
- return function.RegisterValue()._to_api_object()
+ api_obj = function.RegisterValue()._to_api_object()
+ result[0].state = api_obj.state
+ result[0].value = api_obj.value
- def _get_incoming_flag_value(self, ctxt, reg, func):
+ def _get_incoming_flag_value(self, ctxt, reg, func, result):
try:
func_obj = function.Function(binaryview.BinaryView(handle = core.BNGetFunctionData(func)),
core.BNNewFunctionReference(func))
reg_name = self.arch.get_reg_name(reg)
- return self.perform_get_incoming_flag_value(reg_name, func_obj)._to_api_object()
+ api_obj = self.perform_get_incoming_flag_value(reg_name, func_obj)._to_api_object()
except:
log.log_error(traceback.format_exc())
- return function.RegisterValue()._to_api_object()
+ api_obj = function.RegisterValue()._to_api_object()
+ result[0].state = api_obj.state
+ result[0].value = api_obj.value
def __repr__(self):
return "<calling convention: %s %s>" % (self.arch.name, self.name)