[klee-dev] Replacing external printf with an internal version for the Klee tests.

Cristian Cadar c.cadar at imperial.ac.uk
Wed Oct 8 10:44:25 BST 2014


Indeed, I don't think we need to optimize the memory consumption of the 
test suite, it is not excessive.

The ability to deal with external calls is one of the most important 
strengths of dynamic symbolic execution.  However, as Dan pointed out, 
there is the option of disallowing such calls if needed.  I could 
understand the  need to special case printf and I'd be happy to consider 
such a patch, but this should be an option to KLEE, which should not 
require any changes to the test suite.

Best,
Cristian

On 08/10/14 10:34, Daniel Liew wrote:
> On 7 October 2014 23:47, Willem Pinckaers
> <willem_list_klee at lekkertech.net> wrote:
>> Hi List,
>>
>> Currently most tests for Klee depend on an externally provided printf function. Support for external functions has some side effects, among them:
>>
>> - Memory usage is doubled for all non symbolic allocations.
>> - The bitcode being tested has to have the same data layout as the compiled version of Klee.
>
> For the test suite I really don't think the memory usage matters. They
> are mostly small programs and testing external function calls is
> important because it is an important feature of KLEE because real
> world code inevitably needs to call into a C library or make system
> calls at some point.
>
>> Without support for external functions Klee memory usage for non symbolic allocations can be reduced by about 50% and Klee could be made to analyze bit code that uses a different data layout.
>
> Outside of the test suite I could see these being potentially useful
> but if you really need this wouldn't it be simpler if your program had
> no external function calls? If your program has external calls and you
> disable external call support in KLEE your program probably isn't
> going to run.
>
>
>>    This currently hits a bug in llvm 3.4 and 3.5 where lli with force-interpreter=true does not properly execute va_start. But (after adopting the tests to link in the new printf) most test cases pass using force-interpreter=false.
>
> Could you report that to the LLVM developers?
>
> Thanks,
> Dan.
>
> _______________________________________________
> klee-dev mailing list
> klee-dev at imperial.ac.uk
> https://mailman.ic.ac.uk/mailman/listinfo/klee-dev
>




More information about the klee-dev mailing list