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。如果存在无法识别的选项或未提供输入文件,则返回非零退出代码。