pvs(1)
NAME
pvs - display the internal version information of dynamic
objects
SYNOPSIS
pvs [-Cdlnorsv] [-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 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
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 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.
OPTIONS
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
option).
-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.
OPERANDS
The following operands are supported.
file The ELF file about which internal version information
is displayed.
EXAMPLES
Example 1: Displaying version definitions
The following example displays the version definitions of
libelf.so.1:
% pvs -d /usr/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 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
/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);
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 ver-
sion definitions or version requirements are found.
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWtoo |
|_____________________________|_____________________________|
SEE ALSO
ld(1), ldd(1), strip(1), elf(3ELF), attributes(5)
Linker and Libraries Guide
Man(1) output converted with
man2html