LLVM-CXXFILT(1)

πŸ“¦
version 11.1.0 Β· 2 versions
, in fedora 43, fedora 44

πŸ’… llvm-cxxfilt β€” from the LLVM manual pages, bestie ✨

okay so this is llvm-cxxfilt, and it lives in the LLVM section of your man pages. buckle up, we're demangling πŸ’–


🌸 NAME 🌸

llvm-cxxfilt β€” the LLVM symbol name demangler, aka the glow-up machine for your cursed-looking symbols 🫢


✨ SYNOPSIS ✨

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

πŸ¦‹ DESCRIPTION πŸ¦‹

so llvm-cxxfilt is a symbol demangler β€” it takes those gnarly mangled names and gives them their cute readable form back. it can be used as a drop-in replacement for the GNU c++filt tool, no cap. you hand it a series of symbol names, and it prints their demangled form on the standard output stream. and if a name genuinely cannot be demangled? it just prints it as is. no drama, no error, it's giving grace πŸ’…

if you don't specify any names on the command-line, then it reads names interactively from the standard input stream. and here's the iconic part: when reading names from standard input, each input line is split on characters that are not part of valid Itanium name manglings β€” so basically characters that are not alphanumeric, '.', '$', or '_'. and the separators between names? they get copied to the output as is. preserved, untouched, main character energy ✨


πŸŽ€ EXAMPLE πŸŽ€

like literally just watch:

$ 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 out the same way it walked in? unbothered. and see how those *** separators stayed exactly where they were? ate πŸ’–


πŸ‘‘ OPTIONS πŸ‘‘

  • --format=<value>, -s β€” which mangling scheme to assume. valid values are auto (the default β€” it auto-detects the style for you, lowkey psychic) and gnu (assume GNU/Itanium style, periodt).
  • --help, -h β€” print a summary of command line options. your little cheat sheet πŸ₯°
  • --help-list β€” print an uncategorized summary of command line options. same info, just ungrouped, raw, unfiltered ✨
  • --no-strip-underscore, -n β€” do not strip a leading underscore. this is the default for all platforms except Mach-O based hosts, so heads up if you're on one of those 🫢
  • --strip-underscore, -_ β€” strip a single leading underscore, if present, from each input name before demangling. on by default on Mach-O based platforms. yes, the flag really is a lone underscore, she's minimal and she's iconic πŸ’…
  • --types, -t β€” attempt to demangle names as type names as well as function names. double duty, versatile queen πŸ‘‘
  • --version β€” display the version of the llvm-cxxfilt executable.
  • @<FILE> β€” read command-line options from response file <FILE>. yes, the @ is doing all the work, that's her moment 🌟

πŸ”₯ 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 did something wrong with the flags, expect the number to not be zero. she will tell on you 😭


🌈 SEE ALSO 🌈

go give it a read, it's the sibling, the duo, iykyk πŸ’œ


🧚 AUTHOR 🧚

maintained by the LLVM Team (https://llvm.org/). ty for your service, besties πŸ«‘πŸ’–


2003-2024, LLVM Project


and that's the whole page, no notes πŸŽ€ this was LLVM-CXXFILT(1) from 2024-07-18, the LLVM release, and yes the copyright has been running since 2003-2024 β€” a real legacy, a long-running slay. mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from