pvs - display the internal version  information  of  dynamic


     pvs [-Cdlnorsv] [-N name] file...


     The pvs utility displays any  internal  version  information
     contained  within  an  ELF  file.  Commonly, these files are
     dynamic executables and shared objects, and  possibly  relo-
     catable  objects. This version information can fall into one
     of two categories:

        o  version definitions

        o  version dependencies

     Version definitions describe the interfaces  made  available
     by  an  ELF file. Each version definition is associated to a
     set of global symbols provided by the file.  Version defini-
     tions  may  be assigned to a file during its creation by the
     link-editor using the -M option and the  associated  mapfile
     directives  (see  the  Linker  and  Libraries Guide for more

     Version dependencies describe the  binding  requirements  of
     dynamic  objects  on  the  version definitions of any shared
     object dependencies. When a dynamic object is built  with  a
     shared  object,  the  link-editor records information within
     the dynamic object indicating that the shared  object  is  a
     dependency.  This  dependency  must be satisfied at runtime.
     If the shared object also contains version definitions, then
     those  version  definitions  that  satisfy the global symbol
     requirements of the dynamic object will also be recorded  in
     the dynamic object being created. At process initialization,
     the runtime linker will use any version  dependencies  as  a
     means  of  validating  the  interface  requirements  of  the
     dynamic objects used to construct the process.


     The following options are supported. If neither the -d or -r
     options are specified, both will be enabled.

     -C    Demangles C++ symbol names.

     -d    Prints version definition information.

     -l    When used with the -s option, prints any symbols  that
           have  been reduced from global to local binding due to
           versioning. By convention, these  symbol  entries  are
           located   in the .symtab section, and fall between the
           FILE symbol representing the output file, and the FILE
           symbol  representing the first input file used to gen-
           erate the output file.  These reduced  symbol  entries
           are   assigned   the   fabricated  version  definition
           _REDUCED_.  No reduced symbols will be printed if  the
           file  has been stripped (see strip(1)), or if the sym-
           bol entry convention cannot be determined.

     -n    Normalizes version definition information. By default,
           all   version   definitions   within  the  object  are
           displayed. However, version  definitions  may  inherit
           other  version  definitions,  and  under normalization
           only the head of each inheritance list is displayed.

     -N name
           Prints only the  information  for  the  given  version
           definition  name  and  any  of  its  inherited version
           definitions (when used with the -d option), or for the
           given  dependency  file  name  (when  used with the -r

     -o    Creates  one-line  version   definition   output.   By
           default,  file,  version  definitions,  and any symbol
           output is indented  to  ease  human  inspection.  This
           option  prefixes  each  output  line with the file and
           version definition name and may  be  more  useful  for
           analysis with automated  tools.

     -r    Prints version dependency (requirements) information.

     -s    Prints the symbols associated with each version defin-
           ition. Any data symbols are accompanied with the size,
           in bytes, of the data item.

     -v    Verbose output. Indicates  any  weak  version  defini-
           tions,  and  any  version definition inheritance. When
           used with the -N and -d options,  the  inheritance  of
           the  base  version definition is also shown. When used
           with the -s option, the version symbol  definition  is
           also shown.


     The following operands are supported.

     file  The  ELF file about which internal version information
           is displayed.


     Example 1: Displaying version definitions

     The following example displays the  version  definitions  of
     % pvs -d /usr/lib/libelf.so.1

     Example 2: Creating a one-liner display

     A normalized, one-liner display,  suitable  for  creating  a
     mapfile  version control directive, can be created using the
     -n and -o options:

     % pvs -don /usr/lib/libelf.so.1
     /usr/lib/libelf.so.1 -   SUNW_1.1;

     Example 3: Displaying version requirements

     The following example displays the version  requirements  of
     ldd and pvs:

     % pvs -r /usr/bin/ldd /usr/bin/pvs
          libelf.so.1 (SUNW_1.1);
          libc.so.1 (SUNW_1.1);
          libelf.so.1 (SUNW_1.1);
          libc.so.1 (SUNW_1.1);


     If the requested version information is not  found,  a  non-
     zero value is returned; otherwise a 0 value is returned.

     Version information is determined not found when any of  the
     following is true:

        o  the -d option is specified and no version  definitions
           are found;

        o  the -r option is specified and no version requirements
           are found;

        o  neither the -d nor -r option is specified and no  ver-
           sion definitions or version requirements are found.


     See attributes(5) for descriptions of the  following  attri-

    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    | Availability                | SUNWtoo                     |


     ld(1), ldd(1), strip(1), elf(3ELF), attributes(5)

     Linker and Libraries Guide

Man(1) output converted with man2html