LLVM-TLI-CHECKER(1)
π LLVM-TLI-CHECKER π (that's section 1 of the LLVM manual, bestie)
okay so. hi. you found the page for llvm-tli-checker, which lives in the LLVM manual set. it is a tiny little tool with a big job and honestly it's giving π΅οΈβοΈ auditor energy. let's get into it.
β¨ NAME β¨
llvm-tli-checker β TargetLibraryInfo vs library checker. yes that's the whole name. short. iconic. no notes. π
β¨ SYNOPSIS β¨
llvm-tli-checker [options] [library-fileβ¦]
that's it. options, then a pile of library files if you feel like it. slay. π
β¨ DESCRIPTION β¨
so here's the tea β: llvm-tli-checker takes what TargetLibraryInfo thinks it knows about which library functions are available, and compares that against the set of functions that are actually exported by the library files you hand it. then it reports every single disagreement between TLI's opinion and whether the function is really there.
who is this for? mostly vendors, bestie. it's so you can make sure the TLI for your target is actually correct, and so your compiler won't "optimize" some innocent little code sequence into a library call that doesn't even exist. that would be so embarrassing. π no cap.
β¨ EXAMPLE β¨
here's what it looks like in the wild. every character here is exact, don't touch it:
$ 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.
see that FAIL? yeah. it's telling on you. π
β¨ OPTIONS β¨
--dump-tliβ printsavailable/not availablefor every single library function, based on whatever TargetLibraryInfo has to say for the triple you specified, and then dips out. πβοΈ heads up: this one does not read any input files at all, so don't bother feeding it any.--help,-hβ prints a lil summary of the command line options and peaces out. classic.--libdir=<directory>β a base directory that gets prepended to every library file path. super handy when you've got a whole squad of library files chilling in the same directory, or when your input filenames are stashed in a response file. π«Ά--report=<level>β controls how much it spills.<level>can besummary,discrepancy, orfull.summaryβ just the counts of matching and mis-matching symbols.discrepancyβ lists out the mis-matching symbols.fullβ lists all the symbols TLI knows about, matching or not. the whole guest list.- default is
discrepancy. πΈ
--separateβ reads and reports a summary for each library file on its own. lowkey useful for spotting the library files that contribute literally nothing TLI knows about (we've all been there). it implies--report=summary, but you can override that. β¨--triple=<triple>β the triple used for initializing TargetLibraryInfo. that's the one.@<FILE>β reads command-line options and/or library names out of the response file<FILE>. π¦
β¨ EXIT STATUS β¨
plot twist: llvm-tli-checker returns 0 even if there are mismatches. yes, really. it's not gonna throw hands over a discrepancy.
but it will return a non-zero exit code if:
- there's an unrecognized option, or
- you gave it no input files at all. π
so it's chill about wrong answers but extremely not chill about being used incorrectly. main character energy, honestly.
β¨ AUTHOR β¨
maintained by the LLVM Team (https://llvm.org/). π
β¨ COPYRIGHT β¨
2003-2025, LLVM Project
okay that's the whole page, you're so welcome π go check your TLI, bestie, your SDK deserves the truth.
this was LLVM-TLI-CHECKER(1) β page 14, dated 2025-05-22, from the LLVM Project. mwah. πβ¨
π¦ where this page comes from
- ubuntu questing: llvm-14 1:14.0.6-20ubuntu3
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms