--- layout: fc_discuss_archives title: Message 46 from Frama-C-discuss on August 2015 ---
Hi, Garbled mix are automatically generated when Value uses assigns/from clauses to simulate a call to a function without a body. When encountering assigns x \from y, if the abstract value for y may contain the addresses &a1+o1, ... &an+on, x will be inferred as containing garbled mix of { &a1 ... &an }.This abstract value is the most general one that can be generated from the contents of y. Section 7.2 of Value's manual contains more details about how assigns clauses are evaluated. Notice that those garbled mix can almost always be removed by writing appropriate ensures clauses, to constrain to "clean" Values. This is exactly what Frama-C's standard library does for fopen : ensures \result==\null || (\subset(\result,&__fc_fopen[0 .. __FC_FOPEN_MAX-1])) ; (This is extracted from the development version, and has slightly changed since Sodium.) HTH, On Tue, Aug 18, 2015 at 10:22 AM, David MENTRE <dmentre at linux-france.org> wrote: > Hello, > > Le 18/08/2015 06:11, Tim Newsham a écrit : > >> fp = fopen("./seq","r"); >> /*@ assert Value: ptr_comparison: \pointer_comparable(fp, (void *)0); >> */ >> >> Is there a way I can annotate this call or the fopen function >> to specify that NULL is a valid return value? >> > > > Use the standard headers (see attached example). > > But in your example (at least in mine), the warning is coming from garbled > mix in "fp" (comparison with a variable containing garbled mix). I don't > know *why* this garbled mix occurs though. > > frama-c -val tim-fopen.c > [...] > [value] Values at end of function main: > fp â > {{ garbled mix of &{__fc_fopen; alloced_return_fopen} > (origin: Arithmetic {tim-fopen.c:8}) }} > > > Best regards, > david > > > _______________________________________________ > Frama-c-discuss mailing list > Frama-c-discuss at lists.gforge.inria.fr > http://lists.gforge.inria.fr/mailman/listinfo/frama-c-discuss > -- Boris -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gforge.inria.fr/pipermail/frama-c-discuss/attachments/20150826/4af12029/attachment.html>