blob: cbc7af207592cfabbb40055b0fd632a4b3edb3ad [file] [log] [blame]
Michael J. Spencer4d616642012-06-06 23:34:10 +00001llvm-nm - list LLVM bitcode and object file's symbol table
2==========================================================
Daniel Dunbar3b709d52012-05-08 16:50:35 +00003
4
5SYNOPSIS
6--------
7
8
Michael J. Spencer4d616642012-06-06 23:34:10 +00009:program:`llvm-nm` [*options*] [*filenames...*]
Daniel Dunbar3b709d52012-05-08 16:50:35 +000010
11
12DESCRIPTION
13-----------
14
15
Michael J. Spencer4d616642012-06-06 23:34:10 +000016The :program:`llvm-nm` utility lists the names of symbols from the LLVM bitcode
17files, object files, or :program:`ar` archives containing them, named on the
18command line. Each symbol is listed along with some simple information about its
19provenance. If no file name is specified, or *-* is used as a file name,
20:program:`llvm-nm` will process a file on its standard input stream.
Daniel Dunbar3b709d52012-05-08 16:50:35 +000021
Michael J. Spencer4d616642012-06-06 23:34:10 +000022:program:`llvm-nm`'s default output format is the traditional BSD :program:`nm`
23output format. Each such output record consists of an (optional) 8-digit
24hexadecimal address, followed by a type code character, followed by a name, for
25each symbol. One record is printed per line; fields are separated by spaces.
26When the address is omitted, it is replaced by 8 spaces.
Daniel Dunbar3b709d52012-05-08 16:50:35 +000027
28Type code characters currently supported, and their meanings, are as follows:
29
30
31U
32
33 Named object is referenced but undefined in this bitcode file
34
35
36
37C
38
39 Common (multiple definitions link together into one def)
40
41
42
43W
44
45 Weak reference (multiple definitions link together into zero or one definitions)
46
47
48
49t
50
51 Local function (text) object
52
53
54
55T
56
57 Global function (text) object
58
59
60
61d
62
63 Local data object
64
65
66
67D
68
69 Global data object
70
71
72
73?
74
75 Something unrecognizable
76
77
78
79Because LLVM bitcode files typically contain objects that are not considered to
80have addresses until they are linked into an executable image or dynamically
Michael J. Spencer4d616642012-06-06 23:34:10 +000081compiled "just-in-time", :program:`llvm-nm` does not print an address for any
82symbol in a LLVM bitcode file, even symbols which are defined in the bitcode
83file.
Daniel Dunbar3b709d52012-05-08 16:50:35 +000084
85
86OPTIONS
87-------
88
89
Michael J. Spencer4d616642012-06-06 23:34:10 +000090.. program:: llvm-nm
Daniel Dunbar3b709d52012-05-08 16:50:35 +000091
92
Michael J. Spencer4d616642012-06-06 23:34:10 +000093.. option:: -B (default)
Daniel Dunbar3b709d52012-05-08 16:50:35 +000094
Michael J. Spencer4d616642012-06-06 23:34:10 +000095 Use BSD output format. Alias for :option:`--format=bsd`.
Daniel Dunbar3b709d52012-05-08 16:50:35 +000096
97
Michael J. Spencer4d616642012-06-06 23:34:10 +000098.. option:: -P
Daniel Dunbar3b709d52012-05-08 16:50:35 +000099
Michael J. Spencer4d616642012-06-06 23:34:10 +0000100 Use POSIX.2 output format. Alias for :option:`--format=posix`.
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000101
102
Michael J. Spencer4d616642012-06-06 23:34:10 +0000103.. option:: --debug-syms, -a
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000104
Michael J. Spencer4d616642012-06-06 23:34:10 +0000105 Show all symbols, even debugger only.
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000106
Michael J. Spencer4d616642012-06-06 23:34:10 +0000107
108.. option:: --defined-only
109
110 Print only symbols defined in this file (as opposed to
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000111 symbols which may be referenced by objects in this file, but not
112 defined in this file.)
113
114
Michael J. Spencer4d616642012-06-06 23:34:10 +0000115.. option:: --dynamic, -D
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000116
Michael J. Spencer4d616642012-06-06 23:34:10 +0000117 Display dynamic symbols instead of normal symbols.
118
119
120.. option:: --extern-only, -g
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000121
122 Print only symbols whose definitions are external; that is, accessible
Michael J. Spencer4d616642012-06-06 23:34:10 +0000123 from other files.
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000124
125
Michael J. Spencer4d616642012-06-06 23:34:10 +0000126.. option:: --format=format, -f format
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000127
Michael J. Spencer4d616642012-06-06 23:34:10 +0000128 Select an output format; *format* may be *sysv*, *posix*, or *bsd*. The default
129 is *bsd*.
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000130
131
Michael J. Spencer4d616642012-06-06 23:34:10 +0000132.. option:: -help
133
134 Print a summary of command-line options and their meanings.
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000135
136
Michael J. Spencer4d616642012-06-06 23:34:10 +0000137.. option:: --no-sort, -p
138
139 Shows symbols in order encountered.
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000140
141
Michael J. Spencer4d616642012-06-06 23:34:10 +0000142.. option:: --numeric-sort, -n, -v
143
144 Sort symbols by address.
145
146
147.. option:: --print-file-name, -A, -o
148
149 Precede each symbol with the file it came from.
150
151
152.. option:: --print-size, -S
153
154 Show symbol size instead of address.
155
156
157.. option:: --size-sort
158
159 Sort symbols by size.
160
161
162.. option:: --undefined-only, -u
163
164 Print only symbols referenced but not defined in this file.
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000165
166
167BUGS
168----
169
170
Michael J. Spencer4d616642012-06-06 23:34:10 +0000171 * :program:`llvm-nm` cannot demangle C++ mangled names, like GNU :program:`nm`
172 can.
173
174 * :program:`llvm-nm` does not support the full set of arguments that GNU
175 :program:`nm` does.
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000176
177
178EXIT STATUS
179-----------
180
181
Michael J. Spencer4d616642012-06-06 23:34:10 +0000182:program:`llvm-nm` exits with an exit code of zero.
Daniel Dunbar3b709d52012-05-08 16:50:35 +0000183
184
185SEE ALSO
186--------
187
188
189llvm-dis|llvm-dis, ar(1), nm(1)