llvm-tli-checker - TargetLibraryInfo 与库检查器¶
概要¶
llvm-tli-checker [选项] [库文件…]
描述¶
llvm-tli-checker 将 TargetLibraryInfo 对库函数可用性的判断与指定库文件导出的函数集进行比较,报告 TLI 的判断与函数是否实际存在之间的任何差异。这主要用于供应商确保其目标的 TLI 正确,并且编译器不会将某些代码序列“优化”为实际上不可用的库调用。
示例¶
$ llvm-tli-checker --triple x86_64-scei-ps4 example.so
TLI knows 466 symbols, 235 available for 'x86_64-scei-ps4'
Looking for symbols in 'example.so'
Found 235 global function symbols in 'example.so'
Found a grand total of 235 library symbols
<< TLI yes SDK no: '_ZdaPv' aka operator delete[](void*)
>> TLI no SDK yes: '_ZdaPvj' aka operator delete[](void*, unsigned int)
<< Total TLI yes SDK no: 1
>> Total TLI no SDK yes: 1
== Total TLI yes SDK yes: 234
FAIL: LLVM TLI doesn't match SDK libraries.
选项¶
- --dump-tli¶
根据指定三元组的 TargetLibraryInfo 信息,打印每个库函数的“可用”/“不可用”,并退出。此选项不读取任何输入文件。
- --help, -h¶
打印命令行选项摘要并退出。
- --libdir=<目录>¶
一个基本目录,将其预先添加到每个库文件路径。当同一目录中有多个库文件,或者输入文件名列表保存在响应文件中时,这非常方便。
- --report=<级别>¶
要报告的信息量。<级别> 可以是 summary、discrepancy 或 full。摘要报告仅给出匹配和不匹配符号的数量;差异报告列出不匹配的符号;完整报告列出 TLI 已知的全部符号,包括匹配和不匹配的符号。默认值为 discrepancy。
- --separate¶
分别读取并报告每个库文件的摘要。这有助于识别对 TLI 已知内容没有贡献的库文件。意味着 –report=summary(可以覆盖)。
- --triple=<三元组>¶
用于初始化 TargetLibraryInfo 的三元组。
- @<文件>¶
从响应文件 <文件> 中读取命令行选项和/或库名称。
退出状态¶
llvm-tli-checker 即使存在不匹配也返回 0。如果存在无法识别的选项或未提供输入文件,则返回非零退出代码。