@@ -17,3 +17,53 @@ for f in "$@"; do
17
17
rm __libcheck.s __libcheck.i __libcheck.c
18
18
[ " ${ec} " -eq 0 ] || exit " ${ec} "
19
19
done
20
+
21
+ # Make sure all internal library functions have tests exercising them:
22
+ grep ' ^/\* FUNCTION:' ../* /library/* | cut -f3 -d" " | sort -u > __functions
23
+
24
+ # Some functions are not expected to have tests:
25
+ perl -p -i -e ' s/^__CPROVER_jsa_synthesise\n//' __functions
26
+ perl -p -i -e ' s/^java::java.io.InputStream.read:\(\)I\n//' __functions
27
+
28
+ # Some functions are implicitly covered by running on different operating
29
+ # systems:
30
+ perl -p -i -e ' s/^_fopen\n//' __functions # fopen, macOS
31
+ perl -p -i -e ' s/^_pipe\n//' __functions # pipe, macOS
32
+ perl -p -i -e ' s/^_time32\n//' __functions # time, Windows
33
+ perl -p -i -e ' s/^_time64\n//' __functions # time, Windows
34
+
35
+ # Some functions are covered by existing tests:
36
+ perl -p -i -e ' s/^__builtin_clzl\n//' __functions # __builtin_clz-01
37
+ perl -p -i -e ' s/^__builtin_clzll\n//' __functions # __builtin_clz-01
38
+ perl -p -i -e ' s/^__builtin_ffsl\n//' __functions # __builtin_ffs-01
39
+ perl -p -i -e ' s/^__builtin_ffsll\n//' __functions # __builtin_ffs-01
40
+ perl -p -i -e ' s/^__lzcnt\n//' __functions # __builtin_clz-01
41
+ perl -p -i -e ' s/^__lzcnt16\n//' __functions # __builtin_clz-01
42
+ perl -p -i -e ' s/^__lzcnt64\n//' __functions # __builtin_clz-01
43
+ perl -p -i -e ' s/^fclose_cleanup\n//' __functions # fopen
44
+
45
+ # Some functions are covered by tests in other folders:
46
+ perl -p -i -e ' s/^__builtin_sadd_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
47
+ perl -p -i -e ' s/^__builtin_saddl_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
48
+ perl -p -i -e ' s/^__builtin_saddll_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
49
+ perl -p -i -e ' s/^__builtin_smul_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
50
+ perl -p -i -e ' s/^__builtin_smull_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
51
+ perl -p -i -e ' s/^__builtin_smulll_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
52
+ perl -p -i -e ' s/^__builtin_ssub_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
53
+ perl -p -i -e ' s/^__builtin_ssubl_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
54
+ perl -p -i -e ' s/^__builtin_ssubll_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
55
+ perl -p -i -e ' s/^__builtin_uadd_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
56
+ perl -p -i -e ' s/^__builtin_uaddl_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
57
+ perl -p -i -e ' s/^__builtin_uaddll_overflow\n//' __functions # cbmc/gcc_builtin_add_overflow
58
+ perl -p -i -e ' s/^__builtin_umul_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
59
+ perl -p -i -e ' s/^__builtin_umull_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
60
+ perl -p -i -e ' s/^__builtin_umulll_overflow\n//' __functions # cbmc/gcc_builtin_mul_overflow
61
+ perl -p -i -e ' s/^__builtin_usub_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
62
+ perl -p -i -e ' s/^__builtin_usubl_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
63
+ perl -p -i -e ' s/^__builtin_usubll_overflow\n//' __functions # cbmc/gcc_builtin_sub_overflow
64
+
65
+ ls ../../regression/cbmc-library/ | grep -- - | cut -f1 -d- | sort -u > __tests
66
+ diff -u __tests __functions
67
+ ec=" ${?} "
68
+ rm __functions __tests
69
+ exit " ${ec} "
0 commit comments