LLVM-CXXFILT(1)

πŸ’… LLVM-CXXFILT β€” the glow-up your mangled symbols have been begging for ✨

okay bestie, so llvm-cxxfilt is literally the LLVM symbol name demangler and she's here to take your cursed _Z3foov situations and turn them into something your eyeballs can actually handle. no cap.

✨ SYNOPSIS ✨

llvm-cxxfilt [options] [mangled names…]

🌸 DESCRIPTION 🌸

llvm-cxxfilt is a symbol demangler, and she can fully be used as a drop-in replacement for the GNU c++filt tool. you hand her a series of symbol names and she prints their demangled form straight onto the standard output stream. and if a name can't be demangled? she just prints it exactly as it was, no drama, no judgment, we don't embarrass anybody here 🫢

if you don't specify any names on the command-line, she reads them interactively from the standard input stream instead. and here's the tea when she's reading from standard input: every input line gets split on characters that are not part of valid Itanium name manglings β€” like, characters that aren't alphanumeric, ., $, or _. the separators sitting between names get copied to the output as is, untouched, iconic behavior only. πŸ‘‘


πŸ“ EXAMPLE πŸ“

$ llvm-cxxfilt _Z3foov _Z3bari not_mangled
foo()
bar(int)
not_mangled
$ cat input.txt
| _Z3foov *** _Z3bari *** not_mangled |
$ llvm-cxxfilt < input.txt
| foo() *** bar(int) *** not_mangled |

πŸ’… OPTIONS πŸ’…

  • --format=<value>, -s β€” which mangling scheme to assume. valid values are auto (the default, she auto-detects the style for you) and gnu (assume GNU/Itanium style). pick your fighter ✨
  • --help, -h β€” print a summary of the command line options. your little cheat sheet, bestie πŸ“‹
  • --no-strip-underscore, -n β€” do not strip a leading underscore. this is the default for every platform except Mach-O based hosts.
  • --strip-underscore, -_ β€” strip a single leading underscore, if there even is one, from each input name before demangling. this one's on by default on Mach-O based platforms. periodt.
  • --types, -t β€” attempt to demangle names as type names as well as function names. greedy in the best way πŸ’œ
  • --version β€” display the version of the llvm-cxxfilt executable. slay, tell me who you are πŸ’–
  • @<FILE> β€” read command-line options from response file <FILE>. sneaky lil indirect, we love her.

πŸ”₯ EXIT STATUS πŸ”₯

llvm-cxxfilt returns 0 unless she encounters a usage error, in which case a non-zero exit code is returned. so like, 0 = we ate, non-zero = something went sideways and she's telling you about it 😭


πŸ‘€ SEE ALSO πŸ‘€

llvm-nm(1)


πŸŽ€ AUTHOR πŸŽ€

maintained by the LLVM Team (https://llvm.org/). they're the main characters fr fr.


2003-2025, LLVM Project


and that's the whole page, bestie β€” LLVM's very own llvm-cxxfilt, page 14, dated 2025-05-22. go demangle something and make it look effortless πŸ’…πŸ¦‹βœ¨

πŸ“¦ where this page comes from