add UNLEASHED_OBJ to unleashed.mk
[unleashed/tickless.git] / share / man / man1 / nm.1
blob603e440ec9074af38187c74e0d3ff507e2fbfe26
1 '\" te
2 .\" Copyright 1989 AT&T
3 .\" Copyright (c) 2007, Sun Microsystems, Inc.  All Rights Reserved
4 .\" Portions Copyright (c) 1992, X/Open Company Limited  All Rights Reserved
5 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
6 .\" http://www.opengroup.org/bookstore/.
7 .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation. In the following statement, the phrase "this text" refers to portions of the system documentation. Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html.
8 .\"  This notice shall appear on any product containing this material.
9 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
10 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
11 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
12 .TH NM 1 "Oct 25, 2017"
13 .SH NAME
14 nm \- print name list of an object file
15 .SH SYNOPSIS
16 .LP
17 .nf
18 \fB/usr/bin/nm\fR [\fB-ACDhlnPprRsTuVv\fR] [\fB-efox\fR] [\fB-g\fR | \fB-u\fR]
19      [\fB-t\fR \fIformat\fR] \fIfile\fR...
20 .fi
22 .SH DESCRIPTION
23 .sp
24 .LP
25 The \fBnm\fR utility displays the symbol table of each \fBELF\fR object file
26 that is specified by \fIfile\fR.
27 .sp
28 .LP
29 If no symbolic information is available for a valid input file, the \fBnm\fR
30 utility reports that fact, but not consider it an error condition.
31 .SH OPTIONS
32 .sp
33 .LP
34 The output of \fBnm\fR can be controlled using the following options:
35 .sp
36 .ne 2
37 .na
38 \fB\fB-A\fR\fR
39 .ad
40 .RS 13n
41 Writes the full path name or library name of an object on each line.
42 .RE
44 .sp
45 .ne 2
46 .na
47 \fB\fB-C\fR\fR
48 .ad
49 .RS 13n
50 Demangles C++ symbol names before printing them out.
51 .RE
53 .sp
54 .ne 2
55 .na
56 \fB\fB-D\fR\fR
57 .ad
58 .RS 13n
59 Displays the \fBSHT_DYNSYM\fR symbol information. This is the symbol table used
60 by \fBld.so.1\fR and is present even in stripped dynamic executables. If
61 \fB-D\fR is not specified, the default behavior is to display the
62 \fBSHT_SYMTAB\fR symbol information.
63 .RE
65 .sp
66 .ne 2
67 .na
68 \fB\fB-e\fR\fR
69 .ad
70 .RS 13n
71 See NOTES below.
72 .RE
74 .sp
75 .ne 2
76 .na
77 \fB\fB-f\fR\fR
78 .ad
79 .RS 13n
80 See NOTES below.
81 .RE
83 .sp
84 .ne 2
85 .na
86 \fB\fB-g\fR\fR
87 .ad
88 .RS 13n
89 Writes only external (global) symbol information.
90 .RE
92 .sp
93 .ne 2
94 .na
95 \fB\fB-h\fR\fR
96 .ad
97 .RS 13n
98 Does not display the output heading data.
99 .RE
102 .ne 2
104 \fB\fB-L\fR\fR
106 .RS 13n
107 Displays the \fBSHT_SUNW_LDYNSYM\fR symbol information. This symbol table
108 contains local function symbols. \fBSHT_SUNW_LDYNSM\fR symbol tables are
109 present even in stripped dynamic executables. These symbols augment the global
110 symbols that are found in \fBSHT_DYNSYM\fR symbol table. If \fB-L\fR is not
111 specified, the default behavior is to display the \fBSHT_SYMTAB\fR symbol
112 information.
116 .ne 2
118 \fB\fB-l\fR\fR
120 .RS 13n
121 Distinguishes between \fBWEAK\fR and \fBGLOBAL\fR symbols by appending a * to
122 the key letter for \fBWEAK\fR symbols.
126 .ne 2
128 \fB\fB-n\fR\fR
130 .RS 13n
131 Sorts external symbols by name before they are printed.
135 .ne 2
137 \fB\fB-o\fR\fR
139 .RS 13n
140 Prints the value and size of a symbol in octal instead of decimal (equivalent
141 to \fB-t\fR \fBo\fR).
145 .ne 2
147 \fB\fB-p\fR\fR
149 .RS 13n
150 Produces easy to parse, terse output. Each symbol name is preceded by its value
151 (blanks if undefined) and one of the letters:
153 .ne 2
155 \fB\fBA\fR\fR
157 .RS 5n
158 Absolute symbol.
162 .ne 2
164 \fB\fBB\fR\fR
166 .RS 5n
167 bss (uninitialized data space) symbol.
171 .ne 2
173 \fB\fBC\fR\fR
175 .RS 5n
176 COMMON symbol.
180 .ne 2
182 \fB\fBD\fR\fR
184 .RS 5n
185 Data object symbol.
189 .ne 2
191 \fB\fBF\fR\fR
193 .RS 5n
194 File symbol.
198 .ne 2
200 \fB\fBN\fR\fR
202 .RS 5n
203 Symbol has no type.
207 .ne 2
209 \fB\fBL\fR\fR
211 .RS 5n
212 Thread-Local storage symbol.
216 .ne 2
218 \fB\fBS\fR\fR
220 .RS 5n
221 Section symbol.
225 .ne 2
227 \fB\fBT\fR\fR
229 .RS 5n
230 Text symbol.
234 .ne 2
236 \fB\fBU\fR\fR
238 .RS 5n
239 Undefined.
242 If the symbol's binding attribute is:
244 .ne 2
246 \fB\fBLOCAL\fR\fR
248 .RS 10n
249 The key letter is lower case.
253 .ne 2
255 \fB\fBWEAK\fR\fR
257 .RS 10n
258 The key letter is upper case. If the \fB-l\fR modifier is specified, the upper
259 case key letter is followed by a \fB*\fR
263 .ne 2
265 \fB\fBGLOBAL\fR\fR
267 .RS 10n
268 The key letter is upper case.
274 .ne 2
276 \fB\fB-P\fR\fR
278 .RS 13n
279 Writes information in a portable output format, as specified in \fBStandard
280 Output\fR.
284 .ne 2
286 \fB\fB-r\fR\fR
288 .RS 13n
289 Prepends the name of the object file or archive to each output line.
293 .ne 2
295 \fB\fB-R\fR\fR
297 .RS 13n
298 Prints the archive name (if present), followed by the object file and symbol
299 name. If the \fB-r\fR option is also specified, this option is ignored.
303 .ne 2
305 \fB\fB-s\fR\fR
307 .RS 13n
308 Prints section name instead of section index.
312 .ne 2
314 \fB\fB-t\fR \fIformat\fR\fR
316 .RS 13n
317 Writes each numeric value in the specified format. The format is dependent on
318 the single character used as the \fIformat\fR option-argument:
320 .ne 2
322 \fB\fBd\fR\fR
324 .RS 5n
325 The offset is written in decimal.
329 .ne 2
331 \fB\fBo\fR\fR
333 .RS 5n
334 The offset is written in octal.
338 .ne 2
340 \fB\fBx\fR\fR
342 .RS 5n
343 The offset is written in hexadecimal (default).
349 .ne 2
351 \fB\fB-T\fR\fR
353 .RS 13n
354 See \fBNOTES\fR.
358 .ne 2
360 \fB\fB-u\fR\fR
362 .RS 6n
363 Prints long listing for each undefined symbol. See \fBOUTPUT\fR below.
367 .ne 2
369 \fB\fB-v\fR\fR
371 .RS 6n
372 Sorts external symbols by value before they are printed.
376 .ne 2
378 \fB\fB-V\fR\fR
380 .RS 6n
381 Prints the version of the \fBnm\fR command executing on the standard error
382 output.
386 .ne 2
388 \fB\fB-x\fR\fR
390 .RS 6n
391 Prints the value and size of a symbol in hexadecimal (the default,
392 equivalent to \fB-t\fR \fBx\fR).
397 Options can be used in any order, either singly or in combination, and can
398 appear anywhere in the command line. When conflicting options are specified
399 (such as \fB-v\fR and \fB-n\fR, or \fB-o\fR and \fB-x\fR) the first is taken
400 and the second ignored with a warning message to the user. (See \fB-R\fR for
401 exception.)
402 .SH OPERANDS
405 The following operand is supported:
407 .ne 2
409 \fB\fIfile\fR\fR
411 .RS 8n
412 A path name of an object file, executable file or object-file library.
415 .SH OUTPUT
418 This section describes the \fBnm\fR utility's output options.
419 .SS "Standard Output"
422 For each symbol, the following information is printed:
424 .ne 2
426 \fB\fBIndex\fR\fR
428 .RS 15n
429 The index of the symbol. (The index appears in brackets.)
433 .ne 2
435 \fB\fBValue\fR\fR
437 .RS 15n
438 The value of the symbol is one of the following:
439 .RS +4
441 .ie t \(bu
442 .el o
443 A section offset for defined symbols in a relocatable file.
445 .RS +4
447 .ie t \(bu
448 .el o
449 Alignment constraints for symbols whose section index is \fBSHN_COMMON\fR.
451 .RS +4
453 .ie t \(bu
454 .el o
455 A virtual address in executable and dynamic library files.
460 .ne 2
462 \fB\fBSize\fR\fR
464 .RS 15n
465 The size in bytes of the associated object.
469 .ne 2
471 \fB\fBType\fR\fR
473 .RS 15n
474 A symbol is of one of the following types:
476 .ne 2
478 \fB\fBNOTYPE\fR\fR
480 .RS 11n
481 No type was specified.
485 .ne 2
487 \fB\fBOBJECT\fR\fR
489 .RS 11n
490 A data object such as an array or variable.
494 .ne 2
496 \fB\fBFUNC\fR\fR
498 .RS 11n
499 A function or other executable code.
503 .ne 2
505 \fB\fBREGI\fR\fR
507 .RS 11n
508 A register symbol (\fBSPARC\fR only).
512 .ne 2
514 \fB\fBSECTION\fR\fR
516 .RS 11n
517 A section symbol.
521 .ne 2
523 \fB\fBFILE\fR\fR
525 .RS 11n
526 Name of the source file.
530 .ne 2
532 \fB\fBCOMMON\fR\fR
534 .RS 11n
535 An uninitialized common block.
539 .ne 2
541 \fB\fBTLS\fR\fR
543 .RS 11n
544 A variable associated with Thread-Local storage.
550 .ne 2
552 \fB\fBBind\fR\fR
554 .RS 15n
555 The symbol's binding attributes.
557 .ne 2
559 \fB\fBLOCAL symbols\fR\fR
561 .RS 18n
562 Have a scope limited to the object file containing their definition.
566 .ne 2
568 \fB\fBGLOBAL symbols\fR\fR
570 .RS 18n
571 Are visible to all object files being combined.
575 .ne 2
577 \fB\fBWEAK symbols\fR\fR
579 .RS 18n
580 Are essentially global symbols with a lower precedence than \fBGLOBAL\fR.
586 .ne 2
588 \fB\fBOther\fR\fR
590 .RS 15n
591 A symbol's visibility.
593 The lower bits of the \fBst_other\fR member of the \fBElf32_Sym\fR structure,
594 and the \fBElf64_Sym\fR structure, defined in \fB<sys/elf.h>\fR, are currently
595 used and can be one of:
597 .in +2
599 #define STV_DEFAULT     0
600 #define STV_INTERNAL    1
601 #define STV_HIDDEN      2
602 #define STV_PROTECTED   3
603 #define STV_EXPORTED    4
604 #define STV_SINGLETON   5
605 #define STV_ELIMINATE   6
607 .in -2
613 .ne 2
615 \fB\fBShndx\fR\fR
617 .RS 15n
618 Except for three special values, this is the section header table index in
619 relation to which the symbol is defined. The following special values exist:
621 .ne 2
623 \fB\fBABS\fR\fR
625 .RS 10n
626 Indicates the symbol's value does not change through relocation.
630 .ne 2
632 \fB\fBCOMMON\fR\fR
634 .RS 10n
635 Indicates an unallocated block and the value provides alignment constraints.
639 .ne 2
641 \fB\fBUNDEF\fR\fR
643 .RS 10n
644 Indicates an undefined symbol.
650 .ne 2
652 \fB\fBName\fR\fR
654 .RS 15n
655 The name of the symbol.
659 .ne 2
661 \fB\fBObject Name\fR\fR
663 .RS 15n
664 The name of the object or library if \fB-A\fR is specified.
669 If the \fB-P\fR option is specified, the previous information is displayed
670 using the following portable format. The three versions differ depending on
671 whether \fB-t\fR \fBd\fR, \fB-t\fR \fBo\fR, or \fB-t\fR \fBx\fR was specified,
672 respectively:
674 .in +2
676 \fB"%s%s %s %d %d\n",\fR \fIlibrary/object name\fR, \fIname\fR\fB, type,\fR \fIvalue\fR, \e
677      \fBsize "%s%s %s %o %o\en",\fR \fIlibrary/object name\fR, \fIname\fR, \e
678      \fBtype,\fR \fIvalue\fR \fB, size "%s%s %s %x %x\en",\fR \fIlibrary/object name\fR, \fIname\fR, \e
679      \fBtype,\fR \fIvalue\fR\fB, size\fR
681 .in -2
686 where \fIlibrary/object name\fR is formatted as follows:
687 .RS +4
689 .ie t \(bu
690 .el o
691 If \fB-A\fR is not specified, \fIlibrary/object name\fR is an empty string.
693 .RS +4
695 .ie t \(bu
696 .el o
697 If \fB-A\fR is specified and the corresponding \fIfile\fR operand does not name
698 a library:
700 .in +2
702 \fB"%s: ", \fIfile\fR\fR
704 .in -2
708 .RS +4
710 .ie t \(bu
711 .el o
712 If \fB-A\fR is specified and the corresponding \fIfile\fR operand names a
713 library. In this case, \fIobject file\fR names the object file in the library
714 containing the symbol being described:
716 .in +2
718 \fB"%s[%s]: ", \fIfile\fR, \fIobject file\fR\fR
720 .in -2
726 If \fB-A\fR is not specified, then if more than one \fIfile\fR operand is
727 specified or if only one \fIfile\fR operand is specified and it names a
728 library, \fBnm\fR writes a line identifying the object containing the following
729 symbols before the lines containing those symbols, in the form:
730 .RS +4
732 .ie t \(bu
733 .el o
734 If the corresponding \fIfile\fR operand does not name a library:
736 .in +2
738 \fB"%s:\en", \fIfile\fR\fR
740 .in -2
744 .RS +4
746 .ie t \(bu
747 .el o
748 If the corresponding \fIfile\fR operand names a library; in this case,
749 \fIobject file\fR is the name of the file in the library containing the
750 following symbols:
752 .in +2
754 \fB"%s[%s]:\en", \fIfile\fR, \fIobject file\fR\fR
756 .in -2
762 If \fB-P\fR is specified, but \fB-t\fR is not, the format is as if \fB-t\fR
763 \fBx\fR had been specified.
764 .SH ENVIRONMENT VARIABLES
767 See \fBenviron\fR(5) for descriptions of the following environment variables
768 that affect the execution of \fBnm\fR: \fBLANG\fR, \fBLC_ALL\fR,
769 \fBLC_COLLATE\fR, \fBLC_CTYPE\fR, \fBLC_MESSAGES\fR, and \fBNLSPATH\fR.
770 .SH EXIT STATUS
773 The following exit values are returned:
775 .ne 2
777 \fB\fB0\fR\fR
779 .RS 6n
780 Successful completion.
784 .ne 2
786 \fB\fB>0\fR\fR
788 .RS 6n
789 An error occurred.
792 .SH ATTRIBUTES
795 See \fBattributes\fR(5) for descriptions of the following attributes:
796 .SH /usr/bin/nm
801 box;
802 c | c
803 l | l .
804 ATTRIBUTE TYPE  ATTRIBUTE VALUE
806 Interface Stability     Committed
809 .SH SEE ALSO
812 \fBar\fR(1), \fBas\fR(1), \fBdump\fR(1), \fBld\fR(1), \fBld.so.1\fR(1),
813 \fBar.h\fR(3HEAD), \fBa.out\fR(4), \fBattributes\fR(5), \fBenviron\fR(5),
814 \fBstandards\fR(5)
815 .SH NOTES
818 The following options are obsolete because of changes to the object file format
819 and might be deleted in a future release.
821 .ne 2
823 \fB\fB-e\fR\fR
825 .RS 6n
826 Prints only external and static symbols. The symbol table now contains only
827 static and external symbols. Automatic symbols no longer appear in the symbol
828 table. They do appear in the debugging information produced by \fBcc\fR
829 \fB-g\fR, which can be examined using \fBdump\fR(1).
833 .ne 2
835 \fB\fB-f\fR\fR
837 .RS 6n
838 Produces full output. Redundant symbols (such as \fB\&.text\fR, \fB\&.data\fR,
839 and so forth), which existed previously, do not exist and producing full output
840 is identical to the default output.
844 .ne 2
846 \fB\fB-T\fR\fR
848 .RS 6n
849 By default, \fBnm\fR prints the entire name of the symbols listed. Since symbol
850 names have been moved to the last column, the problem of overflow is removed
851 and it is no longer necessary to truncate the symbol name.