Hello!
I noticed that when CIL is invoked with --dosimplify option, it
transforms a simple function call to call-by-pointer, but only if the
pointer to the function has been taken somewhere else.
Is there an option to make CIL leave such calls as they were? Of course,
this should not affect the compilation of the resultant source, but, for
many static software verification tools, calls-by-pointer are
incomprehensible.
The sample file has been attached, and the options I used were:
./obj/x86_LINUX/cilly.asm.exe --dosimplify --printCilAsIs --domakeCFG
why_pointer.c --out result.c
The resultant main function looks like this:
int main(void)
{ void (*__cil_tmp1)(void) ;
{
{
good();
__cil_tmp1 = & bad;
(*__cil_tmp1)();
}
return (0);
}
}
--
Pavel Shved
ISPRAS
(Institute for System Programming
of Russian Academy of Sciences)
Operating Systems section
email: sh...@ispras.ru
void good()
{ }
void bad()
{}
void (*x)() = &bad;
int main()
{
good();
bad();
}
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
CIL-users mailing list
CIL-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cil-users