Release notes for Rational Purify 5.2 HP-UX 10.20, 11

ASCII Text Version

Table of Contents

Changes from previous releases

New in This Release

New in Purify 5.1

New in Purify 5.0.1

New in Purify 5.0

New in Purify 4.4

New in Purify 4.3

New In Purify 4.2


Supported systems

Operating system and Hardware

Purify has been tested with HP-UX versions 10.01, 10.10, 10.20, and 11.00 from Hewlett Packard.

This is the last release to support HP-UX versions 10.01 and 10.10.

Purify also supports 64-bit wide-mode programs on HPUX 11.00. A wide-mode program is one that uses 64-bit longs and pointers, built with the compiler option "+DA2.0W."

Compilers

Purify has been tested with the following compilers:

See the "Restrictions and Known Issues" section for more details.

Threads

Purify supports these threads packages:


Restrictions and Known Issues

General

Using 32-bit vs 64-bit Purify

Purify 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.

Purify 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, Purify 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<n> in their name are 32-bit release. P<n> signifies a 64-bit release.)

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 Purify 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:

      -help
      -printhomedir
      -test-license
      -version

In these cases, Purify 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 Purify 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

  • Restrictions on the HP-UX 11.00-wide (64-bit) version of Purify:

            b *purify_stop_here
    

    When you stop at purify_stop_here in the debugger, the debugger's stack trace will not be correct: You won't see the stack trace for you program, only for Purify's runtime libraries.

    The easiest way to get around this is to set a temporary breakpoint at the address which is in register r15 using this wdb command:

             tb *$r15
    

    Then, you can use the "continue" command to stop in your program at the instruction that caused the Purify error report.

  • When a Japanese locale is specified using the LANG environment variable, instrumentation of archive libraries may fail with the message:

    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.

    User Interface

    Compilers

    Purify'ing X Applications

    Debuggers

    Old Style Fixups

    Purify 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 Purify 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.o
      or
           % ld -r -o foo_and_bar.o foo.o bar.o
      would 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
    

    Threads

    Unsupported Features