HP C/aC++ Version 6 Features to Improve Developer Productivity
9
• 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 -z or +Olit=all options that are part of +check=all, can be overridden by an explicit -Z or
+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[:array|pointer|all|none]
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.