LLVM-CXXFILT(1)

πŸ“¦
version 13.0.1 Β· 5 versions
, in ubuntu jammy

LLVM-CXXFILT(1) πŸ’…βœ¨ β€” the demangler bestie era

Okay so bestie, gather round, because this page is all about llvm-cxxfilt β€” the LLVM symbol name demangler that's giving main character energy in the demangling department. If you've ever stared at a C++ symbol like _Z3foov and thought "what even is that 😭", this tool is about to be your new obsession. ✨


πŸ“› NAME πŸ“›

llvm-cxxfilt β€” LLVM symbol name demangler. That's it, that's the whole vibe. It takes the cursed mangled names and makes them make sense. Iconic behavior, no cap. πŸ’…


πŸ“œ SYNOPSIS πŸ“œ

llvm-cxxfilt [options] [mangled names…]

Short, sweet, and ready to serve. 🫢


πŸ¦‹ DESCRIPTION πŸ¦‹

So here's the tea: llvm-cxxfilt is a symbol demangler that can 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. Slay. πŸ’– And if a name cannot be demangled? It is simply printed as is. No drama, no error, just vibes. ✨

If no names are specified on the command-line, names are read interactively from the standard input stream. That's right, bestie β€” it's a whole interactive moment. πŸŽ€ When 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 _. And the separators between names? Copied to the output as is. Respectful, preserved, periodt. πŸ”₯


🌸 EXAMPLE 🌸

Like, just look at this and tell me it's not iconic:

$ 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 |

The way that it just works πŸ˜­πŸ’– not_mangled stays exactly as it was, because it already understood the assignment. No notes. πŸ‘‘


✨ OPTIONS ✨

  • --format=<value>, -s β€” Mangling scheme to assume. Valid values are auto (default, auto-detect the style) and gnu (assume GNU/Itanium style). Choose your fighter. πŸ’…
  • --help, -h β€” Print a summary of command line options. When you need a little recap, bestie. πŸŽ€
  • --no-strip-underscore, -n β€” Do not strip a leading underscore. This is the default for all platforms except Mach-O based hosts. FYI, iykyk. πŸ¦‹
  • --strip-underscore, -_ β€” Strip a single leading underscore, if present, from each input name before demangling. On by default on Mach-O based platforms. Lowkey important. ✨
  • --types, -t β€” Attempt to demangle names as type names as well as function names. Because types deserve love too. πŸ’–
  • --version β€” Display the version of the llvm-cxxfilt executable. Gotta know which era of slay you're running. 🌈
  • @<FILE> β€” Read command-line options from response file <FILE>. A whole file of options? The convenience is real. 🫢

πŸ’€ EXIT STATUS πŸ’€

llvm-cxxfilt returns 0 unless it encounters a usage error, in which case a non-zero exit code is returned. So if you see a non-zero, something went wrong β€” but like, respectfully. πŸ™ˆ


πŸ”— SEE ALSO πŸ”—

  • llvm-nm(1) β€” the other tool in the LLVM cinematic universe. Go check it out. πŸ‘‘

πŸ‘‘ AUTHOR πŸ‘‘

Maintained by the LLVM Team (https://llvm.org/). Legends, honestly. πŸ’œ


2003-2023, LLVM Project. Respect the legacy. πŸŽ€


And that's the whole page, bestie! This iconic manual was brought to you by the LLVM Project, version 13, dated 2023-07-14. Now go demangle something and feel powerful. πŸ’–βœ¨πŸ¦‹πŸŒΈπŸ’…πŸ«ΆπŸ˜­πŸ”₯πŸ‘‘πŸŒˆβ­πŸ’€πŸ™ˆπŸ“πŸ§šπŸ’œ

πŸ“¦ where this page comes from