pvs(1) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

pvs(1)

pvs(1)                           User Commands                          pvs(1)



NAME
       pvs - display the internal version information of dynamic objects

SYNOPSIS
       pvs [-CdlnorsvV] [-I index-expr] [-N name] file...

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

           o      version definitions


           o      version dependencies



       Version definitions describe the interfaces that are made available  by
       an  ELF  file. Each version definition is associated to a set of global
       symbols provided by the file. Version definitions can be assigned to  a
       file during its creation by the link-editor using the -M option and the
       associated mapfile directives. See the Oracle Solaris 11.4 Linkers  and
       Libraries Guide for more details.


       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 are also recorded in  the  dynamic  object  being
       created. At process initialization, the runtime linker uses any version
       dependencies as a means of validating the interface requirements of the
       dynamic objects used to construct the process.

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

       -C

           Demangles C++ symbol names.


       -d

           Prints version definition information.


       -I index-expr

           Qualifies the versions to examine with a specific version index  or
           index range. For example, the version with index 3 in an object can
           be displayed using:


             % pvs -I 3 filename

           An index-expr can be a single non-negative integer value that spec‐
           ifies  a specific version, as shown in the previous example. Alter‐
           natively, an index-expr can consist of two such values separated by
           a  colon (:), indicating a range of versions. The following example
           displays the versions 3, 4, and 5 in a file:


             % pvs -I 3:5 filename

           When specifying an index range, the second value can be omitted  to
           indicate  the  final  item  in the file. For example, the following
           statement lists all versions from the tenth to the end:


             % pvs -I 10: filename

           See Matching Options for additional information about the  matching
           options (-I, -N).


       -l

           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 generate the output file. These reduced
           symbol entries  are  assigned  the  fabricated  version  definition
           _LOCAL_.  No  reduced  symbols will be printed if the file has been
           stripped (see strip(1)), or if the symbol entry  convention  cannot
           be determined.

           Use of the -l option implicitly enables the -s option


       -n

           Normalizes  version definition information. By default, all version
           definitions within the object are displayed. However, version defi‐
           nitions can inherit other version definitions. Under normalization,
           only the head of each inheritance list is displayed.


       -N name

           When used with the -d option, -N prints only  the  information  for
           the  given version definition name and any of its inherited version
           definitions.

           When used with the -r option, -N prints only  the  information  for
           the  given  dependency  file name. It is possible to qualify a spe‐
           cific version from the dependency file by including the version  in
           parenthesis following the file name:


             % pvs -N 'dependency (version)' filename

           See  Matching Options for additional information about the matching
           options (-I, -N).


       -o

           Creates one-line version definition output. By default, file,  ver‐
           sion  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 can be more useful for analysis with
           automated tools.


       -r

           Prints version dependency (requirements) information.


       -s

           Prints the symbols associated with  each  version  definition.  Any
           data  symbols  from  versions defined by the object are accompanied
           with the size, in bytes, of the data item.


       -v

           Verbose output. Indicates any weak  version  definitions,  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.


       -V
       --version

           Print version information and immediately exit.



       -?
       --help

           Print usage message and immediately exit.



OPERANDS
       The following operands are supported.

       file    The ELF file about which internal version information  is  dis‐
               played.


USAGE
   Matching Options
       The  -I  and  -N  options  are collectively referred to as the matching
       options. These options are used to narrow  the  range  of  versions  to
       examine, by index or by name.


       Any  number and type of matching option can be mixed in a given invoca‐
       tion of pvs. In this case, pvs displays the superset  of  all  versions
       matched  by  any  of the matching options used. This feature allows for
       the selection of complex groupings of items using the  most  convenient
       form for specifying each item.

EXAMPLES
       Example 1 Displaying version definitions



       The following example displays the version definitions of libelf.so.1:


         % pvs -d /lib/libelf.so.1
              libelf.so.1;
              SUNW_1.1


       Example 2 Creating a one-liner display



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


         % pvs -don /lib/libelf.so.1
         /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
         /usr/bin/ldd:
              libelf.so.1 (SUNW_1.1);
              libc.so.1 (SUNW_1.1);
         /usr/bin/pvs:
              libelf.so.1 (SUNW_1.1);
              libc.so.1 (SUNW_1.1);


       Example 4 Determining a dependency symbol version



       The following example displays the shared object  from  which  the  ldd
       command  expects  to  find the printf() function at runtime, as well as
       the version it belongs to:


         % pvs -ors /usr/bin/ldd | grep ' printf'
         /usr/bin/ldd -  libc.so.1 (SYSVABI_1.3): printf;




       Example 5 Determine all dependency symbols from a specific version



       The -N option can be used to obtain a list of all the  symbols  from  a
       dependency  that belong to a specific version. To determine the symbols
       that ldd will find from version SYSVABI_1.3 of libc.so.1:


         % pvs -s -N 'libc.so.1 (SYSVABI_1.3)' /usr/bin/ldd
                libc.so.1 (SYSVABI_1.3):
                        _exit;
                        strstr;
                        printf;
                        __fpstart;
                        strncmp;
                        lseek;
                        strcmp;
                        getopt;
                        execl;
                        close;
                        fflush;
                        wait;
                        strerror;
                        putenv;
                        sprintf;
                        getenv;
                        open;
                        perror;
                        fork;
                        strlen;
                        geteuid;
                        access;
                        setlocale;
                        atexit;
                        fprintf;
                        exit;
                        read;
                        malloc;





       Note that the specific list of symbols used by ldd may  change  between
       Solaris releases.

       Example 6 Display base defined version by index



       By  convention,  the  base  global version defined by an object has the
       name of the object. For example, the  base  version  of  pvs  is  named
       'pvs'. The base version of any object is always version index 1. There‐
       fore, the -I option can be used to display  the  base  version  of  any
       object without having to specify its name:


         % pvs -v -I 1 /usr/bin/pvs
                pvs [BASE];



EXIT STATUS
       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 version
                  definitions or version requirements are found.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE VALUE _ Availabilitydeveloper/base-developer-utilities


SEE ALSO
       elfdump(1), ld(1), ldd(1), strip(1), elf(3ELF), attributes(7)


       Oracle Solaris 11.4 Linkers and Libraries Guide



Oracle Solaris 11.4             30 August 2017                          pvs(1)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3