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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/value/pointer_comp.c (with 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
v ∈ [--..--]
str1[0] ∈ {97}
[1] ∈ {98}
[2] ∈ {115}
[3] ∈ {100}
[4] ∈ {0}
str2[0] ∈ {97}
[1] ∈ {98}
[2..3] ∈ {100}
[4] ∈ {0}
s1 ∈ {0}
s2[0..7] ∈ {0}
tests/value/pointer_comp.c:37:[value] warning: pointer comparison. assert \pointer_comparable((void *)(&s2[9]), (void *)0);
tests/value/pointer_comp.c:38:[value] warning: pointer comparison.
assert \pointer_comparable((void *)(&s2[9]), (void *)(&s2[9]));
tests/value/pointer_comp.c:41:[value] warning: pointer comparison.
assert \pointer_comparable((void *)(&str1), (void *)(&str2));
tests/value/pointer_comp.c:42:[value] warning: pointer comparison. assert \pointer_comparable((void *)(&s1), (void *)(&s2));
tests/value/pointer_comp.c:43:[value] warning: pointer comparison.
assert \pointer_comparable((void (*)())(&f), (void (*)())(&g));
tests/value/pointer_comp.c:46:[value] warning: pointer comparison. assert \pointer_comparable((void *)(&s1), (void *)0);
tests/value/pointer_comp.c:47:[value] warning: pointer comparison. assert \pointer_comparable((void *)(&s1 + 1), (void *)0);
tests/value/pointer_comp.c:48:[value] warning: pointer comparison. assert \pointer_comparable((void *)(&s2[8]), (void *)0);
tests/value/pointer_comp.c:50:[value] warning: pointer comparison.
assert \pointer_comparable((void (*)())(&f), (void (*)())0);
tests/value/pointer_comp.c:51:[value] warning: pointer comparison. assert \pointer_comparable((void (*)())p, (void (*)())0);
[value] Recording results for main
[value] done for function main
[value] ====== VALUES COMPUTED ======
[value:final-states] Values at end of function main:
i ∈ {0; 1}
p ∈ {{ &f ; &g }}
[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:
NO EFFECTS
[from] ====== END OF DEPENDENCIES ======
[inout] Out (internal) for function main:
i; p; tmp
[inout] Inputs for function main:
v
/* Generated by Frama-C */
struct s {
int x ;
};
extern int v;
char str1[5] = {(char)'a', (char)'b', (char)'s', (char)'d', (char)'\000'};
char str2[5] = {(char)'a', (char)'b', (char)'d', (char)'d', (char)'\000'};
struct s s1;
struct s s2[8];
extern void f(void);
extern void g(void);
void main(void)
{
int i;
void (*p)(void);
void (*tmp)(void);
if (v) tmp = & f; else tmp = & g;
p = tmp;
i = & str1 == & str2;
i = & s1 == (struct s *)0;
i = & s1 + 1 == (struct s *)0;
i = & s2[2] == & s2[4];
i = & s2[8] == (struct s *)0;
i = & f == (void (*)(void))0;
i = (void *)(& s1) == (void *)(& s2);
i = & f == & g;
i = p == (void (*)(void))0;
i = & s2[2] < & s2[4];
/*@ assert
Value: ptr_comparison: \pointer_comparable((void *)(&s2[9]), (void *)0);
*/
i = & s2[9] == (struct s *)0;
/*@ assert
Value: ptr_comparison:
\pointer_comparable((void *)(&s2[9]), (void *)(&s2[9]));
*/
i = & s2[9] == & s2[9];
/*@ assert
Value: ptr_comparison:
\pointer_comparable((void *)(&str1), (void *)(&str2));
*/
i = & str1 < & str2;
/*@ assert
Value: ptr_comparison:
\pointer_comparable((void *)(&s1), (void *)(&s2));
*/
i = (void *)(& s1) < (void *)(& s2);
/*@ assert
Value: ptr_comparison:
\pointer_comparable((void (*)())(&f), (void (*)())(&g));
*/
i = & f < & g;
/*@ assert
Value: ptr_comparison: \pointer_comparable((void *)(&s1), (void *)0);
*/
i = & s1 > (struct s *)0;
/*@ assert
Value: ptr_comparison:
\pointer_comparable((void *)(&s1 + 1), (void *)0);
*/
i = & s1 + 1 > (struct s *)0;
/*@ assert
Value: ptr_comparison: \pointer_comparable((void *)(&s2[8]), (void *)0);
*/
i = & s2[8] > (struct s *)0;
i = & f == (void (*)(void))0;
/*@ assert
Value: ptr_comparison:
\pointer_comparable((void (*)())(&f), (void (*)())0);
*/
i = & f > (void (*)(void))0;
/*@ assert
Value: ptr_comparison:
\pointer_comparable((void (*)())p, (void (*)())0);
*/
i = p > (void (*)(void))0;
return;
}
|