summaryrefslogtreecommitdiff
path: root/docs/CommandGuide/llvm-nm.pod
blob: a6dc4901dd61fa485cb55dbdaa8340ea8ba92646 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
=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