1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/value/context_width.i (no preprocessing)
[value] Analyzing a complete application starting at main
[value] Computing initial state
[value] Initial state computed
[value:initial-state] Values of globals at initialization
a ∈ {0}
tests/value/context_width.i:10:[value] warning: pointer comparison. assert \pointer_comparable((void *)(p + 2), (void *)0);
tests/value/context_width.i:12:[value] warning: pointer comparison.
assert \pointer_comparable((void *)(p + 1), (void *)(&a));
tests/value/context_width.i:15:[value] warning: out of bounds write. assert \valid(p + 1);
tests/value/context_width.i:16:[value] warning: out of bounds write. assert \valid(p + 2);
tests/value/context_width.i:17:[value] warning: assertion got status invalid (stopping propagation).
[value] Recording results for main
[value] done for function main
[value] ====== VALUES COMPUTED ======
[value:final-states] Values at end of function main:
S_p[0] ∈ {1}
[1] ∈ {2}
[2] ∈ {3}
[from] Computing for function main
[from] Done for function main
[from] ====== DEPENDENCIES COMPUTED ======
These dependencies hold at termination for the executions that terminate:
[from] Function main:
S_p[0..2] FROM p (and SELF)
[from] ====== END OF DEPENDENCIES ======
[inout] Out (internal) for function main:
S_p[0..2]
[inout] Inputs for function main:
\nothing
/* Generated by Frama-C */
int a;
void main(int *p)
{
if (! (p == (int *)0)) {
if (! (p + 1 == (int *)0))
/*@ assert
Value: ptr_comparison:
\pointer_comparable((void *)(p + 2), (void *)0);
*/
if (! (p + 2 == (int *)0)) ;
/*@ assert
Value: ptr_comparison:
\pointer_comparable((void *)(p + 1), (void *)(&a));
*/
if (p + 1 == & a) ;
*p = 1;
/*@ assert Value: mem_access: \valid(p + 1); */
*(p + 1) = 2;
/*@ assert Value: mem_access: \valid(p + 2); */
*(p + 2) = 3;
}
else
/*@ assert \false; */ ;
return;
}
[value] Analyzing a complete application starting at main
[value] Computing initial state
[value] Initial state computed
[value:initial-state] Values of globals at initialization
a ∈ {0}
tests/value/context_width.i:10:[value] warning: pointer comparison. assert \pointer_comparable((void *)(p + 2), (void *)0);
tests/value/context_width.i:12:[value] warning: pointer comparison.
assert \pointer_comparable((void *)(p + 1), (void *)(&a));
tests/value/context_width.i:15:[value] warning: out of bounds write. assert \valid(p + 1);
tests/value/context_width.i:15:[kernel] warning: all target addresses were invalid. This path is assumed to be dead.
[value] Recording results for main
[value] done for function main
tests/value/context_width.i:15:[value] assertion 'Value,mem_access' got final status invalid.
[value] ====== VALUES COMPUTED ======
[value:final-states] Values at end of function main:
NON TERMINATING FUNCTION
[from] Computing for function main
[from] Non-terminating function main (no dependencies)
[from] Done for function main
[from] ====== DEPENDENCIES COMPUTED ======
These dependencies hold at termination for the executions that terminate:
[from] Function main:
NON TERMINATING - NO EFFECTS
[from] ====== END OF DEPENDENCIES ======
[inout] Out (internal) for function main:
S_p_0[0]
[inout] Inputs for function main:
\nothing
/* Generated by Frama-C */
int a;
void main(int *p)
{
if (! (p == (int *)0)) {
if (! (p + 1 == (int *)0))
/*@ assert
Value: ptr_comparison:
\pointer_comparable((void *)(p + 2), (void *)0);
*/
if (! (p + 2 == (int *)0)) ;
/*@ assert
Value: ptr_comparison:
\pointer_comparable((void *)(p + 1), (void *)(&a));
*/
if (p + 1 == & a) ;
*p = 1;
/*@ assert Value: mem_access: \valid(p + 1); */
*(p + 1) = 2;
*(p + 2) = 3;
}
else
/*@ assert \false; */ ;
return;
}
|