Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
pvs(1)				 User Commands				pvs(1)

       pvs - display the internal version information of dynamic objects

       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 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 Linker and Libraries  Guide  for
       more details.

       Version	dependencies  describe the binding requirements	of dynamic ob-
       jects 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.

       -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 generate 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	symbol	entry  conven-
		tion cannot be determined.

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

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

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

       The following operands are supported.

       file	The  ELF file about which internal version information is dis-

       Example 1: Displaying version definitions

       The following example displays the version definitions of

       % pvs -d	/lib/;

       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/
       /lib/	-  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:	(SUNW_1.1); (SUNW_1.1);
       /usr/bin/pvs:	(SUNW_1.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  version  defini-
	    tions or version requirements are found.

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

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

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

       Linker and Libraries Guide

SunOS 5.10			  14 Apr 2004				pvs(1)


Want to link to this manual page? Use this URL:

home | help