Skip to content

Commit 49f01cc

Browse files
committed
Update restrict function pointer by name regression tests
1 parent 971786d commit 49f01cc

File tree

8 files changed

+97
-54
lines changed

8 files changed

+97
-54
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <assert.h>
2+
3+
int f(void)
4+
{
5+
return 1;
6+
}
7+
8+
int g(void)
9+
{
10+
return 2;
11+
}
12+
13+
int h(void)
14+
{
15+
return 3;
16+
}
17+
18+
typedef int (*fp_t)(void);
19+
20+
fp_t fp;
21+
22+
void main()
23+
{
24+
int cond;
25+
fp = cond ? f : g;
26+
int res = fp();
27+
assert(res == 1 || res == 2);
28+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
test.c
3+
--restrict-function-pointer-by-name fp/f,g
4+
\[main\.assertion\.1\] line \d+ dereferenced function pointer at main\.function_pointer_call\.1 must be one of \[(g, f)|(g, f)\]: SUCCESS
5+
\[main\.assertion\.2\] line \d+ assertion res == 1 \|\| res == 2: SUCCESS
6+
^EXIT=0$
7+
^SIGNAL=0$
8+
--
9+
--
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#include <assert.h>
2+
3+
int f(void)
4+
{
5+
return 1;
6+
}
7+
8+
int g(void)
9+
{
10+
return 2;
11+
}
12+
13+
typedef int (*fp_t)(void);
14+
15+
void main()
16+
{
17+
fp_t fp = f;
18+
assert(fp() == 1);
19+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
test.c
3+
--restrict-function-pointer-by-name main::1::fp/f
4+
\[main\.assertion\.1\] line \d+ dereferenced function pointer at main\.function_pointer_call\.1 must be f: SUCCESS
5+
\[main\.assertion\.2\] line \d+ assertion fp\(\) == 1: SUCCESS
6+
^EXIT=0$
7+
^SIGNAL=0$
8+
--
9+
--
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#include <assert.h>
2+
3+
int f(void)
4+
{
5+
return 1;
6+
}
7+
8+
int g(void)
9+
{
10+
return 2;
11+
}
12+
13+
typedef int (*fp_t)(void);
14+
15+
void use_fp(fp_t fp)
16+
{
17+
assert(fp() == 2);
18+
}
19+
20+
void main()
21+
{
22+
use_fp(g);
23+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
test.c
3+
--restrict-function-pointer-by-name use_fp::fp/g
4+
\[use_fp\.assertion\.1\] line \d+ dereferenced function pointer at use_fp\.function_pointer_call\.1 must be g: SUCCESS
5+
\[use_fp\.assertion\.2\] line \d+ assertion fp\(\) == 2: SUCCESS
6+
^EXIT=0$
7+
^SIGNAL=0$
8+
--
9+
--

regression/goto-instrument/restrict-function-pointer-by-name/test.c

Lines changed: 0 additions & 43 deletions
This file was deleted.

regression/goto-instrument/restrict-function-pointer-by-name/test.desc

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)