LLVM-TLI-CHECKER(1)

πŸ“¦ version 23.1.3, in centos-stream 9

πŸ’… LLVM-TLI-CHECKER(1) πŸ’…

okay so bestie, welcome to llvm-tli-checker β€” the manual page for the LLVM tool of the same name, living its best life in section 23 of the LLVM docs. it's giving detective energy and honestly? we're obsessed. πŸ•΅οΈβ€β™€οΈβœ¨


🌸 NAME 🌸

llvm-tli-checker β€” TargetLibraryInfo vs library checker. that's it, that's the whole vibe. it checks TLI against a library. iconic. πŸŽ€


✨ SYNOPSIS ✨

llvm-tli-checker [options] [library-file...]

options first, library files after. or don't! the options are lowkey optional-optional, yk? πŸ¦‹


πŸ’– DESCRIPTION πŸ’–

okay so here's the tea, bestie. 🍡 llvm-tli-checker takes TargetLibraryInfo's opinion about whether a library function is available, and compares it against the actual set of functions exported by the library files you hand it. then it reports any disagreements between what TLI thinks and whether the function is actually there.

and like… why do we care? because this is primarily useful for vendors who need to make sure the TLI for their target is correct β€” so the compiler doesn't "optimize" some code sequence into a library call that is not actually available. 😭 that would be a whole mess. no cap.


🧚 EXAMPLE 🧚

$ 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 how it counts everything and then hits you with the FAIL? πŸ’€ dramatic but honestly fair. the << means TLI said yes and the SDK said no, the >> is the other way around, and == is the happy little agreements. 234 of those. slay. 🫢


πŸ‘‘ OPTIONS πŸ‘‘

  • --dump-tli β€” print "available"/"not available" for each library function, according to TargetLibraryInfo's information for the specified triple, then dip. and listen: this option does not read any input files. none. zero. it just vibes and leaves. ✌️
  • --help, -h β€” print a summary of command line options and exit. classic. the blueprint. we love a helpful king. πŸ‘‘
  • --libdir=<directory> β€” a base directory to prepend to each library file path. super handy when you've got a bunch of library files all chilling in the same directory, or when a list of input filenames is kept in a response file. one dir to rule them all. πŸ—‚οΈβœ¨
  • --report=<level> β€” how much info you want back. <level> can be summary, discrepancy, or full. here's the breakdown, bestie:
    • summary gives only the count of matching and mis-matching symbols.
    • discrepancy lists the mis-matching symbols.
    • full lists all symbols known to TLI, matching or mis-matching.

the default is discrepancy. iykyk. πŸ’…

  • --separate β€” read and report a summary for each library file separately. useful for spotting library files that don't contribute anything TLI knows about (rude, but okay). this one implies --report=summary β€” but you can override it. πŸ¦‹
  • --triple=<triple> β€” the triple to use for initializing TargetLibraryInfo. that's the whole job. 🎯
  • @<FILE> β€” read command-line options and/or library names from response file <FILE>. yes, it eats files of arguments. girl dinner. πŸ“

πŸ’€ EXIT STATUS πŸ’€

so here's the wild part: llvm-tli-checker returns 0 even if there are mismatches. mismatches are just information, not a crime!! πŸ™ˆ

but it does return a non-zero exit code if:

  • there's an unrecognized option, or
  • no input files are provided.

so like, bring files. and spell your flags right. that's the bar. 🌈


πŸ’œ AUTHOR πŸ’œ

maintained by the LLVM Team (https://llvm.org/). they stay booked and busy. 🫢


2003-2026, LLVM Project


and that's the page, bestie!! πŸŽ€βœ¨ big sign-off energy: this was LLVM's LLVM-TLI-CHECKER(1) manual, dated 2026-10-06, version 23. go check your symbols, keep your TLI honest, and remember β€” if the compiler tries to optimize into a library call that isn't there, that's not slay, that's a bug. periodt. πŸ’…πŸ”₯πŸ‘‘

πŸ“¦ where this page comes from