Release notes for PureCoverage 5.2 HP-UX

Contents
========

  o Changes from previous releases

  o Supported systems

  o Restrictions and known issues


New in this release
===================
  - Bug fixes and compatibility with OS patches.

  - This release uses a new FlexLm based
    licensing. Read the new installation
    guide before installing the product.
    Use rs_install instead of pure_install
    for the installation.
  
  - This will be the last release to support
    HPUX 10.01 and HPUX 10.10.

New In PureCoverage 5.1
=======================
  - Bug fixes and compatibility with OS patches.

  - HP-UX 9.x is no longer supported.

  - Support for Cygnus GNUPro 98r2 compilers

New In PureCoverage 5.0.1
=========================
  - Bug fixes and compatibility with OS patches.

  - 32-bit PureCoverage 5.0.1 can now
    be used with 32-bit Purify 5.0.1.

  - This is the last release to support 
    HP-UX 9.x. Apex Ada is no longer 
    supported.

New In PureCoverage 4.4
=======================

  - Bug Fixes

  - Support for Rational's ClearQuest defect
    tracking tool.  Please see the Restrictions
    and Known Issues section below for details
    on how to use Purify with ClearQuest or
    ClearDDTS.

  - Supports FLEXlm based licensing when
    installed as part of RSDSU.

New in PureCoverage 4.3
=======================

  - Support for Apex 3.0.0 Ada and C++ on 
    Solaris and HPUX.

  - Support for Rational's ClearQuest defect
    tracking tool.  Please see the Restrictions
    and Known Issues section below for details on
    how to use PureCoverage with ClearQuest or
    ClearDDTS.

New in PureCoverage 4.2
=======================

  - bug fixes

==================================================


Supported systems
=================

  Operating system and Hardware
  -----------------------------

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

  Compilers
  ---------

    PureCoverage has been tested with the 
    following compilers:
    - Bundled cc.
    - ANSI cc.
    - C++.
    - aCC.
    - GNU gcc and g++ versions, through version 2.8.1.
    - Cygnus GNUpro v.98r2
    - f77.

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

  Threads
  -------

    PureCoverage supports these threads packages:
    - DCE threads (either libdce or libcma).
    - HP-UX kernal threads.

==================================================


Restrictions and Known Issues
=============================

  General
  -------

  - Instrumented programs now always use
    immediate binding for the initial load of
    shared libraries and for any dynamic loads
    using shl_load(). 

    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. 
 
  - PureCoverage will not run on short
    (14-character) file systems.

  - Operating system revisions below 10.01 are no
    longer supported. 

  - The PA-RISC 1.0 CPU is no longer supported.

  - Profile Based Optimization is not supported.

  - Applications which link to over 50 large
    dynamic libraries may experience reduced
    startup times by setting the runtime option
    -lazy-dld-maps=1.

  - Earlier releases of PureCoverage intercepted
    calls to shl_unload() and prevented
    dynamically loaded libraries from being
    unmapped.  This had the effect of preventing
    static destructors from running but allowing
    coverage data for such libraries to be saved
    at program exit.  By default, PureCoverage 4.0
    now allows libraries to be unmapped, at the
    expense of not saving coverage data for such
    libraries.  The new -dlclose-mode integer
    option controls this behavior :

    -dlclose-mode=0 (default for earlier releases)
	libraries may not be unmapped.

    -dlclose-mode=1 (default for PureCoverage 4.0)
	libraries may be unmapped.

    -dlclose-mode=2
	libraries may be unmapped, coverage data
	is saved just prior to unmapping.

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

  - The PureCoverage GUI menus and buttons become 
    inaccessible if either the NumLock or 
    ScrollLock key is activated. The workaround
    is to switch them off, or add the following
    line(s) to your $HOME/.Xdefaults file.
 
    ! Ignore the NumLock and ScrollLock keys on 
    ! mouse buttons
    PureCoverage*ignoreModifierMask: Mod3|Mod2
 
    This second workaround will take effect for 
    a new PureCoverage viewer after you restart 
    your X-session or run a command like 
    'xrdb -merge $HOME/.Xdefaults'.

  - The "Invoke ClearDDTS" Button has been
    modified to bring up the ClearQuest web
    interface.  This feature only works with
    Netscape Navigator.

    The site-wide URL for ClearQuest can be
    given during installation or set by
    manually editting the file

	pure_clearquest_url

    in your PureCoverage home directory. A user 
    can override the site-wide URL by setting 
    the environment variable

	PURE_CLEARQUEST_URL

    This feature is partly implemented by a shell
    script, ("pure_invoke_clearquest" in your
    PureCoverage home directory) to allow you to 
    tailor its operation to your needs.  If you 
    wish, you may copy and customize this.
    script. As long as the directory containing 
    the script appears in your search path 
    before your PureCoverage home directory, it will 
    be used instead of the original script.

    If you prefer to use PureCoverage with 
    ClearDDTS, you can do so by setting the 
    X resource:

	PureCoverage*ddtsCommandString

    to 'xddts', if xddts is in your search path,
    or to the full path to your xddts executable.
    xddts is invoked by a shell script
    ("pure_invoke_ddts" in your PureCoverage home
    directory).  If you wish to customize it,
    please read the section on customizing
    "pure_invoke_clearquest" above.

    If you already have a customized
    "pure_invoke_ddts" script in your search path,
    All you need to do is set your X resource as
    described above, and PureCoverage will find 
    your customized script automatically.

    The following copyright applies to portions
    of this ClearQuest integration code:

    Copyright 1996 Netscape Communications 
    Corporation, all rights reserved. Created: 
    Jamie Zawinski , 24-Dec-94.
    Permission to use, copy, modify, distribute, 
    and sell this software and its documentation 
    for any purpose is hereby granted without 
    fee, provided that the above copyright 
    notice appear in all copies and that both 
    that copyright notice and this permission 
    notice appear in supporting documentation.  
    No representations are made about the 
    suitability of this software for any 
    purpose. It is provided "as is" without 
    express or implied warranty.


  Compilers
  ---------


  - The GNU gcc extensions are not tested against
    PureCoverage.  Most gcc extensions will
    probably work fine.  Known limitations at
    present include problems with nested functions
    (e.g.: making a pointer to a nested function
    and attempting to call through it will not
    work).

  - PureCoverage supports the aCC compiler from HP
    but there is a required patch: for HP-UX
    10.01 through 10.10, use PHSS_14507. For
    HP-UX 10.20, use PHSS_17689. For HP-UX 
    10.20 you also need PHSS_17225.


  - C revisions 9.61 through 9.65

     - These compilers generate incorrect
       debugging information for some functions.
       Programs compiled using these compilers may
       not be debuggable after translation.
       In this case PureCoverage may produce a 
       message beginning "Failure relocating..."
       Additionally PureCoverage may not be able
       to attach coverage information to specific
       line numbers in such cases.
       HP patch PHSS_4923 corrects this problem.

  - Exception handling

    g++ 2.7.2 exceptions are not supported.


  Debuggers
  ---------

  -  XDB & Softdebug

     - Use /purecov_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 /purecov_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 PureCoverage 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 PureCoverage 
       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.

  - DDE - Distributed Debugging Environment

    - The DDE debugger at release 2.10 has been
      used with instrumented programs.  The shell
      script: /purecov_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
 

  Old Style Fixups
  ----------------

  PureCoverage 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 PureCoverage 
  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
  -------

  - Customers using unsupported threads packages
    should contact Rational Software technical 
    support (support@rational.com) to ensure 
    compatibility.