pvs(1)

Name

pvs– display the internal version information of dynamic objects

Synopsis

pvs [-Cdlnorsv] [-Nname] 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 information can fall into one of two categories:

version definitions

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

-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 convention
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. Under normalization, only the head of each inheritance list is displayed.

-Nname

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.

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 /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 /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: