llvm-nm命令详解

概要

llvm-nm [options] [filenames…]

描述

llvm-nm工具用来列出llvm字节码文件,目标文件以及归档文件中的目标中的符号名称。列出每个符号以及有关其出处的一些简单信息。如果未指定文件名,或者-用作文件名,则 llvm-nm将在其标准输入流上处理文件。

llvm-nm的默认输出格式是传统的BSD nm输出格式。每个这样的输出记录包括一个(可选的)8位十六进制地址,后跟一个类型代码字符,后跟每个符号的名称。每行打印一条记录; 字段由空格分隔。省略地址时,将替换为8个空格。

格式字符 含义
U 在此bitcode文件中引用了命名对象但未定义
C common(多个定义链接在一起)
W 弱引用(多个定义一起链接到零个或一个定义)
t 本地函数对象
T 全局函数对象
d 本地数据对象
D 全局数据对象
? 无法辨识的其他东西

因为LLVM bitcode文件通常包含在被链接到可执行映像或动态编译为“即时”之前不被认为具有地址的对象,所以llvm-nm不会为LLVM bitcode文件中的任何符号打印地址,甚至是bitcode文件中定义的符号。

选项

选项 说明
-B (default) 使用BSD输出格式 ,同 -format=bsd
-P 使用POSIX输出格式, 通过 -format=posix
-debug-syms,-a 显示所有符号
-defined-only 仅显示在本文件中定义的符号
–dynamic,-D 显示动态链接符号
–extern-only,g 仅显示外部符号
–no-weak,-W 不显示弱引用符号
–format=format, -f format 选择一个输出格式 sysv,posix,bsd, 默认值是bsd
-help 输出帮助信息
–no-sort,-p 按顺序显示符号
–numeric-sort,-n,-v 符号按地址进行排序
–print-file-name,-A,-o 在每个符号前面加上它来自的文件
–print-size,-S 显示符号大小而不是地址
–size-sort 符号按地址进行排序
–undefined-only,-u 仅打印引用但未在此文件中定义的符号
–radix=RADIX, -t 指定符号地址的基数。接受的值为d(十进制),x(十六进制)和o(八进制)

BUGS

llvm-nm不支持GNU nm所做的全部参数

退出

llvm-nm的退出码为0

SEE ALSO

llvm-dis, llvm-ar,ar(1), nm(1)