Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert all library functions to new specifications #1029

Closed
sim642 opened this issue Apr 3, 2023 · 0 comments · Fixed by #1174 or #1447
Closed

Convert all library functions to new specifications #1029

sim642 opened this issue Apr 3, 2023 · 0 comments · Fixed by #1174 or #1447
Assignees
Labels
Milestone

Comments

@sim642
Copy link
Member

sim642 commented Apr 3, 2023

Library activations (#1028) won't be precise until all of the old-style things are converted to new ones in appropriate groups:

| "pthread_join" ->
begin match exps with
| [id; ret_var] -> `ThreadJoin (id, ret_var)
| _ -> strange_arguments ()
end
| "kmalloc" | "__kmalloc" | "usb_alloc_urb" | "__builtin_alloca" ->
begin match exps with
| size::_ -> `Malloc size
| _ -> strange_arguments ()
end
| "kzalloc" ->
begin match exps with
| size::_ -> `Calloc (Cil.one, size)
| _ -> strange_arguments ()
end
| "calloc" ->
begin match exps with
| n::size::_ -> `Calloc (n, size)
| _ -> strange_arguments ()
end
| "_spin_trylock" | "spin_trylock" | "mutex_trylock" | "_spin_trylock_irqsave"
| "down_trylock"
-> `Lock(true, true, true)
| "pthread_mutex_trylock" | "pthread_rwlock_trywrlock" | "pthread_spin_trylock"
-> `Lock (true, true, false)
| "_spin_lock" | "_spin_lock_irqsave" | "_spin_lock_bh" | "down_write"
| "mutex_lock" | "mutex_lock_interruptible" | "_write_lock" | "_raw_write_lock"
| "pthread_rwlock_wrlock" | "GetResource" | "_raw_spin_lock"
| "_raw_spin_lock_flags" | "_raw_spin_lock_irqsave" | "_raw_spin_lock_irq" | "_raw_spin_lock_bh"
| "spin_lock" | "pthread_spin_lock"
-> `Lock (get_bool "sem.lock.fail", true, true)
| "pthread_mutex_lock" | "__pthread_mutex_lock"
-> `Lock (get_bool "sem.lock.fail", true, false)
| "pthread_rwlock_tryrdlock" | "pthread_rwlock_rdlock" | "_read_lock" | "_raw_read_lock"
| "down_read"
-> `Lock (get_bool "sem.lock.fail", false, true)
| "__raw_read_unlock" | "__raw_write_unlock" | "raw_spin_unlock"
| "_spin_unlock" | "spin_unlock" | "_spin_unlock_irqrestore" | "_spin_unlock_bh" | "_raw_spin_unlock_bh"
| "mutex_unlock" | "_write_unlock" | "_read_unlock"
| "pthread_mutex_unlock" | "__pthread_mutex_unlock" | "up_read" | "up_write"
| "up" | "pthread_spin_unlock"
-> `Unlock

"atoi", readsAll; (*safe*)
"__builtin_ctz", readsAll;
"__builtin_ctzl", readsAll;
"__builtin_ctzll", readsAll;
"__builtin_clz", readsAll;
"connect", readsAll; (*safe*)
"fclose", readsAll; (*safe*)
"fflush", writesAll; (*unsafe*)
"fopen", readsAll; (*safe*)
"fdopen", readsAll; (*safe*)
"setvbuf", writes[1;2]; (* TODO: if this is used to set an input buffer, the buffer (second argument) would need to remain TOP, *)
(* as any future write (or flush) of the stream could result in a write to the buffer *)
"fprintf", writes [1]; (*keep [1]*)
"__fprintf_chk", writes [1]; (*keep [1]*)
"fread", writes [1;4];
"__fread_alias", writes [1;4];
"__fread_chk", writes [1;4];
"utimensat", readsAll;
"free", frees [1]; (*unsafe*)
"fwrite", readsAll;(*safe*)
"getopt", writes [2];(*keep [2]*)
"localtime", readsAll;(*safe*)
"mempcpy", writes [1];(*keep [1]*)
"__builtin___mempcpy_chk", writes [1];
"printf", readsAll;(*safe*)
"__printf_chk", readsAll;(*safe*)
"printk", readsAll;(*safe*)
"perror", readsAll;(*safe*)
"pthread_mutex_lock", readsAll;(*safe*)
"pthread_mutex_trylock", readsAll;
"pthread_mutex_unlock", readsAll;(*safe*)
"pthread_spin_lock", readsAll;(*safe*)
"pthread_spin_trylock", readsAll;
"pthread_spin_unlock", readsAll;(*safe*)
"__pthread_mutex_lock", readsAll;(*safe*)
"__pthread_mutex_trylock", readsAll;
"__pthread_mutex_unlock", readsAll;(*safe*)
"__mutex_init", readsAll;(*safe*)
"mutex_init", readsAll;(*safe*)
"mutex_lock", readsAll;(*safe*)
"mutex_lock_interruptible", readsAll;(*safe*)
"mutex_unlock", readsAll;(*safe*)
"_spin_lock", readsAll;(*safe*)
"_spin_unlock", readsAll;(*safe*)
"_spin_lock_irqsave", readsAll;(*safe*)
"_spin_unlock_irqrestore", readsAll;(*safe*)
"pthread_mutex_init", readsAll;(*safe*)
"pthread_mutex_destroy", readsAll;(*safe*)
"pthread_mutexattr_settype", readsAll;(*safe*)
"pthread_mutexattr_init", readsAll;(*safe*)
"pthread_spin_init", readsAll;(*safe*)
"pthread_spin_destroy", readsAll;(*safe*)
"pthread_self", readsAll;(*safe*)
"read", writes [2];(*keep [2]*)
"recv", writes [2];(*keep [2]*)
"scanf", writesAllButFirst 1 readsAll;(*drop 1*)
"send", readsAll;(*safe*)
"snprintf", writes [1];(*keep [1]*)
"__builtin___snprintf_chk", writes [1];(*keep [1]*)
"sprintf", writes [1];(*keep [1]*)
"sscanf", writesAllButFirst 2 readsAll;(*drop 2*)
"strcmp", readsAll;(*safe*)
"strftime", writes [1];(*keep [1]*)
"strlen", readsAll;(*safe*)
"strncmp", readsAll;(*safe*)
"strncat", writes [1];(*keep [1]*)
"strstr", readsAll;(*safe*)
"strdup", readsAll;(*safe*)
"toupper", readsAll;(*safe*)
"tolower", readsAll;(*safe*)
"time", writesAll;(*unsafe*)
"vfprintf", writes [1];(*keep [1]*)
"__vfprintf_chk", writes [1];(*keep [1]*)
"vprintf", readsAll;(*safe*)
"vsprintf", writes [1];(*keep [1]*)
"write", readsAll;(*safe*)
"__builtin_va_arg", readsAll;(*safe*)
"__builtin_va_end", readsAll;(*safe*)
"__builtin_va_start", readsAll;(*safe*)
"__ctype_b_loc", readsAll;(*safe*)
"__errno", readsAll;(*safe*)
"__errno_location", readsAll;(*safe*)
"sigfillset", writesAll; (*unsafe*)
"sigprocmask", writesAll; (*unsafe*)
"uname", writesAll;(*unsafe*)
"__builtin_strcmp", readsAll;(*safe*)
"getopt_long", writesAllButFirst 2 readsAll;(*drop 2*)
"__strdup", readsAll;(*safe*)
"strtoul__extinline", readsAll;(*safe*)
"geteuid", readsAll;(*safe*)
"opendir", readsAll; (*safe*)
"readdir_r", writesAll;(*unsafe*)
"atoi__extinline", readsAll;(*safe*)
"getpid", readsAll;(*safe*)
"fgetc", writesAll;(*unsafe*)
"getc", writesAll;(*unsafe*)
"_IO_getc", writesAll;(*unsafe*)
"closedir", writesAll;(*unsafe*)
"setrlimit", readsAll;(*safe*)
"chdir", readsAll;(*safe*)
"pipe", writesAll;(*unsafe*)
"close", writesAll;(*unsafe*)
"setsid", readsAll;(*safe*)
"strerror_r", writesAll;(*unsafe*)
"pthread_attr_init", writesAll; (*unsafe*)
"pthread_attr_setdetachstate", writesAll;(*unsafe*)
"pthread_attr_setstacksize", writesAll;(*unsafe*)
"pthread_attr_setscope", writesAll;(*unsafe*)
"pthread_attr_getdetachstate", readsAll;(*safe*)
"pthread_attr_getstacksize", readsAll;(*safe*)
"pthread_attr_getscope", readsAll;(*safe*)
"pthread_cond_init", readsAll; (*safe*)
"pthread_cond_wait", readsAll; (*safe*)
"pthread_cond_signal", readsAll;(*safe*)
"pthread_cond_broadcast", readsAll;(*safe*)
"pthread_cond_destroy", readsAll;(*safe*)
"__pthread_cond_init", readsAll; (*safe*)
"__pthread_cond_wait", readsAll; (*safe*)
"__pthread_cond_signal", readsAll;(*safe*)
"__pthread_cond_broadcast", readsAll;(*safe*)
"__pthread_cond_destroy", readsAll;(*safe*)
"pthread_key_create", writesAll;(*unsafe*)
"sigemptyset", writesAll;(*unsafe*)
"sigaddset", writesAll;(*unsafe*)
"pthread_sigmask", writesAllButFirst 2 readsAll;(*unsafe*)
"raise", writesAll;(*unsafe*)
"_strlen", readsAll;(*safe*)
"__builtin_alloca", readsAll;(*safe*)
"dlopen", readsAll;(*safe*)
"dlsym", readsAll;(*safe*)
"dlclose", readsAll;(*safe*)
"dlerror", readsAll;(*safe*)
"stat__extinline", writesAllButFirst 1 readsAll;(*drop 1*)
"lstat__extinline", writesAllButFirst 1 readsAll;(*drop 1*)
"__builtin_strchr", readsAll;(*safe*)
"__builtin___strcpy", writes [1];(*keep [1]*)
"__builtin___strcpy_chk", writes [1];(*keep [1]*)
"strcat", writes [1];(*keep [1]*)
"strtok", readsAll;(*safe*)
"getpgrp", readsAll;(*safe*)
"umount2", readsAll;(*safe*)
"memchr", readsAll;(*safe*)
"memmove", writes [2;3];(*keep [2;3]*)
"__builtin_memmove", writes [2;3];(*keep [2;3]*)
"__builtin___memmove_chk", writes [2;3];(*keep [2;3]*)
"waitpid", readsAll;(*safe*)
"statfs", writes [1;3;4];(*keep [1;3;4]*)
"mkdir", readsAll;(*safe*)
"mount", readsAll;(*safe*)
"open", readsAll;(*safe*)
"__open_alias", readsAll;(*safe*)
"__open_2", readsAll;(*safe*)
"fcntl", readsAll;(*safe*)
"ioctl", writesAll;(*unsafe*)
"fstat__extinline", writesAll;(*unsafe*)
"umount", readsAll;(*safe*)
"rmdir", readsAll;(*safe*)
"strrchr", readsAll;(*safe*)
"scandir", writes [1;3;4];(*keep [1;3;4]*)
"unlink", readsAll;(*safe*)
"sched_yield", readsAll;(*safe*)
"nanosleep", writesAllButFirst 1 readsAll;(*drop 1*)
"sigdelset", readsAll;(*safe*)
"sigwait", writesAllButFirst 1 readsAll;(*drop 1*)
"setlocale", readsAll;(*safe*)
"bindtextdomain", readsAll;(*safe*)
"textdomain", readsAll;(*safe*)
"dcgettext", readsAll;(*safe*)
"syscall", writesAllButFirst 1 readsAll;(*drop 1*)
"sysconf", readsAll;
"fputs", readsAll;(*safe*)
"fputc", readsAll;(*safe*)
"fseek", writes[1];
"rewind", writesAll;
"fileno", readsAll;
"ferror", readsAll;
"ftell", readsAll;
"putc", readsAll;(*safe*)
"putw", readsAll;(*safe*)
"putchar", readsAll;(*safe*)
"getchar", readsAll;(*safe*)
"feof", readsAll;(*safe*)
"__getdelim", writes [3];(*keep [3]*)
"vsyslog", readsAll;(*safe*)
"gethostbyname_r", readsAll;(*safe*)
"__h_errno_location", readsAll;(*safe*)
"__fxstat", readsAll;(*safe*)
"getuid", readsAll;(*safe*)
"strerror", readsAll;(*safe*)
"readdir", readsAll;(*safe*)
"openlog", readsAll;(*safe*)
"getdtablesize", readsAll;(*safe*)
"umask", readsAll;(*safe*)
"socket", readsAll;(*safe*)
"clntudp_create", writesAllButFirst 3 readsAll;(*drop 3*)
"svctcp_create", readsAll;(*safe*)
"clntudp_bufcreate", writesAll;(*unsafe*)
"authunix_create_default", readsAll;(*safe*)
"writev", readsAll;(*safe*)
"clnt_broadcast", writesAll;(*unsafe*)
"clnt_sperrno", readsAll;(*safe*)
"pmap_unset", writesAll;(*unsafe*)
"bind", readsAll;(*safe*)
"svcudp_create", readsAll;(*safe*)
"svc_register", writesAll;(*unsafe*)
"sleep", readsAll;(*safe*)
"usleep", readsAll;
"svc_run", writesAll;(*unsafe*)
"dup", readsAll; (*safe*)
"__builtin_expect", readsAll; (*safe*)
"vsnprintf", writesAllButFirst 3 readsAll; (*drop 3*)
"__builtin___vsnprintf", writesAllButFirst 3 readsAll; (*drop 3*)
"__builtin___vsnprintf_chk", writesAllButFirst 3 readsAll; (*drop 3*)
"syslog", readsAll; (*safe*)
"strcasecmp", readsAll; (*safe*)
"strchr", readsAll; (*safe*)
"getservbyname", readsAll; (*safe*)
"__error", readsAll; (*safe*)
"__maskrune", writesAll; (*unsafe*)
"inet_addr", readsAll; (*safe*)
"gethostbyname", readsAll; (*safe*)
"setsockopt", readsAll; (*safe*)
"listen", readsAll; (*safe*)
"getsockname", writes [1;3]; (*keep [1;3]*)
"getenv", readsAll; (*safe*)
"execl", readsAll; (*safe*)
"select", writes [1;5]; (*keep [1;5]*)
"accept", writesAll; (*keep [1]*)
"getpeername", writes [1]; (*keep [1]*)
"times", writesAll; (*unsafe*)
"timespec_get", writes [1];
"fgets", writes [1;3]; (*keep [3]*)
"__fgets_alias", writes [1;3]; (*keep [3]*)
"__fgets_chk", writes [1;3]; (*keep [3]*)
"strtoul", readsAll; (*safe*)
"__tolower", readsAll; (*safe*)
"signal", writesAll; (*unsafe*)
"strsignal", readsAll;
"popen", readsAll; (*safe*)
"BF_cfb64_encrypt", writes [1;3;4;5]; (*keep [1;3;4,5]*)
"BZ2_bzBuffToBuffDecompress", writes [3;4]; (*keep [3;4]*)
"uncompress", writes [3;4]; (*keep [3;4]*)
"stat", writes [2]; (*keep [1]*)
"__xstat", writes [3]; (*keep [1]*)
"__lxstat", writes [3]; (*keep [1]*)
"remove", readsAll;
"BZ2_bzBuffToBuffCompress", writes [3;4]; (*keep [3;4]*)
"compress2", writes [3]; (*keep [3]*)
"__toupper", readsAll; (*safe*)
"BF_set_key", writes [3]; (*keep [3]*)
"memcmp", readsAll; (*safe*)
"sendto", writes [2;4]; (*keep [2;4]*)
"recvfrom", writes [4;5]; (*keep [4;5]*)
"srand", readsAll; (*safe*)
"rand", readsAll; (*safe*)
"gethostname", writesAll; (*unsafe*)
"fork", readsAll; (*safe*)
"setrlimit", readsAll; (*safe*)
"getrlimit", writes [2]; (*keep [2]*)
"sem_init", readsAll; (*safe*)
"sem_destroy", readsAll; (*safe*)
"sem_wait", readsAll; (*safe*)
"sem_post", readsAll; (*safe*)
"PL_NewHashTable", readsAll; (*safe*)
"__assert_fail", readsAll; (*safe*)
"assert_failed", readsAll; (*safe*)
"htonl", readsAll; (*safe*)
"htons", readsAll; (*safe*)
"ntohl", readsAll; (*safe*)
"htons", readsAll; (*safe*)
"munmap", readsAll;(*safe*)
"mmap", readsAll;(*safe*)
"clock", readsAll;
"pthread_rwlock_wrlock", readsAll;
"pthread_rwlock_trywrlock", readsAll;
"pthread_rwlock_rdlock", readsAll;
"pthread_rwlock_tryrdlock", readsAll;
"pthread_rwlockattr_destroy", writesAll;
"pthread_rwlockattr_init", writesAll;
"pthread_rwlock_destroy", readsAll;
"pthread_rwlock_init", readsAll;
"pthread_rwlock_unlock", readsAll;
"__builtin_bswap16", readsAll;
"__builtin_bswap32", readsAll;
"__builtin_bswap64", readsAll;
"__builtin_bswap128", readsAll;
"__builtin_va_arg_pack_len", readsAll;
"__open_too_many_args", readsAll;
"usb_submit_urb", readsAll; (* first argument is written to but according to specification must not be read from anymore *)
"dev_driver_string", readsAll;
"dev_driver_string", readsAll;
"__spin_lock_init", writes [1];
"kmem_cache_create", readsAll;
"idr_pre_get", readsAll;
"zil_replay", writes [1;2;3;5];
"__VERIFIER_nondet_int", readsAll; (* no args, declare invalidate actions to prevent invalidating globals when extern in regression tests *)
(* no args, declare invalidate actions to prevent invalidating globals *)
"__VERIFIER_atomic_begin", readsAll;
"__VERIFIER_atomic_end", readsAll;
"isatty", readsAll;
"setpriority", readsAll;
"getpriority", readsAll;
(* ddverify *)
"spin_lock_init", readsAll;
"spin_lock", readsAll;
"spin_unlock", readsAll;
"sema_init", readsAll;
"down_trylock", readsAll;
"up", readsAll;
"acos", readsAll;
"acosf", readsAll;
"acosh", readsAll;
"acoshf", readsAll;
"acoshl", readsAll;
"acosl", readsAll;
"asin", readsAll;
"asinf", readsAll;
"asinh", readsAll;
"asinhf", readsAll;
"asinhl", readsAll;
"asinl", readsAll;
"atan", readsAll;
"atan2", readsAll;
"atan2f", readsAll;
"atan2l", readsAll;
"atanf", readsAll;
"atanh", readsAll;
"atanhf", readsAll;
"atanhl", readsAll;
"atanl", readsAll;
"cbrt", readsAll;
"cbrtf", readsAll;
"cbrtl", readsAll;
"ceil", readsAll;
"ceilf", readsAll;
"ceill", readsAll;
"copysign", readsAll;
"copysignf", readsAll;
"copysignl", readsAll;
"cos", readsAll;
"cosf", readsAll;
"cosh", readsAll;
"coshf", readsAll;
"coshl", readsAll;
"cosl", readsAll;
"erf", readsAll;
"erfc", readsAll;
"erfcf", readsAll;
"erfcl", readsAll;
"erff", readsAll;
"erfl", readsAll;
"exp", readsAll;
"exp2", readsAll;
"exp2f", readsAll;
"exp2l", readsAll;
"expf", readsAll;
"expl", readsAll;
"expm1", readsAll;
"expm1f", readsAll;
"expm1l", readsAll;
"fdim", readsAll;
"fdimf", readsAll;
"fdiml", readsAll;
"fma", readsAll;
"fmaf", readsAll;
"fmal", readsAll;
"fmax", readsAll;
"fmaxf", readsAll;
"fmaxl", readsAll;
"fmin", readsAll;
"fminf", readsAll;
"fminl", readsAll;
"fmod", readsAll;
"fmodf", readsAll;
"fmodl", readsAll;
"frexp", readsAll;
"frexpf", readsAll;
"frexpl", readsAll;
"hypot", readsAll;
"hypotf", readsAll;
"hypotl", readsAll;
"ilogb", readsAll;
"ilogbf", readsAll;
"ilogbl", readsAll;
"j0", readsAll;
"j1", readsAll;
"jn", readsAll;
"ldexp", readsAll;
"ldexpf", readsAll;
"ldexpl", readsAll;
"lgamma", readsAll;
"lgammaf", readsAll;
"lgammal", readsAll;
"llrint", readsAll;
"llrintf", readsAll;
"llrintl", readsAll;
"llround", readsAll;
"llroundf", readsAll;
"llroundl", readsAll;
"log", readsAll;
"log10", readsAll;
"log10f", readsAll;
"log10l", readsAll;
"log1p", readsAll;
"log1pf", readsAll;
"log1pl", readsAll;
"log2", readsAll;
"log2f", readsAll;
"log2l", readsAll;
"logb", readsAll;
"logbf", readsAll;
"logbl", readsAll;
"logf", readsAll;
"logl", readsAll;
"lrint", readsAll;
"lrintf", readsAll;
"lrintl", readsAll;
"lround", readsAll;
"lroundf", readsAll;
"lroundl", readsAll;
"modf", readsAll;
"modff", readsAll;
"modfl", readsAll;
"nan", readsAll;
"nanf", readsAll;
"nanl", readsAll;
"nearbyint", readsAll;
"nearbyintf", readsAll;
"nearbyintl", readsAll;
"nextafter", readsAll;
"nextafterf", readsAll;
"nextafterl", readsAll;
"nexttoward", readsAll;
"nexttowardf", readsAll;
"nexttowardl", readsAll;
"pow", readsAll;
"powf", readsAll;
"powl", readsAll;
"remainder", readsAll;
"remainderf", readsAll;
"remainderl", readsAll;
"remquo", readsAll;
"remquof", readsAll;
"remquol", readsAll;
"rint", readsAll;
"rintf", readsAll;
"rintl", readsAll;
"round", readsAll;
"roundf", readsAll;
"roundl", readsAll;
"scalbln", readsAll;
"scalblnf", readsAll;
"scalblnl", readsAll;
"scalbn", readsAll;
"scalbnf", readsAll;
"scalbnl", readsAll;
"sin", readsAll;
"sinf", readsAll;
"sinh", readsAll;
"sinhf", readsAll;
"sinhl", readsAll;
"sinl", readsAll;
"sqrt", readsAll;
"sqrtf", readsAll;
"sqrtl", readsAll;
"tan", readsAll;
"tanf", readsAll;
"tanh", readsAll;
"tanhf", readsAll;
"tanhl", readsAll;
"tanl", readsAll;
"tgamma", readsAll;
"tgammaf", readsAll;
"tgammal", readsAll;
"trunc", readsAll;
"truncf", readsAll;
"truncl", readsAll;
"y0", readsAll;
"y1", readsAll;
"yn", readsAll;
"__goblint_assume_join", readsAll;

Originally posted by @sim642 in #996 (comment)

@michael-schwarz michael-schwarz linked a pull request Sep 23, 2023 that will close this issue
@sim642 sim642 reopened this Sep 27, 2023
@karoliineh karoliineh linked a pull request May 7, 2024 that will close this issue
2 tasks
@sim642 sim642 added this to the v2.4.0 milestone May 23, 2024
sim642 added a commit to sim642/opam-repository that referenced this issue Aug 2, 2024
CHANGES:

* Remove unmaintained analyses: spec, file (goblint/analyzer#1281).
* Add linear two-variable equalities analysis (goblint/analyzer#1297, goblint/analyzer#1412, goblint/analyzer#1466).
* Add callstring, loopfree callstring and context gas analyses (goblint/analyzer#1038, goblint/analyzer#1340, goblint/analyzer#1379, goblint/analyzer#1427, goblint/analyzer#1439).
* Add non-relational thread-modular value analyses with thread IDs (goblint/analyzer#1366, goblint/analyzer#1398, goblint/analyzer#1399).
* Add NULL byte array domain (goblint/analyzer#1076).
* Fix spurious overflow warnings from internal evaluations (goblint/analyzer#1406, goblint/analyzer#1411, goblint/analyzer#1511).
* Refactor non-definite mutex handling to fix unsoundness (goblint/analyzer#1430, goblint/analyzer#1500, goblint/analyzer#1503, goblint/analyzer#1409).
* Fix non-relational thread-modular value analysis unsoundness with ambiguous points-to sets (goblint/analyzer#1457, goblint/analyzer#1458).
* Fix mutex type analysis unsoundness and enable it by default (goblint/analyzer#1414, goblint/analyzer#1416, goblint/analyzer#1510).
* Add points-to set refinement on mutex path splitting (goblint/analyzer#1287, goblint/analyzer#1343, goblint/analyzer#1374, goblint/analyzer#1396, goblint/analyzer#1407).
* Improve narrowing operators (goblint/analyzer#1502, goblint/analyzer#1540, goblint/analyzer#1543).
* Extract automatic configuration tuning for soundness (goblint/analyzer#1369).
* Fix many locations in witnesses (goblint/analyzer#1355, goblint/analyzer#1372, goblint/analyzer#1400, goblint/analyzer#1403).
* Improve output readability (goblint/analyzer#1294, goblint/analyzer#1312, goblint/analyzer#1405, goblint/analyzer#1497).
* Refactor logging (goblint/analyzer#1117).
* Modernize all library function specifications (goblint/analyzer#1029, goblint/analyzer#688, goblint/analyzer#1174, goblint/analyzer#1289, goblint/analyzer#1447, goblint/analyzer#1487).
* Remove OCaml 4.10, 4.11, 4.12 and 4.13 support (goblint/analyzer#1448).
avsm pushed a commit to avsm/opam-repository that referenced this issue Sep 5, 2024
CHANGES:

* Remove unmaintained analyses: spec, file (goblint/analyzer#1281).
* Add linear two-variable equalities analysis (goblint/analyzer#1297, goblint/analyzer#1412, goblint/analyzer#1466).
* Add callstring, loopfree callstring and context gas analyses (goblint/analyzer#1038, goblint/analyzer#1340, goblint/analyzer#1379, goblint/analyzer#1427, goblint/analyzer#1439).
* Add non-relational thread-modular value analyses with thread IDs (goblint/analyzer#1366, goblint/analyzer#1398, goblint/analyzer#1399).
* Add NULL byte array domain (goblint/analyzer#1076).
* Fix spurious overflow warnings from internal evaluations (goblint/analyzer#1406, goblint/analyzer#1411, goblint/analyzer#1511).
* Refactor non-definite mutex handling to fix unsoundness (goblint/analyzer#1430, goblint/analyzer#1500, goblint/analyzer#1503, goblint/analyzer#1409).
* Fix non-relational thread-modular value analysis unsoundness with ambiguous points-to sets (goblint/analyzer#1457, goblint/analyzer#1458).
* Fix mutex type analysis unsoundness and enable it by default (goblint/analyzer#1414, goblint/analyzer#1416, goblint/analyzer#1510).
* Add points-to set refinement on mutex path splitting (goblint/analyzer#1287, goblint/analyzer#1343, goblint/analyzer#1374, goblint/analyzer#1396, goblint/analyzer#1407).
* Improve narrowing operators (goblint/analyzer#1502, goblint/analyzer#1540, goblint/analyzer#1543).
* Extract automatic configuration tuning for soundness (goblint/analyzer#1369).
* Fix many locations in witnesses (goblint/analyzer#1355, goblint/analyzer#1372, goblint/analyzer#1400, goblint/analyzer#1403).
* Improve output readability (goblint/analyzer#1294, goblint/analyzer#1312, goblint/analyzer#1405, goblint/analyzer#1497).
* Refactor logging (goblint/analyzer#1117).
* Modernize all library function specifications (goblint/analyzer#1029, goblint/analyzer#688, goblint/analyzer#1174, goblint/analyzer#1289, goblint/analyzer#1447, goblint/analyzer#1487).
* Remove OCaml 4.10, 4.11, 4.12 and 4.13 support (goblint/analyzer#1448).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
2 participants