llvm-6502/docs/CommandGuide/llvm-nm.rst

155 lines
2.5 KiB
ReStructuredText
Raw Normal View History

llvm-nm - list LLVM bitcode file's symbol table
===============================================
SYNOPSIS
--------
**llvm-nm** [*options*] [*filenames...*]
DESCRIPTION
-----------
The **llvm-nm** utility lists the names of symbols from the LLVM bitcode files,
or **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 *-* is used as a file name, **llvm-nm** will
process a bitcode file on its standard input stream.
**llvm-nm**'s default output format is the traditional BSD **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:
U
Named object is referenced but undefined in this bitcode file
C
Common (multiple definitions link together into one def)
W
Weak reference (multiple definitions link together into zero or one definitions)
t
Local function (text) object
T
Global function (text) object
d
Local data object
D
Global data object
?
Something unrecognizable
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", **llvm-nm** does not print an address for any symbol,
even symbols which are defined in the bitcode file.
OPTIONS
-------
**-P**
Use POSIX.2 output format. Alias for **--format=posix**.
**-B** (default)
Use BSD output format. Alias for **--format=bsd**.
**-help**
Print a summary of command-line options and their meanings.
**--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.)
**--extern-only**, **-g**
Print only symbols whose definitions are external; that is, accessible
from other bitcode files.
**--undefined-only**, **-u**
Print only symbols referenced but not defined in this bitcode file.
Select an output format; *fmt* may be *sysv*, *posix*, or *bsd*. The
default is *bsd*.
BUGS
----
**llvm-nm** cannot demangle C++ mangled names, like GNU **nm** can.
EXIT STATUS
-----------
**llvm-nm** exits with an exit code of zero.
SEE ALSO
--------
llvm-dis|llvm-dis, ar(1), nm(1)