LLVM-CXXFILT(1)

πŸ’– LLVM-CXXFILT(1) πŸ’–

okay bestie, gather round, because we're about to talk about llvm-cxxfilt β€” that's the LLVM symbol name demangler, section 1 of the manual, and honestly? she's iconic. πŸŽ€


✨ NAME ✨

llvm-cxxfilt β€” the LLVM symbol name demangler. yeah. that's her whole job. and she eats every time. πŸ’…


🌸 SYNOPSIS 🌸

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

πŸ¦‹ DESCRIPTION πŸ¦‹

so llvm-cxxfilt is a symbol demangler, and the whole vibe is that you can use her as a drop-in replacement for the GNU c++filt tool. she takes a bunch of symbol names and prints their demangled form over on the standard output stream. that's it. that's the gig. πŸ‘‘

and listen β€” if a name can't be demangled? she does not panic, she does not throw hands, she simply prints it as-is. no drama, just vibes. ✨

now, if you don't hand her any names on the command line, she'll read names interactively from the standard input stream instead. 🫢 and here's the lil detail that matters: when she's reading from standard input, every input line gets split on characters that are not part of valid Itanium name manglings β€” meaning characters that aren't alphanumeric, '.', '$', or '_'. and those separators between names? she copies them straight to the output as-is. cute, right? πŸ’–


πŸ“ EXAMPLE πŸ“

watch her work, no cap:

$ 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 walked in and stayed exactly as it was? she's so respectful. 😌 and those *** separators? untouched. preserved. main character energy. ✨


πŸ’… OPTIONS πŸ’…

here we go bestie, the whole lineup, no skips:

  • --format=<value>, -s β€” which mangling scheme to assume. valid values are auto (that's the default, and it auto-detects the style) and gnu (assume GNU/Itanium style). pick your fighter. πŸ₯Š
  • --help, -h β€” prints a summary of the command line options. she's helpful like that. 🫢
  • --no-params, -p β€” do not demangle function parameters or return types. just the name, thanks. πŸ™…
  • --no-strip-underscore, -n β€” do not strip a leading underscore. heads up: this is the default for all platforms. ⭐
  • --quote β€” adds " " around demangled names. and no, she won't double-quote names that are already quoted. she has taste. πŸŽ€
  • --strip-underscore, -_ β€” strips a single leading underscore, if one's there, from each input name before demangling. bye underscore πŸ‘‹
  • --types, -t β€” attempts to demangle names as type names as well as symbol names. she contains multitudes. 🌈
  • --version β€” displays the version of the llvm-cxxfilt executable. ✨
  • @<FILE> β€” reads command-line options from the response file <FILE>. yes, @ and all. πŸ’œ

πŸ”₯ EXIT STATUS πŸ”₯

llvm-cxxfilt returns 0 unless she runs into a usage error, and in that case a non-zero exit code comes back. so like, 0 = she's happy, not 0 = you did something and she's telling you about it. 😭


πŸ‘‘ SEE ALSO πŸ‘‘


🌟 Author 🌟

Maintained by the LLVM Team (https://llvm.org/). they keep her thriving, fr fr. 🫢


2003-2026, LLVM Project


and that's the whole page, bestie!! LLVM version 22, dated 2026-07-16 β€” so when you're out here demangling symbols, just know you're doing it with the freshest, most iconic tool in the game. slay, go demangle something, periodt. πŸ’–βœ¨πŸ¦‹πŸŒΈπŸ’…

πŸ“¦ where this page comes from