LLVM-CXXFILT(1)

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

πŸ’… LLVM-CXXFILT(1) β€” the LLVM manual, bestie edition ✨

okay so real talk, this page lives in the LLVM manual set, and it's about a tool that un-mangles C++ symbol names so your brain stops hurting. let's get into it 🫢


✨ NAME ✨

llvm-cxxfilt β€” the LLVM symbol name demangler πŸ”“ (yes, it un-scrambles those cursed C++ names, no cap)


🌸 SYNOPSIS 🌸

llvm-cxxfilt [options] [mangled names...]

πŸ¦‹ DESCRIPTION πŸ¦‹

llvm-cxxfilt is a symbol demangler, and it can literally be used as a replacement for the GNU c++filt tool πŸ’– It takes a series of symbol names and prints their demangled form on the standard output stream. And if a name can't be demangled? no drama β€” it's simply printed as is. icon behavior honestly.

If no names are specified on the command-line, names are read interactively from the standard input stream πŸ‘€ When it's reading names from standard input, each input line is split on characters that are not part of valid Itanium name manglings, i.e. characters that are not alphanumeric, ., $, or _. Separators between names are copied to the output as is β€” so your vibe of the line stays intact, fr fr.


πŸŽ€ 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 |

see how not_mangled just... came back as itself? she's unbothered, she's thriving πŸ’œ


πŸ‘‘ OPTIONS πŸ‘‘

  • --format=<value>, -s β€” which mangling scheme to assume. valid values are auto (the default β€” it auto-detects the style, main character energy) and gnu (assume GNU/Itanium style).
  • --help, -h β€” prints a summary of command line options πŸ“‹
  • --no-params, -p β€” do not demangle function parameters or return types. keep it mysterious.
  • --no-strip-underscore, -n β€” do not strip a leading underscore. this is the default for all platforms, so like... it's already the vibe.
  • --quote β€” add " " around demangled names. and it does not quote already quoted names (no double-quoting, we're not animals πŸ™ˆ).
  • --strip-underscore, -_ β€” strip a single leading underscore, if present, from each input name before demangling βœ‚οΈ
  • --types, -t β€” attempt to demangle names as type names as well as symbol names πŸ”
  • --version β€” display the version of the llvm-cxxfilt executable ⭐
  • @<FILE> β€” read command-line options from response file <FILE> πŸ“

πŸ’€ EXIT STATUS πŸ’€

llvm-cxxfilt returns 0 unless it encounters a usage error, in which case a non-zero exit code is returned. so a 0 means she ate, and anything else means you fumbled the invocation 😭


🌈 SEE ALSO 🌈

llvm-nm(1) β€” go give her a read too, iykyk 🧚


πŸ’– AUTHOR πŸ’–

Maintained by the LLVM Team (https://llvm.org/). they're the ones keeping this whole thing alive, show some love πŸ‘‘


2003-2026, LLVM Project


⚠️ quick warning bestie: the hyphen options are short and sneaky β€” -n and -_ are literally opposites, and mixing them up is a whole personality flaw. read twice, type once πŸ’…

and that's the page!! this one's from the LLVM source, version-flavored and dated 2026-10-06, page 23 in the set β€” mwah, stan, periodt πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from