=pod

=head1 NAME

llvm-nm - list LLVM bytecode file's symbol table

=head1 SYNOPSIS

B<llvm-nm> [I<options>] [I<filenames...>]

=head1 DESCRIPTION

The B<llvm-nm> utility lists the names of symbols from the LLVM bytecode files,
or B<ar> archives containing LLVM bytecode files, named on the command line.
Each symbol is listed along with some simple information about its provenance.
If no filename is specified, or I<-> is used as a filename, B<llvm-nm> will
process a bytecode file on its standard input stream.

B<llvm-nm>'s default output format is the traditional BSD B<nm> output format.
Each such output record consists of an (optional) 8-digit hexadecimal address,
followed by a type code character, followed by a name, for each symbol. One
record is printed per line; fields are separated by spaces. When the address is
omitted, it is replaced by 8 spaces.

Type code characters currently supported, and their meanings, are as follows:

=over

=item U

Named object is referenced but undefined in this bytecode file

=item C

Common (multiple defs link together into one def)

=item W

Weak reference (multiple defs link together into zero or one defs)

=item t

Local function (text) object

=item T

Global function (text) object

=item d

Local data object

=item D

Global data object

=item ?

Something unrecognizable

=back

Because LLVM bytecode files typically contain objects that are not considered to
have addresses until they are linked into an executable image or dynamically
compiled "just-in-time", B<llvm-nm> does not print an address for any symbol,
even symbols which are defined in the bytecode file.

=head1 OPTIONS

=over

=item B<-P>

Use POSIX.2 output format. Alias for B<--format=posix>.

=item B<-B>    (default)

Use BSD output format. Alias for B<--format=bsd>.

=item B<--help>

Print a summary of command-line options and their meanings.

=item B<--defined-only>

Print only symbols defined in this bytecode file (as opposed to
symbols which may be referenced by objects in this file, but not
defined in this file.)

=item B<--extern-only>, B<-g>

Print only symbols whose definitions are external; that is, accessible
from other bytecode files.

=item B<--undefined-only>, B<-u>

Print only symbols referenced but not defined in this bytecode file.

=item B<--format=>I<fmt>, B<-f>

Select an output format; I<fmt> may be I<sysv>, I<posix>, or I<bsd>. The
default is I<bsd>.

=back

=head1 BUGS

B<llvm-nm> cannot demangle C++ mangled names, like GNU B<nm> can.

=head1 EXIT STATUS

B<llvm-nm> exits with an exit code of zero.

=head1 SEE ALSO

L<llvm-dis|llvm-dis>, ar(1), nm(1)

=head1 AUTHOR

Maintained by the LLVM Team (L<http://llvm.org>).

=cut
