nm - write the name list of an object file (DEVELOPMENT)
nm [-APv][-efox][ -g| -u][-t format] file...
The nm utility displays symbolic information appearing in the object file, executable file or object-file library named by file. If no symbolic information is available for a valid input file, the nm utility will report that fact, but not consider it an error condition.
The default base used when numeric values are written is decimal.
The nm utility supports the XBD specification, Utility Syntax Guidelines .
The following options are supported:
- Write the full pathname or library name of an object on each line.
- Write only external (global) and static symbol information.
- Produce full output. Write redundant symbols (.text, .data and .bss), normally suppressed.
- Write only external (global) symbol information.
- Write numeric values in octal (equivalent to t-o).
- Write information in a portable output format, as specified in the STDOUT section.
- -t format
- Write each numeric value in the specified format. The format is dependent on the single character used as the format option-argument:
- The offset is written in decimal (default).
- The offset is written in octal.
- The offset is written in hexadecimal.
- Write only undefined symbols.
- Sort output by value instead of alphabetically.
- Write numeric values in hexadecimal (equivalent to t-x).
The following operand is supported:
- A pathname of an object file, executable file or object-file library.
See the INPUT FILES section.
The input file must be an object file, an object-file library whose format is the same as those produced by the ar utility for link editing, or an executable file. The nm utility may accept additional implementation-dependent object library formats for the input file.
The following environment variables affect the execution of nm:
- Provide a default value for the internationalisation variables that are unset or null. If LANG is unset or null, the corresponding value from the implementation-dependent default locale will be used. If any of the internationalisation variables contains an invalid setting, the utility will behave as if none of the variables had been defined.
- If set to a non-empty string value, override the values of all the other internationalisation variables.
- Determine the locale for character collation information for the symbol-name and symbol-value collation sequences.
- Determine the locale for the interpretation of sequences of bytes of text data as characters (for example, single- as opposed to multi-byte characters in arguments).
- Determine the locale that should be used to affect the format and contents of diagnostic messages written to standard error.
- Determine the location of message catalogues for the processing of LC_MESSAGES .
If symbolic information is present in the input files, then for each file or for each member of an archive, the nm utility will write the following information to standard output. By default, the format is unspecified, but the output is sorted alphabetically by symbol name.
- Library or object name, if -A is specified.
- Symbol name.
- Symbol type, which is either one of the following single characters or an implementation-dependent type represented by a single character:
- Global absolute symbol.
- Local absolute symbol.
- Global "bss" (that is, uninitialised data space) symbol.
- Local bss symbol.
- Global data symbol.
- Local data symbol.
- Global text symbol.
- Local text symbol.
- Undefined symbol.
- Value of the symbol.
- The size associated with the symbol, if applicable.
This information may be supplemented by additional information specific to the implementation.
If the -P option is specified, the previous information is displayed using the following portable format. The three versions differ depending on whether -t d, -t o or -t x was specified, respectively:
where <library/object name> is formatted as follows:"%s%s %s %d %d\n", <library/object name>, <name>, <type>, <value>, <size> "%s%s %s %o %o\n", <library/object name>, <name>, <type>, <value>, <size> "%s%s %s %x %x\n", <library/object name>, <name>, <type>, <value>, <size>
- If -A is not specified, <library/object name> is an empty string.
- If -A is specified and the corresponding file operand does not name a library:
"%s: ", <file>
- If -A is specified and the corresponding file operand names a library. In this case, <object file> names the object file in the library containing the symbol being described:
"%s[%s]: ", <file>, <object file>
If -A is not specified, then if more than one file operand is specified or if only one file operand is specified and it names a library, nm will write a line identifying the object containing the following symbols before the lines containing those symbols, in the form:
- If the corresponding file operand does not name a library:
- If the corresponding file operand names a library; in this case, <object file> is the name of the file in the library containing the following symbols:
"%s[%s]:\n", <file>, <object file>
If -P is specified, but -t is not, the format is as if -t x had been specified.
Used only for diagnostic messages.
The following exit values are returned:
- Successful completion.
- An error occurred.
Mechanisms for dynamic linking make this utility less meaningful when applied to an executable file because a dynamically linked executable may omit numerous library routines that would be found in a statically linked executable.