Thank you for the help Elnatan.
I managed to get around it by appending to the file #pragma
cilnoremove("func") for every function in the program, and then running
CIL with the option --sliceGlobal. This will remove all functions except
func which is what I wanted. I guess epicenter as a feature is buggy at
the moment.
Vijay
On 01/21/2011 03:17 AM, Elnatan Reisner wrote:
> Vijayaraghavan Murali<m.vijay<at> nus.edu.sg> writes:
>
>> I'm new to this list and I just obtained CIL. For our research which
>> uses compositional reasoning, we need a tool to extract out each
>> function individually from a C program (including global declarations
>> like variables, structs and typedefs) and analyze it.
>>
>> CIL's doepicenter feature seems precisely fit for that purpose. A
>> quick recap of its description:
>>
>> --doepicenter Enable remove all functions except
>> those within some number
>> of hops (in the call graph) from a given
>> function
>> --epicenter-name<name> do an epicenter slice starting from
>> function<name>
>> --epicenter-hops<n> specify max # of hops for epicenter slice
>>
>> Using these options, I can extract functions from a program one by
>> one by providing the function name and setting hops to 0.
>>
>> But I'm not able to get the option to work. Regardless of the name or
>> the #of hops that I provide, CIL just removes ALL functions/global
>> declarations in the output! I also tried giving --docallgraph to see
>> if it
>> affects it, but to no avail. Moreover, I was not able to find any
>> sort of
>> documentation on this feature.
>
> I poked around in this module briefly, and I managed to get it to work
> by simply deleting line 54 from epicenter.ml:
> Cilutil.sliceGlobal := true;
>
> I don't know anything about the history of this module, or why
> sliceGlobal is set here, but it seems like a mistake.
>
> One other thing I noticed, though: from what I can tell, --doepicenter
> with 0 hops (which is the default number of hops) keeps all functions
> that are reachable from the specified function, not just the function
> itself. The hops seem to only be relevant for keeping *callers* of the
> epicenter---that is, these are hops *backward* in the call graph. (The
> code in epicenter.ml doesn't seem to know this, though. Along with the
> sliceGlobals bug, this makes me think rmtmps.ml was changed at some
> point but epicenter.ml was never brought up to date.)
>
> Elnatan
------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires
February 28th, so secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
CIL-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cil-users