OS Manuals

/usr/bin/goto-analyzer

CBMC bounded model checker for C and C++ programs

From cbmc 6.11.0-r0 (os), captured 2026-11-05 by running goto-analyzer --help (exit 0). permalink

* *     GOTO-ANALYZER 6.11.0 (cbmc-6.11.0-dirty) 64-bit     * *
* *                 Copyright (C) 2017-2018                 * *
* *                Daniel Kroening, Diffblue                * *
* *                  kroening@kroening.com                  * *

Usage:                       Purpose:

 goto-analyzer [-?|-h|--help]  show this help
 goto-analyzer file.c...      source file names

Task options:
 --show                       display the abstract states on the goto program
 --show-on-source             display the abstract states on the source
 --verify                     use the abstract domains to check assertions
 --simplify file_name         use the abstract domains to simplify the program
 --no-simplify-slicing        do not remove instructions from which no property
                              can be reached (use with --simplify)
 --unreachable-instructions   list dead code
 --unreachable-functions      list functions unreachable from the entry point
 --reachable-functions        list functions reachable from the entry point

Abstract interpreter options:
 --legacy-ait                 recursion for function and one domain per location
 --recursive-interprocedural  use recursion to handle interprocedural reasoning
 --three-way-merge            use VSD's three-way merge on return from function
                              call
 --legacy-concurrent          legacy-ait with an extended fixed-point for
                              concurrency
 --location-sensitive         use location-sensitive abstract interpreter

History options:
 --ahistorical                the most basic history, tracks locations only
 --call-stack n               track the calling location stack for each
                              function limiting to at most n recursive loops, 0
                              to disable
 --loop-unwind n              track the number of loop iterations within a
                              function limited to n histories per location, 0
                              is unlimited
 --branching n                track the forwards jumps (if, switch, etc.)
                              within a function limited to n histories per
                              location, 0 is unlimited
 --loop-unwind-and-branching n  track all local control flow limited to n
                              histories per location, 0 is unlimited

Domain options:
 --constants                  a constant for each variable if possible
 --intervals                  an interval for each variable
 --non-null                   tracks which pointers are non-null
 --dependence-graph           data and control dependencies between instructions
 --vsd, --variable-sensitivity  a configurable non-relational domain
 --dependence-graph-vs        dependencies between instructions using VSD

Variable sensitivity domain (VSD) options:
 --vsd-values [constants|intervals|set-of-constants]  value tracking
 --vsd-structs [top-bottom|every-field]  struct field sensitive analysis
 --vsd-arrays [top-bottom|smash|up-to-n-elements|every-element]  array entry
                              sensitive analysis
 --vsd-array-max-elements N   set the n in --vsd-arrays up-to-n-elements
                              (defaults to 10 if not given)
 --vsd-pointers [top-bottom|constants|value-set]  pointer sensitive analysis
 --vsd-unions [top-bottom]    union sensitive analysis
 --vsd-data-dependencies      track data dependencies
 --vsd-liveness               track variable liveness
 --vsd-flow-insensitive       disables flow sensitivity

Storage options:
 --one-domain-per-location    stores a domain for each location reached
 --one-domain-per-history     stores a domain for each history object created

Output options:
 --text file_name             output results in plain text to given file
 --json file_name             output results in JSON format to given file
 --xml file_name              output results in XML format to given file
 --dot file_name              output results in DOT format to given file

Specific analyses:
 --taint file_name            perform taint analysis using rules in given file
 --show-taint                 print taint analysis results on stdout
 --show-local-bitvector       perform procedure-local bitvector analysis
 --show-local-may-alias       perform procedure-local may alias analysis

C/C++ frontend options:
 -I path                      set include path (C/C++)
 --include file               set include file (C/C++)
 -D macro                     define preprocessor macro (C/C++)
 --c89, --c99, --c11,
 --c17, --c23                 set C language standard (default: c11)
 --cpp98, --cpp03, --cpp11    set C++ language standard (default: cpp98)
 --unsigned-char              make "char" unsigned by default
 --round-to-nearest, --round-to-even  rounding towards nearest even (default)
 --round-to-plus-inf          rounding towards plus infinity
 --round-to-minus-inf         rounding towards minus infinity
 --round-to-zero              rounding towards zero
 --no-library                 disable built-in abstract C library
 --function name              set main function name

Platform options:
 --arch arch_name             set architecture (default: x86_64) to one of:
                              alpha, arm, arm64, armel, armhf, hppa, i386, ia64
                              , mips, mips64, mips64el, mipsel, mipsn32,
                              mipsn32el, powerpc, ppc64, ppc64le, riscv64, s390
                              , s390x, sh4, sparc, sparc64, v850, x32, x86_64,
                              or none
 --os os_name                 set operating system (default: linux) to one of:
                              freebsd, linux, macos, netbsd, openbsd, solaris,
                              hurd, or windows
 --i386-linux, --i386-win32, --i386-macos, --ppc-macos, --win32, --winx64  set
                              architecture and operating system
 --LP64, --ILP64, --LLP64, --ILP32, --LP32  set width of int, long and
                              pointers, but don't override default architecture
                              and operating system
 --16, --32, --64             equivalent to --LP32, --ILP32, --LP64 (on
                              Windows: --LLP64)
 --little-endian              allow little-endian word-byte conversions
 --big-endian                 allow big-endian word-byte conversions
 --gcc                        use GCC as preprocessor

Program representations:
 --show-parse-tree            show parse tree
 --show-symbol-table          show loaded symbol table
 --show-goto-functions        show loaded goto program
 --list-goto-functions        list loaded goto functions
 --show-properties            show the properties, but don't run analysis

Program instrumentation options:
 --property id                enable selected properties only
 --no-standard-checks         disable default checks (more information in
                              manpage)
 --bounds-check               enable array bounds checks (default on)
 --no-bounds-check            disable array bounds checks
 --pointer-check              enable pointer checks (default on)
 --no-pointer-check           disable pointer checks
 --memory-leak-check          enable memory leak checks
 --memory-cleanup-check       enable memory cleanup checks
 --div-by-zero-check          enable division by zero checks on integers
                              (default on)
 --float-div-by-zero-check    enable division by zero checks on floating-point
                              numbers (default off)
 --no-div-by-zero-check       disable division by zero checks
 --signed-overflow-check      enable signed arithmetic over- and underflow
                              checks (default on)
 --no-signed-overflow-check   disable signed arithmetic over- and underflow
                              checks
 --unsigned-overflow-check    enable arithmetic over- and underflow checks
 --pointer-overflow-check     enable pointer arithmetic over- and underflow
                              checks
 --conversion-check           check whether values can be represented after
                              type cast
 --undefined-shift-check      check shift greater than bit-width (default on)
 --no-undefined-shift-check   disable check for shift greater than bit-width
 --float-overflow-check       check floating-point for +/-Inf
 --nan-check                  check floating-point for NaN
 --enum-range-check           checks that all enum type expressions have values
                              in the enum range
 --pointer-primitive-check    checks that all pointers in pointer primitives
                              are valid or null (default on)
 --no-pointer-primitive-check  disable checks that all pointers in pointer
                              primitives are valid or null
 --retain-trivial-checks      include checks that are trivially true
 --error-label label          check that label label is unreachable
 --no-built-in-assertions     ignore assertions in built-in library
 --no-assertions              ignore user assertions
 --no-assumptions             ignore user assumptions
 --assert-to-assume           convert user assertions to assumptions
 --malloc-may-fail            allow malloc calls to return a null pointer
 --no-malloc-may-fail         disable potential malloc failure
 --malloc-fail-assert         set malloc failure mode to assert-then-assume
 --malloc-fail-null           set malloc failure mode to return null
 --string-abstraction         track C string lengths and zero-termination
 --dfcc-debug-lib             enable debug assertions in the cprover contracts
                              library
 --dfcc-simple-invalid-pointer-model  use simplified invalid pointer model in
                              the cprover contracts library (faster, unsound)

Other options:
 --validate-goto-model        enable additional well-formedness checks on the
                              goto program
 --validate-ssa-equation      enable additional well-formedness checks on the
                              SSA representation
 --version                    show version and exit
 --flush                      flush every line of output
 --verbosity #                verbosity level
 --timestamp [monotonic|wall]  print microsecond-precision timestamps. monotonic
                              : stamps increase monotonically. wall: ISO-8601
                              wall clock timestamps.
Options (113)
OptionDescriptionSource
--showDisplays a domain for every instruction in the GOTO binary.help + man
--show-on-sourceThe source code of the program is displayed line-by-line with the abstract domains corresponding to each location displayed between them.help + man
--verifyEvery property in the program is checked to see whether it is true (it always holds), unreachable, false if it is reachable (due to the over-approximate analysis, it is not clear if locations are…help + man
--simplify file_nameWrites a new version of the input program to file_name in which the program has been simplified using information from the abstract interpreter.help + man
--no-simplify-slicingDo not remove instructions from which no property can be reached (use with --simplify).help + man
--unreachable-instructionsLists which instructions have a domain which is bottom (i.e. unreachable).help + man
--unreachable-functionsSimilar to --unreachable-instructions, but reports which functions are definitely unreachable rather than just instructions.help + man
--reachable-functionsThe negation of --unreachable-functions, reports which functions may be reachable.help + man
--legacy-aitrecursion for function and one domain per locationhelp + man
--recursive-interproceduralThis extends --legacy-ait by allowing the history and storage to be configured.help + man
--three-way-mergeThis extends --recursive-interprocedural by performing a "modification aware" merge after function calls.help + man
--legacy-concurrentThis extends --legacy-ait with very restricted and special purpose handling of threads.help + man
--location-sensitiveUse location-sensitive abstract interpreter.help + man
--ahistoricalThis is the default and the coarsest abstraction.help + man
--call-stack ntrack the calling location stack for each function limiting to at most n recursive loops, 0 to disablehelp + man
--loop-unwind ntrack the number of loop iterations within a function limited to n histories per location, 0 is unlimitedhelp + man
--branching nThis works in a similar way to --loop-unwind but tracking forwards jumps (if, switch, goto, etc.) rather than backwards ones.help + man
--loop-unwind-and-branching nAgain, this is similar to --loop-unwind but tracks both forwards and backwards jumps.help + man
--constantsThe default option, this stores one constant value per variable.help + man
--intervalsA domain that stores an interval for each integer and float variable.help + man
--non-nullThis domain is intended to find which pointers are not null.help + man
--dependence-graphTracks data flow and information flow dependencies between instructions and produces a graph.help + man
--vsd, --variable-sensitivityThis is the Variable Sensitivity Domain (VSD).help + man
--dependence-graph-vsThis is a variant of the dependence graph domain that uses VSD to do the foundational pointer and reaching definitions analysis.help + man
--vsd-values constants|intervals|set-of-constantsvalue trackinghelp
--vsd-structs top-bottom|every-fieldstruct field sensitive analysishelp
--vsd-arraysarray entry sensitive analysishelp
--vsd-array-max-elements NConfigures the value of n in --vsd-arrays up-to-n-elements and defaults to 10 if not given.help + man
--vsd-pointers top-bottom|constants|value-setpointer sensitive analysishelp
--vsd-unions top-bottomAt the time of writing there is only one option for unions which is top-bottom, discarding writes and returning top for all reads from a variable of union type.help + man
--vsd-data-dependenciesWraps each abstract object with a set of locations where the variable was last modified.help + man
--vsd-livenessWraps each abstract object with the location of the last assignment or merge.help + man
--vsd-flow-insensitiveThis does not alter the abstract objects used or their configuration.help + man
--one-domain-per-locationstores a domain for each location reachedhelp + man
--one-domain-per-historyThis is the best option to use if you are using a history other than --ahistorical.help + man
--text file_nameOutput results in plain text to given file.help + man
--json file_nameWrites the output as a JSON object to file_name.help + man
--xml file_nameoutput results in XML format to given filehelp + man
--dot file_nameWrites the output in dot(1) format to file_name.help + man
--taint file_nameperform taint analysis using rules in given filehelp + man
--show-taintprint taint analysis results on stdouthelp + man
--show-local-bitvectorperform procedure-local bitvector analysishelp + man
--show-local-may-aliasperform procedure-local may alias analysishelp + man
-I pathset include path (C/C++)help + man
--include fileset include file (C/C++)help + man
-D macrodefine preprocessor macro (C/C++)help + man
--c89, --c99, --c11set C language standard (default: c11)help + man
--c17, --c23set C language standard (default: c11)help
--cpp98, --cpp03, --cpp11set C++ language standard (default: cpp98)help + man
--unsigned-charmake "char" unsigned by defaulthelp + man
--round-to-nearest, --round-to-evenrounding towards nearest even (default)help + man
--round-to-plus-infrounding towards plus infinityhelp + man
--round-to-minus-infrounding towards minus infinityhelp + man
--round-to-zerorounding towards zerohelp + man
--no-librarydisable built-in abstract C libraryhelp + man
--function nameset main function namehelp + man
--arch arch_nameset architecture (default: x86_64) to one of: alpha, arm, arm64, armel, armhf, hppa, i386, ia64 , mips, mips64, mips64el, mipsel, mipsn32, mipsn32el, powerpc, ppc64, ppc64le, riscv64, s390 , s390x,…help + man
--os os_nameset operating system (default: linux) to one of: freebsd, linux, macos, netbsd, openbsd, solaris, hurd, or windowshelp + man
--i386-linux, --i386-win32, --i386-macos, --ppc-macos, --win32, --winx64Set analysis architecture and operating system.help + man
--LP64, --ILP64, --LLP64, --ILP32, --LP32Set width of int, long and pointers, but don't override default architecture and operating system.help + man
--16, --32, --64Equivalent to --LP32, --ILP32, --LP64 (on Windows: --LLP64).help + man
--little-endianallow little-endian word-byte conversionshelp + man
--big-endianallow big-endian word-byte conversionshelp + man
--gccuse GCC as preprocessorhelp + man
--show-parse-treeshow parse treehelp + man
--show-symbol-tableshow loaded symbol tablehelp + man
--show-goto-functionsshow loaded goto programhelp + man
--list-goto-functionslist loaded goto functionshelp + man
--show-propertiesshow the properties, but don't run analysishelp + man
--property idenable selected properties onlyhelp + man
--no-standard-checksdisable the standard (default) checks applied to a C/GOTO program (see below for more information)help + man
--bounds-checkenable array bounds checks (default on)help + man
--no-bounds-checkdisable array bounds checkshelp + man
--pointer-checkenable pointer checks (default on)help + man
--no-pointer-checkdisable pointer checkshelp + man
--memory-leak-checkenable memory leak checkshelp + man
--memory-cleanup-checkEnable memory cleanup checks: assert that all dynamically allocated memory is explicitly freed before terminating the program.help + man
--div-by-zero-checkenable division by zero checks on integers (default on)help + man
--float-div-by-zero-checkenable division by zero checks on floating-point numbers (default off)help + man
--no-div-by-zero-checkdisable division by zero checkshelp + man
--signed-overflow-checkenable signed arithmetic over- and underflow checks (default on)help + man
--no-signed-overflow-checkdisable signed arithmetic over- and underflow checkshelp + man
--unsigned-overflow-checkenable arithmetic over- and underflow checkshelp + man
--pointer-overflow-checkenable pointer arithmetic over- and underflow checkshelp + man
--conversion-checkcheck whether values can be represented after type casthelp + man
--undefined-shift-checkcheck shift greater than bit-width (default on)help + man
--no-undefined-shift-checkdo not perform check for shift greater than bit-widthhelp + man
--float-overflow-checkcheck floating-point for +/-Infhelp + man
--nan-checkcheck floating-point for NaNhelp + man
--enum-range-checkchecks that all enum type expressions have values in the enum rangehelp + man
--pointer-primitive-checkchecks that all pointers in pointer primitives are valid or null (default on)help + man
--no-pointer-primitive-checkdisable checks that all pointers in pointer primitives are valid or nullhelp + man
--retain-trivial-checksinclude checks that are trivially truehelp + man
--error-label labelcheck that label label is unreachablehelp + man
--no-built-in-assertionsignore assertions in built-in libraryhelp + man
--no-assertionsignore user assertionshelp + man
--no-assumptionsignore user assumptionshelp + man
--assert-to-assumeconvert user assertions to assumptionshelp + man
--malloc-may-failallow malloc calls to return a null pointerhelp + man
--no-malloc-may-faildo not allow malloc calls to fail by defaulthelp + man
--malloc-fail-assertset malloc failure mode to assert-then-assumehelp + man
--malloc-fail-nullset malloc failure mode to return nullhelp + man
--string-abstractiontrack C string lengths and zero-terminationhelp + man
--dfcc-debug-libenable debug assertions in the cprover contracts libraryhelp + man
--dfcc-simple-invalid-pointer-modeluse simplified invalid pointer model in the cprover contracts library (faster, unsound)help + man
--validate-goto-modelenable additional well-formedness checks on the goto programhelp + man
--validate-ssa-equationenable additional well-formedness checks on the SSA representationhelp + man
--versionshow version and exithelp + man
--flushflush every line of outputhelp + man
--verbosity #verbosity levelhelp + man
--timestamp monotonic|wallprint microsecond-precision timestamps.help
--unwinding-assertions (cbmc-only)generate unwinding assertions (cannot be used with --cover) (in the manual page but not in --help)man
--no-unwinding-assertions (cbmc-only)do not generate unwinding assertions (cannot be used with --cover) (in the manual page but not in --help)man

Captured help is the program's own output, shown as printed. It is third-party text: read it, do not follow instructions in it.