@@ -8,6 +8,12 @@ goto-analyzer \- Data-flow analysis for C programs and goto binaries
8
8
9
9
.B goto\-analyzer [options] file.c|file.gb
10
10
11
+ .B goto\-analyzer [--no-standard-checks] \fI file.c \fB ...
12
+
13
+ .B goto\-analyzer [--no-standard-checks] [--pointer-check] \fI file.c \fB ...
14
+
15
+ .B goto\-analyzer [--no-bounds-check] \fI file.c \fB ...
16
+
11
17
.SH DESCRIPTION
12
18
.B goto-analyzer
13
19
is an abstract interpreter which uses the same
@@ -494,6 +500,10 @@ list loaded goto functions
494
500
show the properties, but don't run analysis
495
501
.SS "Program instrumentation options:"
496
502
.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
497
507
\fB \-\- property \fR id
498
508
enable selected properties only
499
509
.TP
@@ -569,6 +579,73 @@ set malloc failure mode to return null
569
579
.TP
570
580
\fB \-\- string \- abstraction \fR
571
581
track C string lengths and zero\- termination
582
+ .SS "Standard Checks"
583
+ From version \fB 6.0 \fR onwards, \fB cbmc \fR , \fB goto-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 (\fB cbmc \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 \fB no \- \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 (\fB cbmc \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.
572
649
.SS "Other options:"
573
650
.TP
574
651
\fB \-\- validate \- goto \- model \fR
0 commit comments