我想避免执行过程间符号执行。也许返回的值没有任何约束,并且可能会解析为任何可能的具体值。
像这样甚至有可能吗?
我要这样做的原因是我想避免执行某些具有非常大的循环的函数,并且不要真正修改全局数据。
答案 0 :(得分:0)
此类功能未在Klee中实现。如果要实现它,则必须自己执行。
您应查看的文件为lib/Core/Executor.cpp。执行程序处理作业以象征性地执行指令。您需要更改的特定功能称为“ executeCall”。您可以检查功能的名称。如果符合您的目标,只需将程序计数器设置为下一条指令,并将返回值设为符号即可。
通过一些编程工作,我认为您的需求是可以实现的。
答案 1 :(得分:0)
如果可以操纵源代码,则可以用make_symbolic
函数替换这些函数调用,在该函数中,您基本上会创建一个新的符号变量,并将其作为原始函数调用的返回来返回。或者,您可以重写这些函数以返回新的符号值。