I attemped to call _crete_makesymbolic() from _crete_makeconcolic() as follows:
void crete_make_concolic(...)
{
...relay concolic data info to qemu...
crete_make_symbolic();
}
However, the generated custom instruction was uncaptured. Note that _crete_makeconcolic() must not be captured, so it was not placed in the filter include list. Then, I tried the following:
void crete_make_symbolic_internal()
{
crete_make_symbolic();
}
void crete_make_concolic(...)
{
...relay concolic data info to qemu...
crete_make_symbolic_internal();
}
I included _crete_make_symbolicinternal() in the filter list. This worked as expected.
What this indicates is that included functions called directly from excluded functions are not captured! More testing needed.
This could be very serious, as if an execution filtering traverses included and excluded function calls, important information could be missed.
I attemped to call _crete_makesymbolic() from _crete_makeconcolic() as follows:
However, the generated custom instruction was uncaptured. Note that _crete_makeconcolic() must not be captured, so it was not placed in the filter include list. Then, I tried the following:
I included _crete_make_symbolicinternal() in the filter list. This worked as expected.
What this indicates is that included functions called directly from excluded functions are not captured! More testing needed.
This could be very serious, as if an execution filtering traverses included and excluded function calls, important information could be missed.