New in This Release
New In Quantify 5.0.1
New In Quantify 5.0
New In Quantify 4.4
New in Quantify 4.3
New In Quantify 4.2
New In Quantify 3.1.1
Miscellaneous
This release supports HP-UX 10.30, including kernel threads.
This release supports PA-RISC 2.0 object files.
This release supports the HP aCC compiler.
This release contains a new utility, purela_show, which generates simplified reports from license and usage data maintained in a standard or aggregate PureLA database.
New In Quantify 3.0
Support for HP-UX 10.20
Note: code compiled specifically for the PA2.0 processor is not supported. Such code will be generated by default on PA2.0 systems. Use the compiler option +DA1.1 to disable this.
Support for the HP ANSI C++ compiler "aCC"
Quantify supports the aCC compiler from HP. There is a patch to get from HP to be sure this will work. See the "Restrictions and Known Issues" section for more details.
Pure License Advisor (PureLA)
The "Simple License" advisor, PureLA, offers a number of new features to further simplify the administration of licenses to Rational Software products. See the Installation Guide for more details.
Miscellaneous
When specifying a machine type for which to collect performance data, the clock rate may now also be specified. This avoids the need for Quantify to measure the speed of the machine on which it is currently running. The new syntax is:
-use-machine=: Mhz e.g. -use-machine=sparcstation_5:60MHz
Models for the new superscalar HPPA 7300 and 8000 processors have been incorporated into Quantify, allowing it to more accurately time your code on these machines.
In addition, Quantify's database of machine configurations has been updated to include the latest available data from HP.
Quantify has been tested with the following compilers:
See the "Restrictions and Known Issues" section for more details.
Quantify supports these threads packages:
This change was made due to a problem in HP dld patches from June 1998 for HPUX 11.00 and August 1998 for HP-UX 10.20, which caused the instrumented application to hang after a call to shl_load(). One known instance of this problem occurs when you use getservbyname() because it loads network protocols using shl_load().
Linker and dld patches available after 3/99 don't have this problem. If the user has an earlier patch, an upgrade is strongly recommended.
Release 5.1 supports both 32- and 64-bit development. "Wide" mode, or 64-bit applications are those compiled with the +DA2.0W option - apps using 64-bit pointers. "Narrow" mode applications are traditional 32-bit programs.
Quantify ships in 2 configurations, one supporting wide mode and the other supporting narrow. Both can be installed on the same file system, but the 64-bit version can only be used on 64-bit HP-UX 11.x systems.
If both install directories are in your path, Quantify will auto-select the correct wide or narrow mode version, in most situations (see below for limitations). For example, you can install two versions of Purify:
purify-5.1-beta-H1-hpux (32-bit) purify-5.1-beta-P1-hpux (64-bit)
(Beta and proto release with H
Or, for a final release:
purify-5.1-hpux (32-bit) purify-5.1-hpux64 (64-bit)
If the two install directories are in your path, then running "purify" will automatically select the correct version, based on the type of program you are linking. The same is true for Quantify.
Even if only one install directory is on your path, auto-selection will occur if both versions are properly installed: Running pure_install on each version will prompt you for the location of the other product.
If you already have your licenses installed and do not choose to run pure_install, you can set up this connection between the two install directories by running the script "pure_link_32_64" in each install directory:
% cd purify-5.1-hpux % pure_link_32_64% cd purify-5.1-hpux64 % pure_link_32_64
Auto-selection only works between 32- and 64-bit Quantify from 5.0 onwards.
In some situations, auto-selection does not have enough context to tell which version (32 or 64-bit) you need. This is true for the options:
In these cases, Quantify defaults to the 32-bit version unless you explicitly specify what you want, using the new -ptr64 and -ptr32 options:
% purify -ptr64 -test-license % quantify -ptr64 -printhomedir % purify -ptr32 -version % quantify -ptr32 -help
Failure to include -ptr<32|64> in these cases may yield the wrong information. For example, you may get the product home directory for the 32-bit product when you wanted the 64-bit product.
These options are NOT necessary during normal instrumentation and viewing operations:
% purify cc -g -o foo foo.o % quantify -view my_app.qv
If you attempt to use the 64-bit Quantify using -ptr64, or by having it on your PATH first, on a non 11.x systems, execution will fail. It only runs on HP-UX 11.x and later.
Because of a defect in auto-selection, auto-selection does not occur when using "-nolink". You must use -ptr64 or -ptr32 to ensure the correct version is used:
% quantify -ptr32(or -ptr64) -nolink ld mylib.a
You may also workaround this problem by include the following in your PUREOPTIONS environment variable:
-force-no-dynhash=no
The default setting of this option (to "yes") is used to workaround an HP bug in newer linkers.
Error: Child process exited with status = 1.
This is caused by an 'ar' failure in this locale. A workaround is to unsetenv LANG before instrumenting.
vuewm*enforceKeyFocus: False *OI*wmIgnoresPPosition: True
You can see the same bug in other X applications such as xterm. In xterm, use control-middle-click in the xterm window to pop up the xterm VTOptions pop-up menu. Notice that the menu item "Show Alternate Screen" (close to the bottom of the menu) is greyed out. Now let go of the menu (without selecting anything), and popup the menu again. Note that the same menu item is no longer greyed out.
! Ignore the NumLock and ScrollLock keys on ! mouse buttons Quantify*ignoreModifierMask: Mod3|Mod2
This second workaround will take effect for a new Quantify viewer after you restart your X-session or run a command like 'xrdb -merge $HOME/.Xdefaults'.
g++ 2.7.2 exceptions are not supported.
Use <quantifyhome>/quantify_xdb to invoke xdb on an instrumented program.
An instrumented program receives a signal 18 (death of child) during its initialization. Place "z 18 sir" in your ~/.xdbrc file to suppress this warning. Failure to suppress the warning will sometimes cause xdb to fail.
XDB, when debugging a program that uses shared libraries, reads the symbol table from /lib/dld.sl. However, PureCoverage has changed your program to use an instrumented version of dld.sl. The symptom of this mismatch is the message:
Wait...loading shared-library map tables. xdb panic: Mapped addresses for dld overlap text segment for dld
There is a simple workaround for this problem and we've implemented it in the shell script <quantifyhome>/quantify_xdb. Whenever you use xdb on an instrumented program use this script to invoke xdb.
Typing ^C while running an instrumented program under xdb requires caution. There is a high probability that the interrupt will occur inside the code Quantify has added to your application. If this is the case, you must single step or set a breakpoint and continue before you attempt to call any subroutines (the Quantify API is an example).
The XDB single stepping command, 's' sometimes fails to find the next source line. When this happens, usually near a subroutine call, program execution continues until the next breakpoint. The 'S' command is always reliable.
The DDE debugger at release 2.10 has been used with instrumented programs. The shell script: <quantifyhome>/quantify_dde implements one of the workarounds.
Instrumented programs get a SIGCHLD signal at program initialization. One workaround is to just hit "go" when the program stops. The following commands added to a .dderc file also help:
prop system -on alias `after_debug delete intercept signal SIGCHLD; \ prop system -off; \ breakpoint -in main -entry -exit; \ go
Quantify does not support a type of relocation information known as "old style fixups". These were generated by HP-UX system software before release 3.0. If Quantify detects old style fixups the message:
Object file has incompatible format (may be older than HPUX 3.0)is generated. We have seen this problem with HP's libsql.a and some of Oracle's Oracle6 libraries.
There is a simple workaround. Given a problem object module (or modules) the workaround is to have /bin/ld build a new object module. Suppose the old object modules are called `foo.o' and `bar.o'. Issuing the command:
% ld -r -o new_foo.o foo.o % ld -r -o new_bar.o bar.oor
% ld -r -o foo_and_bar.o foo.o bar.owould generate a new object module where the old style fixups have been removed.
In the case of an archive file the following script will create a new archive given the full pathname of the original:
#!/bin/sh # Remove old fixups from an archive. # Supply original .a name as first argument. cd /tmp lib=new_`basename $1` ar x $1 rm -f $lib for member in `ar t $1` ; do ld -r -o _$member $member ar q $lib _$member rm $member _$member done echo Created `pwd`/$lib