llvm-tli-checker - TargetLibraryInfo 与库检查器¶
概要¶
llvm-tli-checker [options] [library-file…]
描述¶
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=<directory>¶
一个基本目录,用于添加到每个库文件路径的前面。当有许多库文件都在同一目录中,或者输入文件名列表保存在响应文件中时,这很方便。
- --report=<level>¶
要报告的信息量。 <level> 可以是 summary、discrepancy 或 full。 summary 报告仅给出匹配和不匹配符号的计数;discrepancy 列出不匹配的符号;full 列出 TLI 已知的所有符号,无论匹配还是不匹配。默认值为 discrepancy。
- --separate¶
分别读取和报告每个库文件的摘要。这对于识别不贡献任何 TLI 已知内容的库文件很有用。暗示 –report=summary(可以被覆盖)。
- --triple=<triple>¶
用于初始化 TargetLibraryInfo 的三元组。
- @<FILE>¶
从响应文件 <FILE> 读取命令行选项和/或库名称。
退出状态¶
llvm-tli-checker 即使存在不匹配,也返回 0。如果存在无法识别的选项,或者未提供任何输入文件,则返回非零退出代码。