LLVM-CXXFILT(1)

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

okay so, welcome to llvm-cxxfilt, part of the LLVM fam 🫢. Sit down, grab a boba, we're gonna talk about demangling. Yes it's as iconic as it sounds.


✨ NAME ✨

llvm-cxxfilt β€” the LLVM symbol name demangler 🌸

✨ SYNOPSIS ✨

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

πŸ’– DESCRIPTION πŸ’–

llvm-cxxfilt is a symbol demangler, and honestly? It's giving "drop-in replacement for the GNU c++filt tool" πŸ‘‘. You hand it a bunch of symbol names, and it prints their demangled form on the standard output stream. That's it. That's the whole job. Slay.

And if a name can't be demangled? No drama, no error, it just gets printed as-is. We don't gatekeep, we don't crash πŸ’….

Now, if you don't drop any names on the command line, it'll read them interactively from the standard input stream instead ✨. But here's the cute little detail you need to know: when it's reading from standard input, it splits each line on characters that aren't part of valid Itanium name manglings β€” aka characters that are not alphanumeric, '.', '$', or '_'. And the separators between names? They get copied to the output as-is. Zero crumbs left behind πŸŽ€.

πŸ¦‹ 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 |

look at that. not_mangled said "I'm staying exactly as I am" and honestly? respect πŸ’€

πŸ”₯ OPTIONS πŸ”₯

  • --format=<value>, -s β€” which mangling scheme to assume. Valid values are auto (the default β€” it auto-detects the style for you, main character energy) and gnu (assume the GNU/Itanium style).
  • --help, -h β€” print a summary of the command line options. Your safety net 🫢
  • --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 except Mach-O based hosts. Periodt.
  • --strip-underscore, -_ β€” strip a single leading underscore, if present, from each input name before demangling. On by default on Mach-O based platforms 😌
  • --types, -t β€” attempt to demangle names as type names as well as function names. Versatile queen ✨
  • --version β€” display the version of the llvm-cxxfilt executable.
  • @<FILE> β€” read command-line options from response file <FILE>. iykyk πŸ“

πŸ’€ EXIT STATUS πŸ’€

llvm-cxxfilt returns 0 unless it encounters a usage error β€” in which case, bestie, a non-zero exit code is returned. πŸ™ˆ

🌈 SEE ALSO 🌈

  • llvm-nm(1) <llvm-nm.html> β€” go say hi πŸ‘‹

πŸŽ€ Author πŸŽ€

Maintained by the LLVM Team (https://llvm.org/). They're literally the blueprint πŸ’œ

2003-2026, LLVM Project


and that's the whole page, bestie β€” no cap, every flag, every default, every separator character πŸ’–

this gorgeous little manpage is version 15, dated 2026-09-09, and it goes out to you from the LLVM project with love 🧚✨ mwah, now go demangle something πŸ’…

πŸ“¦ where this page comes from