getconf: don't include xpg4 bits, gcc7 includes xpg6 bits for us
[unleashed.git] / share / man / man1 / nm.1
blob1940149f90aa7baba808181fc68e0d87c6dc7ede
1 .\"
2 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for
3 .\" permission to reproduce portions of its copyrighted documentation.
4 .\" Original documentation from The Open Group can be obtained online at
5 .\" http://www.opengroup.org/bookstore/.
6 .\"
7 .\" The Institute of Electrical and Electronics Engineers and The Open
8 .\" Group, have given us permission to reprint portions of their
9 .\" documentation.
10 .\"
11 .\" In the following statement, the phrase ``this text'' refers to portions
12 .\" of the system documentation.
13 .\"
14 .\" Portions of this text are reprinted and reproduced in electronic form
15 .\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition,
16 .\" Standard for Information Technology -- Portable Operating System
17 .\" Interface (POSIX), The Open Group Base Specifications Issue 6,
18 .\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics
19 .\" Engineers, Inc and The Open Group.  In the event of any discrepancy
20 .\" between these versions and the original IEEE and The Open Group
21 .\" Standard, the original IEEE and The Open Group Standard is the referee
22 .\" document.  The original Standard can be obtained online at
23 .\" http://www.opengroup.org/unix/online.html.
24 .\"
25 .\" This notice shall appear on any product containing this material.
26 .\"
27 .\" The contents of this file are subject to the terms of the
28 .\" Common Development and Distribution License (the "License").
29 .\" You may not use this file except in compliance with the License.
30 .\"
31 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
32 .\" or http://www.opensolaris.org/os/licensing.
33 .\" See the License for the specific language governing permissions
34 .\" and limitations under the License.
35 .\"
36 .\" When distributing Covered Code, include this CDDL HEADER in each
37 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
38 .\" If applicable, add the following below this CDDL HEADER, with the
39 .\" fields enclosed by brackets "[]" replaced with your own identifying
40 .\" information: Portions Copyright [yyyy] [name of copyright owner]
41 .\"
42 .\"
43 .\" Copyright 1989 AT&T
44 .\" Portions Copyright (c) 1992, X/Open Company Limited  All Rights Reserved
45 .\" Copyright (c) 2007, Sun Microsystems, Inc.  All Rights Reserved
46 .\"
47 .TH NM 1 "Oct 25, 2017"
48 .SH NAME
49 nm \- print name list of an object file
50 .SH SYNOPSIS
51 .LP
52 .nf
53 \fB/usr/bin/nm\fR [\fB-ACDhlnPprRsTuVv\fR] [\fB-efox\fR] [\fB-g\fR | \fB-u\fR]
54      [\fB-t\fR \fIformat\fR] \fIfile\fR...
55 .fi
57 .SH DESCRIPTION
58 .sp
59 .LP
60 The \fBnm\fR utility displays the symbol table of each \fBELF\fR object file
61 that is specified by \fIfile\fR.
62 .sp
63 .LP
64 If no symbolic information is available for a valid input file, the \fBnm\fR
65 utility reports that fact, but not consider it an error condition.
66 .SH OPTIONS
67 .sp
68 .LP
69 The output of \fBnm\fR can be controlled using the following options:
70 .sp
71 .ne 2
72 .na
73 \fB\fB-A\fR\fR
74 .ad
75 .RS 13n
76 Writes the full path name or library name of an object on each line.
77 .RE
79 .sp
80 .ne 2
81 .na
82 \fB\fB-C\fR\fR
83 .ad
84 .RS 13n
85 Demangles C++ symbol names before printing them out.
86 .RE
88 .sp
89 .ne 2
90 .na
91 \fB\fB-D\fR\fR
92 .ad
93 .RS 13n
94 Displays the \fBSHT_DYNSYM\fR symbol information. This is the symbol table used
95 by \fBld.so.1\fR and is present even in stripped dynamic executables. If
96 \fB-D\fR is not specified, the default behavior is to display the
97 \fBSHT_SYMTAB\fR symbol information.
98 .RE
101 .ne 2
103 \fB\fB-e\fR\fR
105 .RS 13n
106 See NOTES below.
110 .ne 2
112 \fB\fB-f\fR\fR
114 .RS 13n
115 See NOTES below.
119 .ne 2
121 \fB\fB-g\fR\fR
123 .RS 13n
124 Writes only external (global) symbol information.
128 .ne 2
130 \fB\fB-h\fR\fR
132 .RS 13n
133 Does not display the output heading data.
137 .ne 2
139 \fB\fB-L\fR\fR
141 .RS 13n
142 Displays the \fBSHT_SUNW_LDYNSYM\fR symbol information. This symbol table
143 contains local function symbols. \fBSHT_SUNW_LDYNSM\fR symbol tables are
144 present even in stripped dynamic executables. These symbols augment the global
145 symbols that are found in \fBSHT_DYNSYM\fR symbol table. If \fB-L\fR is not
146 specified, the default behavior is to display the \fBSHT_SYMTAB\fR symbol
147 information.
151 .ne 2
153 \fB\fB-l\fR\fR
155 .RS 13n
156 Distinguishes between \fBWEAK\fR and \fBGLOBAL\fR symbols by appending a * to
157 the key letter for \fBWEAK\fR symbols.
161 .ne 2
163 \fB\fB-n\fR\fR
165 .RS 13n
166 Sorts external symbols by name before they are printed.
170 .ne 2
172 \fB\fB-o\fR\fR
174 .RS 13n
175 Prints the value and size of a symbol in octal instead of decimal (equivalent
176 to \fB-t\fR \fBo\fR).
180 .ne 2
182 \fB\fB-p\fR\fR
184 .RS 13n
185 Produces easy to parse, terse output. Each symbol name is preceded by its value
186 (blanks if undefined) and one of the letters:
188 .ne 2
190 \fB\fBA\fR\fR
192 .RS 5n
193 Absolute symbol.
197 .ne 2
199 \fB\fBB\fR\fR
201 .RS 5n
202 bss (uninitialized data space) symbol.
206 .ne 2
208 \fB\fBC\fR\fR
210 .RS 5n
211 COMMON symbol.
215 .ne 2
217 \fB\fBD\fR\fR
219 .RS 5n
220 Data object symbol.
224 .ne 2
226 \fB\fBF\fR\fR
228 .RS 5n
229 File symbol.
233 .ne 2
235 \fB\fBN\fR\fR
237 .RS 5n
238 Symbol has no type.
242 .ne 2
244 \fB\fBL\fR\fR
246 .RS 5n
247 Thread-Local storage symbol.
251 .ne 2
253 \fB\fBS\fR\fR
255 .RS 5n
256 Section symbol.
260 .ne 2
262 \fB\fBT\fR\fR
264 .RS 5n
265 Text symbol.
269 .ne 2
271 \fB\fBU\fR\fR
273 .RS 5n
274 Undefined.
277 If the symbol's binding attribute is:
279 .ne 2
281 \fB\fBLOCAL\fR\fR
283 .RS 10n
284 The key letter is lower case.
288 .ne 2
290 \fB\fBWEAK\fR\fR
292 .RS 10n
293 The key letter is upper case. If the \fB-l\fR modifier is specified, the upper
294 case key letter is followed by a \fB*\fR
298 .ne 2
300 \fB\fBGLOBAL\fR\fR
302 .RS 10n
303 The key letter is upper case.
309 .ne 2
311 \fB\fB-P\fR\fR
313 .RS 13n
314 Writes information in a portable output format, as specified in \fBStandard
315 Output\fR.
319 .ne 2
321 \fB\fB-r\fR\fR
323 .RS 13n
324 Prepends the name of the object file or archive to each output line.
328 .ne 2
330 \fB\fB-R\fR\fR
332 .RS 13n
333 Prints the archive name (if present), followed by the object file and symbol
334 name. If the \fB-r\fR option is also specified, this option is ignored.
338 .ne 2
340 \fB\fB-s\fR\fR
342 .RS 13n
343 Prints section name instead of section index.
347 .ne 2
349 \fB\fB-t\fR \fIformat\fR\fR
351 .RS 13n
352 Writes each numeric value in the specified format. The format is dependent on
353 the single character used as the \fIformat\fR option-argument:
355 .ne 2
357 \fB\fBd\fR\fR
359 .RS 5n
360 The offset is written in decimal.
364 .ne 2
366 \fB\fBo\fR\fR
368 .RS 5n
369 The offset is written in octal.
373 .ne 2
375 \fB\fBx\fR\fR
377 .RS 5n
378 The offset is written in hexadecimal (default).
384 .ne 2
386 \fB\fB-T\fR\fR
388 .RS 13n
389 See \fBNOTES\fR.
393 .ne 2
395 \fB\fB-u\fR\fR
397 .RS 6n
398 Prints long listing for each undefined symbol. See \fBOUTPUT\fR below.
402 .ne 2
404 \fB\fB-v\fR\fR
406 .RS 6n
407 Sorts external symbols by value before they are printed.
411 .ne 2
413 \fB\fB-V\fR\fR
415 .RS 6n
416 Prints the version of the \fBnm\fR command executing on the standard error
417 output.
421 .ne 2
423 \fB\fB-x\fR\fR
425 .RS 6n
426 Prints the value and size of a symbol in hexadecimal (the default,
427 equivalent to \fB-t\fR \fBx\fR).
432 Options can be used in any order, either singly or in combination, and can
433 appear anywhere in the command line. When conflicting options are specified
434 (such as \fB-v\fR and \fB-n\fR, or \fB-o\fR and \fB-x\fR) the first is taken
435 and the second ignored with a warning message to the user. (See \fB-R\fR for
436 exception.)
437 .SH OPERANDS
440 The following operand is supported:
442 .ne 2
444 \fB\fIfile\fR\fR
446 .RS 8n
447 A path name of an object file, executable file or object-file library.
450 .SH OUTPUT
453 This section describes the \fBnm\fR utility's output options.
454 .SS "Standard Output"
457 For each symbol, the following information is printed:
459 .ne 2
461 \fB\fBIndex\fR\fR
463 .RS 15n
464 The index of the symbol. (The index appears in brackets.)
468 .ne 2
470 \fB\fBValue\fR\fR
472 .RS 15n
473 The value of the symbol is one of the following:
474 .RS +4
476 .ie t \(bu
477 .el o
478 A section offset for defined symbols in a relocatable file.
480 .RS +4
482 .ie t \(bu
483 .el o
484 Alignment constraints for symbols whose section index is \fBSHN_COMMON\fR.
486 .RS +4
488 .ie t \(bu
489 .el o
490 A virtual address in executable and dynamic library files.
495 .ne 2
497 \fB\fBSize\fR\fR
499 .RS 15n
500 The size in bytes of the associated object.
504 .ne 2
506 \fB\fBType\fR\fR
508 .RS 15n
509 A symbol is of one of the following types:
511 .ne 2
513 \fB\fBNOTYPE\fR\fR
515 .RS 11n
516 No type was specified.
520 .ne 2
522 \fB\fBOBJECT\fR\fR
524 .RS 11n
525 A data object such as an array or variable.
529 .ne 2
531 \fB\fBFUNC\fR\fR
533 .RS 11n
534 A function or other executable code.
538 .ne 2
540 \fB\fBREGI\fR\fR
542 .RS 11n
543 A register symbol (\fBSPARC\fR only).
547 .ne 2
549 \fB\fBSECTION\fR\fR
551 .RS 11n
552 A section symbol.
556 .ne 2
558 \fB\fBFILE\fR\fR
560 .RS 11n
561 Name of the source file.
565 .ne 2
567 \fB\fBCOMMON\fR\fR
569 .RS 11n
570 An uninitialized common block.
574 .ne 2
576 \fB\fBTLS\fR\fR
578 .RS 11n
579 A variable associated with Thread-Local storage.
585 .ne 2
587 \fB\fBBind\fR\fR
589 .RS 15n
590 The symbol's binding attributes.
592 .ne 2
594 \fB\fBLOCAL symbols\fR\fR
596 .RS 18n
597 Have a scope limited to the object file containing their definition.
601 .ne 2
603 \fB\fBGLOBAL symbols\fR\fR
605 .RS 18n
606 Are visible to all object files being combined.
610 .ne 2
612 \fB\fBWEAK symbols\fR\fR
614 .RS 18n
615 Are essentially global symbols with a lower precedence than \fBGLOBAL\fR.
621 .ne 2
623 \fB\fBOther\fR\fR
625 .RS 15n
626 A symbol's visibility.
628 The lower bits of the \fBst_other\fR member of the \fBElf32_Sym\fR structure,
629 and the \fBElf64_Sym\fR structure, defined in \fB<sys/elf.h>\fR, are currently
630 used and can be one of:
632 .in +2
634 #define STV_DEFAULT     0
635 #define STV_INTERNAL    1
636 #define STV_HIDDEN      2
637 #define STV_PROTECTED   3
638 #define STV_EXPORTED    4
639 #define STV_SINGLETON   5
640 #define STV_ELIMINATE   6
642 .in -2
648 .ne 2
650 \fB\fBShndx\fR\fR
652 .RS 15n
653 Except for three special values, this is the section header table index in
654 relation to which the symbol is defined. The following special values exist:
656 .ne 2
658 \fB\fBABS\fR\fR
660 .RS 10n
661 Indicates the symbol's value does not change through relocation.
665 .ne 2
667 \fB\fBCOMMON\fR\fR
669 .RS 10n
670 Indicates an unallocated block and the value provides alignment constraints.
674 .ne 2
676 \fB\fBUNDEF\fR\fR
678 .RS 10n
679 Indicates an undefined symbol.
685 .ne 2
687 \fB\fBName\fR\fR
689 .RS 15n
690 The name of the symbol.
694 .ne 2
696 \fB\fBObject Name\fR\fR
698 .RS 15n
699 The name of the object or library if \fB-A\fR is specified.
704 If the \fB-P\fR option is specified, the previous information is displayed
705 using the following portable format. The three versions differ depending on
706 whether \fB-t\fR \fBd\fR, \fB-t\fR \fBo\fR, or \fB-t\fR \fBx\fR was specified,
707 respectively:
709 .in +2
711 \fB"%s%s %s %d %d\en",\fR \fIlibrary/object name\fR, \fIname\fR\fB, type,\fR \fIvalue\fR, \e
712      \fBsize "%s%s %s %o %o\en",\fR \fIlibrary/object name\fR, \fIname\fR, \e
713      \fBtype,\fR \fIvalue\fR \fB, size "%s%s %s %x %x\en",\fR \fIlibrary/object name\fR, \fIname\fR, \e
714      \fBtype,\fR \fIvalue\fR\fB, size\fR
716 .in -2
721 where \fIlibrary/object name\fR is formatted as follows:
722 .RS +4
724 .ie t \(bu
725 .el o
726 If \fB-A\fR is not specified, \fIlibrary/object name\fR is an empty string.
728 .RS +4
730 .ie t \(bu
731 .el o
732 If \fB-A\fR is specified and the corresponding \fIfile\fR operand does not name
733 a library:
735 .in +2
737 \fB"%s: ", \fIfile\fR\fR
739 .in -2
743 .RS +4
745 .ie t \(bu
746 .el o
747 If \fB-A\fR is specified and the corresponding \fIfile\fR operand names a
748 library. In this case, \fIobject file\fR names the object file in the library
749 containing the symbol being described:
751 .in +2
753 \fB"%s[%s]: ", \fIfile\fR, \fIobject file\fR\fR
755 .in -2
761 If \fB-A\fR is not specified, then if more than one \fIfile\fR operand is
762 specified or if only one \fIfile\fR operand is specified and it names a
763 library, \fBnm\fR writes a line identifying the object containing the following
764 symbols before the lines containing those symbols, in the form:
765 .RS +4
767 .ie t \(bu
768 .el o
769 If the corresponding \fIfile\fR operand does not name a library:
771 .in +2
773 \fB"%s:\en", \fIfile\fR\fR
775 .in -2
779 .RS +4
781 .ie t \(bu
782 .el o
783 If the corresponding \fIfile\fR operand names a library; in this case,
784 \fIobject file\fR is the name of the file in the library containing the
785 following symbols:
787 .in +2
789 \fB"%s[%s]:\en", \fIfile\fR, \fIobject file\fR\fR
791 .in -2
797 If \fB-P\fR is specified, but \fB-t\fR is not, the format is as if \fB-t\fR
798 \fBx\fR had been specified.
799 .SH ENVIRONMENT VARIABLES
802 See \fBenviron\fR(5) for descriptions of the following environment variables
803 that affect the execution of \fBnm\fR: \fBLANG\fR, \fBLC_ALL\fR,
804 \fBLC_COLLATE\fR, \fBLC_CTYPE\fR, \fBLC_MESSAGES\fR, and \fBNLSPATH\fR.
805 .SH EXIT STATUS
808 The following exit values are returned:
810 .ne 2
812 \fB\fB0\fR\fR
814 .RS 6n
815 Successful completion.
819 .ne 2
821 \fB\fB>0\fR\fR
823 .RS 6n
824 An error occurred.
827 .SH ATTRIBUTES
830 See \fBattributes\fR(5) for descriptions of the following attributes:
831 .SH /usr/bin/nm
836 box;
837 c | c
838 l | l .
839 ATTRIBUTE TYPE  ATTRIBUTE VALUE
841 Interface Stability     Committed
844 .SH SEE ALSO
847 \fBar\fR(1), \fBas\fR(1), \fBdump\fR(1), \fBld\fR(1), \fBld.so.1\fR(1),
848 \fBar.h\fR(3HEAD), \fBa.out\fR(4), \fBattributes\fR(5), \fBenviron\fR(5),
849 \fBstandards\fR(5)
850 .SH NOTES
853 The following options are obsolete because of changes to the object file format
854 and might be deleted in a future release.
856 .ne 2
858 \fB\fB-e\fR\fR
860 .RS 6n
861 Prints only external and static symbols. The symbol table now contains only
862 static and external symbols. Automatic symbols no longer appear in the symbol
863 table. They do appear in the debugging information produced by \fBcc\fR
864 \fB-g\fR, which can be examined using \fBdump\fR(1).
868 .ne 2
870 \fB\fB-f\fR\fR
872 .RS 6n
873 Produces full output. Redundant symbols (such as \fB\&.text\fR, \fB\&.data\fR,
874 and so forth), which existed previously, do not exist and producing full output
875 is identical to the default output.
879 .ne 2
881 \fB\fB-T\fR\fR
883 .RS 6n
884 By default, \fBnm\fR prints the entire name of the symbols listed. Since symbol
885 names have been moved to the last column, the problem of overflow is removed
886 and it is no longer necessary to truncate the symbol name.