Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
frama-c
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container Registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
pub
frama-c
Commits
3b3464ec
Commit
3b3464ec
authored
5 months ago
by
David Bühler
Browse files
Options
Downloads
Patches
Plain Diff
[Eva] Adds one more test of alarms emitted on an invalid modulo operation.
parent
1a09d8b9
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
tests/value/modulo.i
+3
-0
3 additions, 0 deletions
tests/value/modulo.i
tests/value/oracle/modulo.res.oracle
+16
-14
16 additions, 14 deletions
tests/value/oracle/modulo.res.oracle
with
19 additions
and
14 deletions
tests/value/modulo.i
+
3
−
0
View file @
3b3464ec
...
...
@@ -201,6 +201,9 @@ void test_overflow_alarms (void) {
r = min_int % min_one; // Invalid alarm.
Frama_C_show_each_BOTTOM(min_int, min_one);
}
// Overflow alarm and division by zero alarm,
// no possible reduction: [x] and [y] must be top_int as the end.
r = x / y;
}
void
main
()
{
...
...
This diff is collapsed.
Click to expand it.
tests/value/oracle/modulo.res.oracle
+
16
−
14
View file @
3b3464ec
...
...
@@ -26,8 +26,8 @@
b ∈ [--..--]
i2 ∈ [--..--]
[eva] computing for function pgcd1 <- main.
Called from modulo.i:20
7
.
[eva:alarm] modulo.i:20
7
: Warning:
Called from modulo.i:2
1
0.
[eva:alarm] modulo.i:2
1
0: Warning:
function pgcd1: precondition got status unknown.
[eva] modulo.i:37: loop invariant got status valid.
[eva] modulo.i:38: loop invariant got status valid.
...
...
@@ -40,8 +40,8 @@
[eva] Recording results for pgcd1
[eva] Done for function pgcd1
[eva] computing for function pgcd2 <- main.
Called from modulo.i:2
08
.
[eva:alarm] modulo.i:2
08
: Warning:
Called from modulo.i:2
11
.
[eva:alarm] modulo.i:2
11
: Warning:
function pgcd2: precondition got status unknown.
[eva] modulo.i:50: loop invariant got status valid.
[eva] modulo.i:53: Frama_C_show_each_2: [-10..10], [1..10], [-9..9]
...
...
@@ -49,15 +49,15 @@
[eva] Recording results for pgcd2
[eva] Done for function pgcd2
[eva] computing for function pgcd3 <- main.
Called from modulo.i:2
09
.
[eva:alarm] modulo.i:2
09
: Warning:
Called from modulo.i:2
12
.
[eva:alarm] modulo.i:2
12
: Warning:
function pgcd3: precondition got status unknown.
[eva:alarm] modulo.i:63: Warning: division by zero. assert b_0 ≢ 0;
[eva] modulo.i:64: Frama_C_show_each_3: [-10..10], [-10..10], [-9..9]
[eva] Recording results for pgcd3
[eva] Done for function pgcd3
[eva] computing for function main2 <- main.
Called from modulo.i:21
1
.
Called from modulo.i:21
4
.
[eva:alarm] modulo.i:9: Warning: signed overflow. assert -2147483648 ≤ 4 * i;
[eva:alarm] modulo.i:9: Warning: signed overflow. assert 4 * i ≤ 2147483647;
[eva:alarm] modulo.i:10: Warning: signed overflow. assert -2147483648 ≤ 4 * i;
...
...
@@ -69,12 +69,12 @@
[eva] Recording results for main2
[eva] Done for function main2
[eva] computing for function simultaneous_congruences <- main.
Called from modulo.i:21
2
.
Called from modulo.i:21
5
.
[eva:alarm] modulo.i:76: Warning: assertion got status unknown.
[eva] Recording results for simultaneous_congruences
[eva] Done for function simultaneous_congruences
[eva] computing for function shift_modulo <- main.
Called from modulo.i:21
3
.
Called from modulo.i:21
6
.
[eva:alarm] modulo.i:100: Warning: assertion got status unknown.
[eva:alarm] modulo.i:103: Warning:
signed overflow. assert (int)((int)(i * 12) + 5) << 25 ≤ 2147483647;
...
...
@@ -83,19 +83,19 @@
[eva] Recording results for shift_modulo
[eva] Done for function shift_modulo
[eva] computing for function extract_bits_modulo <- main.
Called from modulo.i:21
4
.
Called from modulo.i:21
7
.
[eva:alarm] modulo.i:109: Warning: assertion got status unknown.
[eva] Recording results for extract_bits_modulo
[eva] Done for function extract_bits_modulo
[eva] computing for function pos_rem <- main.
Called from modulo.i:21
5
.
Called from modulo.i:21
8
.
[eva:alarm] modulo.i:137: Warning: assertion got status unknown.
[eva:alarm] modulo.i:142: Warning: assertion got status unknown.
[eva:alarm] modulo.i:146: Warning: assertion got status unknown.
[eva] Recording results for pos_rem
[eva] Done for function pos_rem
[eva] computing for function address_modulo <- main.
Called from modulo.i:21
6
.
Called from modulo.i:21
9
.
[eva:garbled-mix:write] modulo.i:158:
Assigning imprecise value to r because of arithmetic operation on addresses.
[eva:alarm] modulo.i:159: Warning: division by zero. assert i ≢ 0;
...
...
@@ -112,7 +112,7 @@
[eva] Recording results for address_modulo
[eva] Done for function address_modulo
[eva] computing for function test_overflow_alarms <- main.
Called from modulo.i:2
17
.
Called from modulo.i:2
20
.
[eva:alarm] modulo.i:176: Warning:
signed overflow. assert a_0 / b_0 ≤ 2147483647;
[eva] modulo.i:178: Frama_C_show_each: {-2147483648; 10}, {-1; 2}
...
...
@@ -131,6 +131,8 @@
[eva] modulo.i:198: Frama_C_show_each: [-2147483648..2147483647]
[eva:alarm] modulo.i:201: Warning:
signed overflow. assert min_int / min_one ≤ 2147483647;
[eva:alarm] modulo.i:206: Warning: division by zero. assert y ≢ 0;
[eva:alarm] modulo.i:206: Warning: signed overflow. assert x / y ≤ 2147483647;
[eva] Recording results for test_overflow_alarms
[eva] Done for function test_overflow_alarms
[eva] Recording results for main
...
...
@@ -217,7 +219,7 @@
b_0 ∈ {-1; 2}
x ∈ [--..--]
y ∈ [--..--]
r ∈ [-
2147483647..0
]
r ∈ [-
-..--
]
[eva:final-states] Values at end of function main:
A ∈ {0}
B ∈ {-3; 1}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment