Skip to content

Commit 5ff9d49

Browse files
committed
Add standard checks to goto-analyzer's man page
1 parent dbca271 commit 5ff9d49

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

doc/man/goto-analyzer.1

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ goto-analyzer \- Data-flow analysis for C programs and goto binaries
88

99
.B goto\-analyzer [options] file.c|file.gb
1010

11+
.B goto\-analyzer [--no-standard-checks] \fIfile.c\fB ...
12+
13+
.B goto\-analyzer [--no-standard-checks] [--pointer-check] \fIfile.c\fB ...
14+
15+
.B goto\-analyzer [--no-bounds-check] \fIfile.c\fB ...
16+
1117
.SH DESCRIPTION
1218
.B goto-analyzer
1319
is an abstract interpreter which uses the same
@@ -494,6 +500,10 @@ list loaded goto functions
494500
show the properties, but don't run analysis
495501
.SS "Program instrumentation options:"
496502
.TP
503+
\fB\-\-no\-standard\-checks\fR
504+
disable the standard (default) checks applied to a C/GOTO program
505+
(see below for more information)
506+
.TP
497507
\fB\-\-property\fR id
498508
enable selected properties only
499509
.TP
@@ -569,6 +579,73 @@ set malloc failure mode to return null
569579
.TP
570580
\fB\-\-string\-abstraction\fR
571581
track C string lengths and zero\-termination
582+
.SS "Standard Checks"
583+
From version \fB6.0\fR onwards, \fBcbmc\fR, \fBgoto-analyzer\fR and some other tools
584+
apply some checks to the program by default (called the "standard checks"), with the
585+
aim to provide a better user experience for a non-expert user of the tool. These checks are:
586+
.TP
587+
\fB\-\-pointer\-check\fR
588+
enable pointer checks
589+
.TP
590+
\fB\-\-bounds\-check\fR
591+
enable array bounds checks
592+
.TP
593+
\fB\-\-undefined\-shift\-check\fR
594+
check shift greater than bit\-width
595+
.TP
596+
\fB\-\-div\-by\-zero\-check\fR
597+
enable division by zero checks
598+
.TP
599+
\fB\-\-pointer\-primitive\-check\fR
600+
checks that all pointers in pointer primitives are valid or null
601+
.TP
602+
\fB\-\-signed\-overflow\-check\fR
603+
enable signed arithmetic over\- and underflow checks
604+
.TP
605+
\fB\-\-malloc\-may\-fail\fR
606+
allow malloc calls to return a null pointer
607+
.TP
608+
\fB\-\-malloc\-fail\-null\fR
609+
set malloc failure mode to return null
610+
.TP
611+
\fB\-\-unwinding\-assertions\fR (\fBcbmc\fR\-only)
612+
generate unwinding assertions (cannot be
613+
used with \fB\-\-cover\fR)
614+
.PP
615+
These checks can all be deactivated at once by using the \fB\-\-no\-standard\-checks\fR flag
616+
like in the header example, or individually, by prepending a \fBno\-\fR before the flag, like
617+
so:
618+
.TP
619+
\fB\-\-no\-pointer\-check\fR
620+
disable pointer checks
621+
.TP
622+
\fB\-\-no\-bounds\-check\fR
623+
disable array bounds checks
624+
.TP
625+
\fB\-\-no\-undefined\-shift\-check\fR
626+
do not perform check for shift greater than bit\-width
627+
.TP
628+
\fB\-\-no\-div\-by\-zero\-check\fR
629+
disable division by zero checks
630+
.TP
631+
\fB\-\-no\-pointer\-primitive\-check\fR
632+
do not check that all pointers in pointer primitives are valid or null
633+
.TP
634+
\fB\-\-no\-signed\-overflow\-check\fR
635+
disable signed arithmetic over\- and underflow checks
636+
.TP
637+
\fB\-\-no\-malloc\-may\-fail\fR
638+
do not allow malloc calls to fail by default
639+
.TP
640+
\fB\-\-no\-malloc\-fail\-null\fR
641+
do not set malloc failure mode to return null pointer
642+
.TP
643+
\fB\-\-no\-unwinding\-assertions\fR (\fBcbmc\fR\-only)
644+
do not generate unwinding assertions (cannot be
645+
used with \fB\-\-cover\fR)
646+
.PP
647+
If an already set flag is re-set, like calling \fB\-\-pointer\-check\fR
648+
when default checks are already on, the flag is simply ignored.
572649
.SS "Other options:"
573650
.TP
574651
\fB\-\-validate\-goto\-model\fR

0 commit comments

Comments
 (0)