PM47987: Purify should have an option to search -L path and ignore LD_LIBRARY_PATH

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • Environment:
    Red Hat Linux
    Purify 7.0.1 002
    gcc/g++
    
    Purify uses the LD_LIBRARY_PATH environment variable to locate
    libraries, by searching it first, apparently ignoring
    directories specified with the -L linker option. In most
    scenarios, this works fine, but in some others, it does not.
    
    Here is a scenario where it does not work:
    
    During the purify linking step, the behavior of finding a shared
    lib is expected to be the following:
      1- if the library is found from the -L path: use it....
      2- otherwise, if it can be found from the LD_LIBRARY_PATH: use
    it...
      3- otherwise, if it can be found in the ld.so.conf cache: then
    use it (on Linux)
      4- otherwise: fail
    
    However, there is a scenario where this does not work and upon
    further inspection, it appears this is what is happening:
    
      1- if the library is found from the -L path: read it but do
    not use it...
          1.1- if it can be found from the LD_LIBRARY_PATH:  then
    use it...
                  even if another lib was first found in the -L
    search path
          1.2- otherwise, if it can be found in the ld.so.conf
    cache: then
                  use it.. even if another lib was first found in
    the -L search path
          1.3 - otherwise fall back to using the one found in the -L
    path
       2- otherwise, if it can be found from the LD_LIBRARY_PATH:
    use it...
       3- otherwise, if it can be found in the ld.so.conf cache:
    then use it
       4- otherwise: fail
    
    Providing a new environment variable or a new option like
    '-link-using-link-searchpath' would be acceptable as it will
    ignore run-time search paths during link time. This would mean
    that Purify will ignore things like LD_LIBRARY_PATH as well as
    the LD cache.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    Purify uses the LD_LIBRARY_PATH environment variable to
    located libraries during link time, so it picks up the
    library that will be used at runtime.  Customer wants the
    ability to have Purify pick up the library from the -L path
    instead.
    

Problem conclusion

  • New option -use-link-time-search-path was added to cause
    Purify on Linux to instrument and link with the library that
    would be used at link time.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PM47987

  • Reported component name

    PURIFY UNIX

  • Reported component ID

    5724G2102

  • Reported release

    701

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2011-09-15

  • Closed date

    2012-01-17

  • Last modified date

    2012-01-17

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    PURIFY UNIX

  • Fixed component ID

    5724G2102

Applicable component levels

  • R701 PSN

       UP



Rate this page:

(0 users)Average rating

Add comments

Document information


More support for:

Rational Purify

Software version:

7.0.1

Reference #:

PM47987

Modified date:

2012-01-17

Translate my page

Machine Translation

Content navigation