Skip to content

Commit 64c5d86

Browse files
Petr Bauchhannes-steffenhagen-diffblue
Petr Bauch
authored andcommitted
Some extra tests for do_function_call_symbol
These tests show that error conditions in builtin_functions.cpp are reachable with the right input. Going forward we plan to do some work to improve the frontend to catch errors like these earlier, for this purpose it should be helpful to have these tests already in place.
1 parent d310d2c commit 64c5d86

File tree

64 files changed

+423
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+423
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
__assert_func();
4+
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected to have four arguments
7+
--

regression/cbmc/assert_lhs/main.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
int main()
2+
{
3+
int n;
4+
int m = assert(n > 5);
5+
6+
return 0;
7+
}

regression/cbmc/assert_lhs/test.desc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected not to have LHS
7+
--

regression/cbmc/assert_one/main.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
int main()
2+
{
3+
int n;
4+
int m = assert(n > 5, 5);
5+
6+
return 0;
7+
}

regression/cbmc/assert_one/test.desc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected to have one argument
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
__assert_rtn();
4+
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected to have four arguments
7+
--

regression/cbmc/builtin_is/main.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
int n, m;
4+
__builtin_isgreater(n, m);
5+
return 0;
6+
}

regression/cbmc/builtin_is/test.desc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected to have two float/double arguments
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
int n;
4+
__builtin_va_copy(5, n);
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
argument expected to be lvalue
7+
--
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
int main()
2+
{
3+
__builtin_va_copy();
4+
return 0;
5+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
wrong number of function arguments
7+
--
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
int main()
2+
{
3+
__builtin_va_end(5);
4+
return 0;
5+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
argument expected to be lvalue
7+
--
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
int main()
2+
{
3+
__builtin_va_end();
4+
return 0;
5+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
wrong number of function arguments
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
int n;
4+
__builtin_va_start(5, n);
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
argument expected to be lvalue
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
int n;
4+
__builtin_va_start(n, 5, 5);
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected to have two arguments
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
void m = __CPROVER_assert("n>5", "foo");
4+
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected not to have LHS
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
__CPROVER_assert();
4+
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
wrong number of function arguments
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
__CPROVER_fence();
4+
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
not enough function arguments
7+
--
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
int main()
2+
{
3+
int n;
4+
void m = __CPROVER_havoc_object(n);
5+
6+
return 0;
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected not to have LHS
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
__CPROVER_havoc_object();
4+
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
wrong number of function arguments
7+
--
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
int main()
2+
{
3+
int n;
4+
void m = __CPROVER_input(n);
5+
6+
return 0;
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected not to have LHS
7+
--
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
int main()
2+
{
3+
int n;
4+
void m = __CPROVER_output(n);
5+
6+
return 0;
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected not to have LHS
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
foo();
4+
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected not to have LHS
7+
--
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
int main()
2+
{
3+
int n;
4+
5+
gcc_builtin_va_arg();
6+
7+
return 0;
8+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected to have one argument
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
int n, *m;
4+
__sync_add_and_fetch(n, m);
5+
return 0;
6+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
primitives take pointer as first argument
7+
CONVERSION ERROR
8+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
int *n;
4+
__sync_add_and_fetch(n);
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected to have at least two arguments
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
int n, *m, *o;
4+
__sync_bool_compare_and_swap(n, m, o);
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected to have pointer argument
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
int *n, *m;
4+
__sync_bool_compare_and_swap(n, m);
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected to have at least three arguments
7+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
int n, *m;
4+
__sync_fetch_and_add(n, m);
5+
return 0;
6+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
primitives take pointer as first argument
7+
CONVERSION ERROR
8+
--
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int main()
2+
{
3+
int *n;
4+
__sync_fetch_and_add(n);
5+
return 0;
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=6$
5+
^SIGNAL=0$
6+
expected to have at least two arguments
7+
--

0 commit comments

Comments
 (0)