0 - A failed runtime check will abort the program immediately after the error message is emitted.

1 - The default setting, which will abort the program at the end of execution upon failure.

2 - A failed runtime check will not enable the end of execution abort.

The +check options need to be specified at both compile time and link time since they may require additional libraries to be linked into the user program. If different +check options are specified while compiling different source files, all the specified +check options are needed at link time.

Multiple +check options are interpreted left to right. In case of conflicting options, the one on the right will override an earlier +check option.

NOTE: The +check option is only supported on Integrity systems.

+check=all

This option enables all runtime checks provided by the compiler. It overrides any +check=x options that appear earlier on the command line. The +check=all option is currently equivalent to the following options:

+check=bounds

+check=malloc

+check=stack:variables +check=uninit -z +Olit=all

The -zor +Olit=all options that are part of +check=all, can be overridden by an explicit -Zor

+Olit=none option.

+check=none

Turn off all runtime checking options. It disables any +check=x options that appear earlier on the command line.

+check=bounds[:arraypointerallnone]

The +check=bounds option enables checks for out-of-bounds references to array variables or to buffers through pointer access. The check is performed for each reference to an array element or pointer access. If a check fails, an error message is emitted and the program is aborted.

You can specify one of the following +check=bounds suboptions:

array - Enables check for out-of-bounds references to array variables. It applies only to local and global array variables. It also applies to references to array fields of structs. It does not apply to arrays allocated dynamically using malloc or alloca.

pointer - Enables check for out-of-bounds references to buffers through pointer access. The buffer could be a heap object, global variable, or local variable. This suboption also checks out-of-bounds access through common libc function calls such as strcpy, strcat, memset, and so on. The check can create significant run-time performance overhead. See +check=uninit and +check=malloc for their interaction with this option.

all - Enables out-of-bounds checks for both arrays and pointers. This is equal to

+check=bounds:array +check=bounds:pointer.

none - Disables out-of-bounds checks.

+check=bounds (with no suboption) - Is equal to +check=bounds:array. This may change in the future to also include +check=bounds:pointer.

When +check=all is specified, it enables +check=bounds:array only. To enable the pointer out-of- bounds check, +check=bounds:pointer must be specified explicitly.

9