winIDEA SDK
Loading...
Searching...
No Matches
call_hierarchy.py
# This script is licensed under BSD License, see file LICENSE.txt, or search for `License` in the SDK online help.
#
# (c) TASKING Germany GmbH, 2023
"""
This script demonstrates usage of API for getting call hierarchy
from symbol information. Analyzer is not required for this
information to be available.
"""
import sys
import isystem.connect as ic
winidea_id = ''
def printFunctions(addrCtrl, addresses):
names = ic.StrVector()
types = ic.IntVector()
addrCtrl.getFunctionNames(addresses, names, types)
idx = 0
for addr in addresses:
print(hex(addr), names[idx])
idx += 1
if __name__ == "__main__":
cmgr = ic.ConnectionMgr()
cmgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
debugCtrl = ic.CDebugFacade(cmgr)
debugCtrl.download()
partition = 0
functionName = 'fibonacci' # default
if len(sys.argv) > 1:
functionName = sys.argv[1]
dataCtrl = ic.CDataController(cmgr)
addrCtrl = ic.CAddressController(cmgr)
functions = ic.FunctionVector()
dataCtrl.getFunctions(partition, functions)
major, minor, build, _ = ic.getModuleVersion().split('.')
for func in functions:
if func.getName() == functionName:
print('Function info found!')
addrs = ic.AddressVector()
func.getCallsFromFunction(addrs)
print("Functions called from '" + functionName + "':")
printFunctions(addrCtrl, addrs)
func.getCallsToFunction(addrs)
print("\nFunctions which call '" + functionName + "':")
printFunctions(addrCtrl, addrs)
break