On Aug 30, 2005, at 2:03 PM, Ando Sonenblick wrote: I'm using "nm -g" in Terminal to output the symbolic links of the static libraries that I'm building in Xcode.
I'm wondering what the "U" that precedes a function listing means versus a "T" or a "C". Anyone know?
Here's a snippet of the output to exemplify:
U _CopyBlock U _CopyMBlock_nt 0000293c T _DCscaler_311 U ___swbuf U _addblockInter U _bitpos U _blockInter_311 00000004 C _decore_cleanup 00000004 C _do_emms U _extractBlock
Each symbol name is preceded by its value (blanks if undefined). Unless the -m option is specified, this value is followed by one of the following characters, representing the symbol type: U (undefined), A (absolute), T (text section symbol), D (data section symbol), B (bss section symbol), C (common symbol), - (for debugger symbol table entries; see -a below), S (symbol in a section other than those above), or I (indirect symbol). If the symbol is local (non-external), the symbol's type is instead represented by the corresponding lowercase letter. A lower case u in a dynamic shared library indicates a unde- fined reference to a private external in another module in the same library.
(from the man page)
Translated into English:
T is a symbol your library is exporting. U is a symbol your library is importing from another library. C is a symbol that can occur in several libraries; the linker will pick one implementation.
Chris |