=pod

=head1 NAME

llvm-nm - list LLVM bitcode 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 bitcode files,
or B<ar> archives containing LLVM bitcode files, named on the command line.
Each symbol is listed along with some simple information about its provenance.
If no file name is specified, or I<-> is used as a file name, B<llvm-nm> will
process a bitcode 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 bitcode file

=item C

Common (multiple definitions link together into one def)

=item W

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

=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 bitcode 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 bitcode 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 bitcode 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 bitcode files.

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

Print only symbols referenced but not defined in this bitcode 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
