Unix/Linux Go Back    

OpenSolaris 2009.06 - man page for pvs (opensolaris section 1)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)

pvs(1)					  User Commands 				   pvs(1)

       pvs - display the internal version information of dynamic objects

       pvs [-Cdlnorsv] [-I index-expr] [-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 relocatable
       objects. This version information 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 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  are  also	recorded  in  the
       dynamic	object being created. At process initialization, the runtime linker uses any ver-
       sion 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
       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 dis-
			 played using:

			   example% pvs -I 3 filename

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

			   example% pvs -I 3:5 filename

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

			   example% 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 defi-
			 nitions  within  the  object are displayed. However, version definitions
			 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  defini-

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

			   example% 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, version
			 definitions, and any symbol output is indented to ease human inspection.
			 This  option prefixes each output line with the file and version defini-
			 tion 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 inher-
			 itance 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.

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

       Example 1 Displaying version definitions

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

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

       Example 2 Creating a one-liner display

       A  normalized,  one-liner  display, suitable for creating a mapfile version control direc-
       tive, 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
	      libelf.so.1 (SUNW_1.1);
	      libc.so.1 (SUNW_1.1);
	      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):

       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. Therefore, 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];

       If the requested version information is not found, a non-zero value  is	returned.  Other-
       wise, 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.

       See attributes(5) for descriptions of the following attributes:

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

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

       Linker and Libraries Guide

SunOS 5.11				   25 Sep 2008					   pvs(1)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums

All times are GMT -4. The time now is 12:48 PM.