Build-time options

Option

Default

-cache-dir

<purifyhome>/cache

Sets the global directory where Purify caches the instrumented versions of object files and libraries.

 

-always-use-cache-dir

no

Forces all Purify'd libraries and object files to be written to the global cache directory, even if the originals reside in writable directories.

 

-forbidden-directories

system dependent

Use this option to specify a colon-separated list of directories into which Purify cannot write files, even if the directories listed are writable. All the subdirectories of forbidden directories are also forbidden. The default values are:

Solaris (32 bit): /lib:/opt:/usr/lib:/usr/ccs/lib:
/usr/4lib:/usr/ucblib:/usr/lang:
/usr/local:/usr/openwin/lib
 

Solaris (64 bit): /lib/sparcv9:/usr/lib/sparcv9:
/usr/ccs/lib/sparcv9:
/usr/ucblib/sparcv9:
/usr/openwin/lib/sparcv9

 

HP-UX: /lib:/usr/lib:/usr/local:/opt

IRIX (32 bit):
/lib:/lib32:/usr/lib:/usr/lib32:/usr/local

IRIX (64 bit): /lib:/lib64:/usr/lib:/usr/lib64:/usr/local

 

-auto-mount-prefix

/tmp_mnt

Specifies the directory prefix used by the file system auto-mounter, usually /tmp_mnt, to mount remote file systems in NFS environments. Use this option to strip the prefix, if present, in order to improve the readability of source filenames in Purify reports.

Note: If your automounter alters the prefix, instead of adding a prefix, use: -auto-mount-prefix=/tmp_mnt/home:/homes
 
to specify that the real filename is constructed from the apparent one by replacing /tmp_mnt/home with /homes.

If this option is not set correctly, Purify might be unable to access files on auto-mounted filesystems. The automounter might not recognize their names.

 

-force-rebuild

not set

Forces your entire program to be reinstrumented (irrespective of whether object files and libraries have been updated since they were last instrumented).

For an example of when this is useful, see the --static-checking-guardzone option.

 

-linker

system dependent

Specifies the name of the linker that Purify should invoke to produce the executable. Use this option only if you need to bypass the default linker. The default linkers are:

Solaris: /usr/ccs/bin/ld

HP-UX:
/bin/ld

Purify does not support this option on IRIX.

 

-g++

no

Purify sets this option automatically if you call the g++ compiler. Purify knows that the g++ compiler is being used and invokes special processing to avoid spurious ABR errors with the delete operator. It also sets the default demangling mode so that g++ mangled function names are properly resolved.

 

-collector

not set

Specifies the name of the collect program to be used to sequence and collect static constructors in C++ code. You may have to set this option to the name of the collect program used by the g++ compiler.

To find the name of the collect program used by the g++ compiler, use:

% g++ -v myprogram.c

For example, if the collect program is:

/opt/gcc/2.6.3/lib/gcc-lib/hppa1.1-hp-hpux8.07/2.6.3/ld

use the command:

% purify -g++=yes -collector=/opt/gcc/2.6.3/lib/gcc-lib/hppa1.1-hp-hpux8.07/2.6.3/ld g++ myprogram.c

Notes:

  • g++ on Solaris does not use a collector for C++ programs. Purify on Solaris ignores this option.

  • On HP-UX, gcc versions 2.95 and later, and Cygnus versions 98r2 and later, do not use a collector.

  • Purify does not support the -collector option on IRIX.
     

 

-help

 

Prints a short help message about how to use the command line options.

 

-ignore-runtime-environment

no

Builds into an executable all the run-time options specified on the link line along with any run-time options specified in the PURIFYOPTIONS and PUREOPTIONS environment variables. When the Purify'd program is run, Purify ignores the current option values set in environment variables, and instead uses the built-in values.

Use the -ignore-runtime-environment option when:

  • You want someone else to run your program without their run-time environment modifying the options and suppressions you specified.

  • Your program is started automatically by another program and you cannot set the environment variable for that program.

  • You have several Purify'd programs running at one time and you cannot specify options for each program.

  • You use the -mail-to-user option.

The -ignore-runtime-environment option also builds in suppressions. If you do not explicitly specify the -add-suppression-files option, Purify uses the default suppression files .purify and .purify.<platform>.

When a program has been built with -ignore-runtime-environment, you can display, but not change, the run-time options in the Purify Viewer. You can also display the options using command
% <purifyhome>/purify_what_options <program name>.

Use the -ignore-runtime-environment option at build time only. Purify ignores this option if you specify it at run time.

 

-print-home-dir

 

Prints the name of the directory where Purify is installed, then exits. For example, you can use this option to build the compiler command when including the purify.h file from the installation directory:

$CC -c $CFLAGS -I`purify -print-home-dir` myprogram.c

If you use this option to prefix internal product libraries such as libinternal, you must qualify the library path with the appropriate library sub-directory. For example:

`purify -printhomedir`/lib32/solaris2_threads.so

`purify -printhomedir`/lib64/solaris2_threads.so

 

 

-program-name

argv[0]

Specifies the full pathname of the Purify'd program if argv[0] contains an undesirable or incorrect value. For example, when your program is invoked by an exec call whose path differs from the argument that it passes as argv[0] to your program. In such cases, Purify cannot find the program file and therefore cannot interpret addresses as function names.

You might need to use this option if you find little or no symbolic information in the messages from your Purify'd program.

 

-usage

 

Prints a short help message about how to use the command line options.

 

-version

 

Purify prints its version string to stdout and then exits. For example, you can identify which version of Purify is in use while running a test suite by incorporating these lines in your test harness scripts:

#!/bin/sh
...
 echo "Run monitored by Purify: `purify -version`"
 ...

 

 

-ignore-objdebug

no

If set to yes, instructs Purify to pass the flags +noobjdebug and +nocopyobjdebug to the linker. This excludes the extra +objdebug debug information from the instrumented files.

This option is supported only for on HP-UX 11.X.

 

 

-ignore-objdebug-shlib

NULL

Use this option when you are using the HP-UX +objdebug compiler option to specify a colon-separated list of libraries for which you do not want +objdebug debug information. Note that Purify does instrument these libraries, but does not copy the extra debug information into the instrumented versions.

This option is supported only on HP-UX 11.X.