summaryrefslogtreecommitdiff
path: root/python/function.py
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2022-09-16 20:08:07 -0400
committerRusty Wagner <rusty.wagner@gmail.com>2023-01-03 10:39:03 -0500
commit3681a37debf204cf2416a807a189865a3834f300 (patch)
tree4c184632d4951828c9414a025e8a1e2efea123bd /python/function.py
parent29fa00a44648a81da18b2e0797e8c7fb7295b795 (diff)
Function inlining
Diffstat (limited to 'python/function.py')
-rw-r--r--python/function.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/python/function.py b/python/function.py
index a6693d85..62895c05 100644
--- a/python/function.py
+++ b/python/function.py
@@ -1413,6 +1413,16 @@ class Function:
core.BNFreeVariableList(data)
return result
+ @property
+ def inline_during_analysis(self) -> 'types.BoolWithConfidence':
+ """Whether the function's IL should be inlined into all callers' IL"""
+ result = core.BNIsFunctionInlinedDuringAnalysis(self.handle)
+ return types.BoolWithConfidence(result.value, confidence=result.confidence)
+
+ @inline_during_analysis.setter
+ def inline_during_analysis(self, value: Union[bool, 'types.BoolWithConfidence']):
+ self.set_user_inline_during_analysis(value)
+
def mark_recent_use(self) -> None:
core.BNMarkFunctionAsRecentlyUsed(self.handle)
@@ -3452,6 +3462,24 @@ class Function:
"""
core.BNUnsplitVariable(self.handle, var.to_BNVariable())
+ def set_auto_inline_during_analysis(self, value: Union[bool, 'types.BoolWithConfidence']):
+ bc = core.BNBoolWithConfidence()
+ bc.value = bool(value)
+ if isinstance(value, types.BoolWithConfidence):
+ bc.confidence = value.confidence
+ else:
+ bc.confidence = core.max_confidence
+ core.BNSetAutoFunctionInlinedDuringAnalysis(self.handle, bc)
+
+ def set_user_inline_during_analysis(self, value: Union[bool, 'types.BoolWithConfidence']):
+ bc = core.BNBoolWithConfidence()
+ bc.value = bool(value)
+ if isinstance(value, types.BoolWithConfidence):
+ bc.confidence = value.confidence
+ else:
+ bc.confidence = core.max_confidence
+ core.BNSetUserFunctionInlinedDuringAnalysis(self.handle, bc)
+
class AdvancedFunctionAnalysisDataRequestor:
def __init__(self, func: Optional['Function'] = None):